route

route 功能说明:可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由。

路由的概念
计算机与计算机之间的数据传输必须得经由网络,而网络可以通过直接连接两台计算机的方式或者是以一个或一个以上的节点来构成。
数据传输首先会通过源主机传送到一个网络节点,然后这个网络节点会根据“约定”将数据传送到另一个网络节点,
另一个网络节点再将数据传输到下一个节点,依此类推,最终把数据传输到目标主机。
这就是数据传送的一个完整过程,而每个网络节点就是一个路由,“约定”就是路由规则,数据传输就是根据路由规则依次传输下去的。

路由的分类
路由分为静态路由和动态路由。
Linux上配置的路由都属于静态路由。静态路由规则是系统管理员使用route命令加入的,也就是通过手动输入的方式来加入的路由规则。
动态路由就是无需手动输入路由的规则,其路由规则是本机与不同的机器彼此经过路由程序(Routing daemon)相互交换路由规则而来的。

    
参数选项
-n     直接使用IP地址,不进行DNS解析主机名
-ee    显示更详细的路由信息
add    添加路由信息
del    删除路由信息
target    指定目标网络或主机。可以用IP地址或主机/网络名
-net      到一个网络的路由,后面接的是一个网络号地址
-host     到一个主机的路由,后面接的是一个主机地址
netmask NM    为添加的路由指定网络掩码
gw Gw         为发往目标网络/主机的任何分组指定网关
dev If        指定由哪个网络设备出去,后面接网络设备名,如eth0等

 

范例:查看当前系统路由表信息
[root@testdb62 ~]# route     #<=默认情况下,route命令会将IP地址进行DNS解析生成主机名。
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens160
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@testdb62 ~]# route -n    #<=使用-n选项不进行DNS解析,这样会加快显示速度。
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.10.1      0.0.0.0         UG    100    0        0 ens160
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 ens160

命令结果说明具体如下。
Destination:表示网络号,也就是network的意思。
Gateway:连出网关地址,也就是说该网络是通过该IP连接出去的,如果显示0.0.0.0,则表示该路由是直接由本机传送出的。
如果有IP显示,则表示本条路由必须经过该IP的转接才能连接出去。
Genmask:表示子网掩码地址,也就是netmask。Destination和Genmask将组合成一个完整的网络。
Flags:路由标记信息,通常会有下面几种不同的标记。
U(route is up):表示此路由当前为启动状态。
H(target is a host):目标路由是一个主机(IP)而非网络。
R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息标识。
G(use gateway):表示需要通过外部的主机(gateway)来转接传递数据。
M(modified from routing daemon or redirect):表示路由已经被修改了。
D(dynamically installed by daemon or redirect):已经由服务设定为动态路由。
!(reject route):这个路由将不会被接受(用来抵挡不安全的网络)。
Metric:需要经过几个网络节点(hops)才能到达路由的目标网络地址。
Ref:参考到此路由规则的数目。
Use;有几个转送数据包参考到了此路由规则。
Iface:路由对应的网络设备接。
 

 
范例:删除和添加默认网关
默认网关就是数据包不匹配任何设定的路由规则最后流经的地址关口!

方法1
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.0.0.2        0.0.0.0         UG     0     0        0 eth0
[root@testdb62 ~]# route del default  #<-删除网关方法1。
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
#<==第3行的网关已经删除。
[root@testdb62 ~]# ping g.cn
connect: 网络不可达
[root@testdb62 ~]# route add default gw 10.0.0.2  #<=添加网关方法1:需要指明网关地址10.0.0.2 或其他正确的地址。
[root@testdb62 ~]# ping g.cn
PING g.cn (203.208.40.87) 56(84) bytes of data.
64 bytes from 203.208.40.87: icmp_seq=1 ttl=128 time=44.9 ms
64 bytes from 203.208.40.87: icmp_seq=2 ttl=128 time=42.6 ms
^C
--- g.cn ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1706ms
rtt min/avg/max/mdev = 42.613/43.784/44.956/1.190 ms
 
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0      0   eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0      0   eth0
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0      0   eth0

方法2
[root@testdb62 ~]# route del default gw 10.0.0.2
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0      0   eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0      0   eth0
[root@testdb62 ~]# route add default gw 10.0.0.2 dev eth0  #<=添加网关方法2,使用dev指明网络设备,连用于有多块网络设备的主机。
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0      0   eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0      0   eth0
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0      0   eth0
 
#特别强调:实际上 route add default gw 10.0.0.2 就相当于 route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.2 



范例:配置网络路由
一般多网段之间互相通信,会希望建立一条优先路由,而不是通过默认网关,这时就可以配置网络路由。
有两个网段10.0.0.0/24和192.168.1.0/24,现在想要实现10网段的机器访问192网段的机器,
其中有一台机器有两块网卡,eth0 的IP地址为192.168.1.254,eth1 的IP地址为10.0.0.254。那么配置网络路由会有以下几种方法。

方法1

route add -net 192.168.1.0/24 gw 10.0.0.254

说明: 192.168.1.0/24  等效于 192.168.1.0 netmask 255.255.255.0 

方法2

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1 #<=指定设备而不是地址。

route add -net 192.168.1.0/24 dev eth1

在想要访问192网段的每台10网段的机器上执行上面的命令,那么就只是执行该命令的主机能够访问192网段;
但若在10网段的网关10.0.0.2上执行上面的命令,则10网段的机器都能访问192网段。



范例: 删除网络路由

route del -net 192.168.1.0/24 dev eth1

说明: 以上配置在重启网络时都会失效,如果希望永久生效,则有如下几种方法。


方法1:
vi /etc/sysconfig/network-scripts/route-eth1    #<=默认不存在此文件

加入如下内容:
192.168.1.0/24 via 10.0.0.254

写到配置里,重启网络服务和重启系统都会生效!


方法2:
vi /etc/sysconfig/static-routes    #<=默认不存在此文件

加入如下内容:
any net 192.168.1.0/24 gw 10.0.0.254


方法3:
vi /etc/rc.local 

加入如下内容:
route add -net 192.168.1.0/24 gw 10.0.0.254 

提示:方法1推荐在生产环境下使用,方法3写到/etc/rc.local里只在开机时加载,在手工重启网络后会失效,但是重启系统后会生效!

[root@testdb62 ~]# route add -net 192.168.205.0/24 dev eth0
[root@testdb62 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0      0   eth0
192.168.205.0   0.0.0.0         255.255.255.0   U     0      0      0   eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0      0   eth0
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0      0   eth0
 
 
如果是配置默认路由网关,则可以写在网卡配置里,代码如下:
[root@testdb62 ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.2

 

范例:配置和删除主机路由

route add -host 192.169.2.18 dev eth2

route add -host 202.81.11.9 dev lo

 
例如:keepalived或heartbeat高可用服务器对之间使用单独的网卡接心跳线通信时,就会用到以上的主机路由。
删除主机路由的方法如下:
route del -host 192.168.2.13 dev eth2




 

 

posted @ 2020-12-24 15:05  屠魔的少年  阅读(396)  评论(0)    收藏  举报