Linux教程

Linux 网卡的路由和网关

本文主要是介绍Linux 网卡的路由和网关,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

网关:用于实现跨网段的设备之间通信。

路由器:

把不同网段的主机连起来(类似于送快递的快递员)。每个路由器负责把收到的数据报文传给下一个路由器,直到传送到最终的主机。

路由表:

用来实现路径选择的。和网络通信的主机都有路由表,并不是路由器里面才有路由表。

路由表的组成(关键):

  1. 目标网络:目标主机所在的网络id(网段)

  2. 子网掩码:确定主机所在的网络(和IP配套使用)

  3. 网关:下一个路由器的相邻接口

  4. 接口:数据从当前主机的那个接口发出去

默认路由:不知道的网络就通过默认路由来选择路径。

#注意:

网关:本机将数据包送到直连的路由器后,需要告诉它下一步走那一条路(下一个路由器相邻接口的地址)

直连网段的路由自动生成

route工具

添加路由

route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]

-net: 一个网段

-host:一台具体主机

default:默认路由

target:目标网络

netmask:子网掩码

gw:网关

dev:数据报文从本机发出去的数据接口
范例
#目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
route add -net 192.168.8.0/24 dev eth1 metric 200

#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add -net 0.0.0.0/0 gw 172.16.0.1
route add default gw 172.16.0.1

#目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3

#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0

删除路由

route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

#目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
route add -net 192.168.8.0/24 dev eth1 metric 200

#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add -net 0.0.0.0/0 gw 172.16.0.1
route add default gw 172.16.0.1

#目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3

#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
语法:
route [-f] [-p] [Command] [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]
Command:指定想要进行的操作
add:添加路由
change:改变路由
delete:修改路由
print:显示路由

Destination:目标网段或者主机

mask Netmask:指定与网络目标地址相关联的子网掩码

Gateway:网关

metric Metric:为路由指定所需跃点数的整数值(范围是 1 ~ 9999),数值越小优先级越高

if Interface:指定目标可以到达的接口的接口。忽略 if 参数时,接口由网关地址确定

范例: 实现静态路由

image

地址搭建
A主机配置:
[root@Client ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.10
PREFIX=24
GATEWAY=10.0.0.200

[root@Client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.200      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
#通过配置文件指定的默认路由,网关:10.0.0.200 目标地址:队医

R1配置:
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.200
PREFIX=24

[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 
TYPE=Ethernet
DEVICE=eth1
NAME=eth1
IPADDR=192.168.10.200
NETMASK=255.255.255.0
BOOTPROTO=none
ONBOOT=yes

R2:
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.10.201
PREFIX=24

[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 
TYPE=Ethernet
NAME=eth1
DEVICE=eth1
IPADDR=192.168.2.5
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
DEVICE=eth0
NAME=eth0
IPADDR=192.168.2.6
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
GATEWAY=192.168.2.5
路由配置
A:已经通过配置ip地址的时候指定了默认的路由
C:同上

R1:
[root@CentOS8 ~]# route add -net 192.168.2.0/24 gw 192.168.10.201 dev eth1

[root@CentOS8 ~]# route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     102    0        0 eth0
192.168.2.0     192.168.10.201  255.255.255.0   UG    0      0        0 eth1
192.168.10.0    0.0.0.0         255.255.255.0   U     103    0        0 eth1

R2:
[root@CentOS8 ~]# route add -net 192.168.2.0/24 gw 192.168.10.200 dev eth0

[root@CentOS8 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        192.168.10.200  255.255.255.0   UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

注意
  1. 直连路由会自动生成的

  2. 路由很关键,如果路由错误,即使处于同一网段的设备也无法通信。因为数据包的转发是靠路由来决定的

  3. 通过命令配置的路由都是临时生效的。永久保存需要写入配置文件。

ip工具

格式:ip [选项] 子命令 [子命令的一些选项]

#禁用网卡
ip link set eth1 down

#网卡改名
ip link set eth1 name wangnet

#启用网卡
ip link set wangnet up

#网卡别名 label
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0

#清除网络地址
ip addr flush dev eth0
一个网卡多个ip地址的实现
ip addr add IP地址/mask dev 接口名 label 别名

例如:
[root@centos8 ~]#ip address add 10.0.0.18/24 dev eth0 label eth0:1
#修改ip地址
#先加新IP,再删除旧的IP
[root@centos8 ~]#ip address add 10.0.0.88/24 dev eth0
[root@centos8 ~]#ip address del 10.0.0.8/24 dev eth0
ip route管理路由
#添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
 TARGET:
 主机路由:IP
 网络路由:NETWORK/MASK
via:指定网关
dev:指定接口
src:源地址
 
#添加网关:
ip route add default via GW dev IFACE

#删除路由:
ip route del TARGET 

#显示路由:
ip route show|list

#清空路由表:
ip route flush [dev IFACE] [via PREFIX]
ip route add 192.168.0.0/24 via 172.16.0.1

ip route add 192.168.1.100 via 172.16.0.1

ip route add default via 172.16.0.1

ip route flush dev eth0
路由的配置文件

通过命令配置的路由是临时生效的,需要写入配置文件才能生效。

配置文件:/etc/sysconfig/network-scripts/route-接口名

#和ip地址的配置文件在同一个目录。

#格式:
目标网络的网络ID(CIDR表示法) via 网关 

例如:
10.0.0.0/24 via 10.0.0.1
这篇关于Linux 网卡的路由和网关的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!