Centos7下面解决路由问题思路以及添加静态路由的方法

时间:2024-03-07 17:01:58

一.问题追溯

国内公司的单点登录服务器需要通过VPN链路和新加坡财务服务器做对接,但是网络不通。经过网络设备内部排查,确定是本台服务器设备路由问题。

 

二.问题检查及思考

[root@localhost ~]# ifconfig  //通命令查看本台服务器的IP地址
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:e0ff:fe8d:6180 prefixlen 64 scopeid 0x20<link>
ether 02:42:e0:8d:61:80 txqueuelen 0 (Ethernet)
RX packets 5371877 bytes 15977882070 (14.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5921077 bytes 640912453 (611.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.19.5.5 netmask 255.255.255.0 broadcast 172.19.5.255
inet6 fe80::d8d2:cb16:11a8:879d prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:d1:b2:d0 txqueuelen 1000 (Ethernet)
RX packets 24581668 bytes 13724588280 (12.7 GiB)
RX errors 0 dropped 9 overruns 0 frame 0
TX packets 9598006 bytes 16637924695 (15.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

docker这个接口让人格外的注意,因为这个接口地址是172.17.0.1,而需要对接的地址是172.17.8.220,172.17.0.1的掩码地址为16位,明显包含了新加坡服务器的地址。然后继续查看服务器的路由信息。

[root@localhost ~]# route 

 

1.通过查看,很明显的可以看出172.17路由出现了路由黑洞。原因是在默认情况下,静态路由优先于默认路由。

2.解决这个问题,可以有很多方法,例如删除docker的接口,或者关闭接口,或者把docker的地址改成其他私网地址。但是这些方法都比较麻烦,有可能影响用户的使用,并且docker已经在使用了。

我认为比较简单的就是加一条明细的静态路由,这个方法更加快捷,方便,安全。

接下来就是添加路由的方法:

 

三.解决方法,增加静态路由,并且永久添加,防止服务器重启或者重置网络之后路由丢失。

1. 首先增加临时路由,保障用户正常使用,使用route命令添加。

[root@localhost ~]# route 
-bash: route: command not found   

该情况表示没有安装该命令,需要先安装net-tools , sudo yum install net-tools -y

[root@localhost ~]# route add -net 172.17.8.0/24 gw 172.19.5.1

增加一条172.17.8.0/24的路由,网关是172.19.5.1,也就是eth0接口所指向的网关

[root@localhost ~]# route 

使用route命令查看

如果不需要该路由,同样可以删除。

[root@localhost ~]# route del -net 172.17.0.0/24 gw 172.19.5.1 

2. 添加永久路由

在/etc/sysconfig/network-scripts/ 增加加一下文件,命名规则为 route-网卡名

例route-eth0

[root@localhost ~]# vim /etc/sysconfig/network-scripts/route-eth0

##static-route

172.17.8.0/24 via 172.19.5.1 dev eth0