linux系统里route -n不起作用,Linux系统中的route解析

今天遇到一个问题,服务器A  telnet服务器B  873 不通。

双方均检测防火墙,发现权限都开通,且没有问题。

后来发现是路由的问题

A路由如下(只看内网):

[root@BJ-YF-3 ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.127.3.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.0.0     10.127.3.254    255.255.0.0     UG    0      0        0 eth0

10.0.0.0        10.127.3.254    255.0.0.0       UG    0      0        0 eth0

[root@BJ-YF-3 ~]#

因为服务器A和服务器B在一个C段地址的不同段中。

A、B的正确掩码应该为255.255.255.128,但是我俩均配置成了255.255.255.0,由于是线上业务,不能更改后重启网卡,所以只能添加指定路由。

问题是:为什么掩码错了会出现问题呢???

当服务器A访问B时,路由会从上往下匹配,A的IP为10.127.3.156,B的IP为10.127.3.101

因为掩码配置错误,所以在第一条路由就匹配成功了

10.127.3.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0

但是这个没有网关,从eth0网卡直接出去了(正常情况下,只有同一网段的才走没有网关的路由,显然A和B不在同一网段)

对于其他网段的则没有问题,如10.127.2段的,因为10.127.3不匹配,所以继续匹配下一条

10.0.0.0        10.127.3.254    255.0.0.0       UG    0      0        0 eth0

为了解决应急问题,所以针对单个服务器,进行路由添加,等维护时间再更改掩码,重启网卡。

route add -host 10.127.3.101 gw 10.127.3.254

此时路由如下:

[root@BJ-YF-3 ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.127.3.101    10.127.3.254    255.255.255.255 UGH   0      0        0 eth0

10.127.3.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.0.0     10.127.3.254    255.255.0.0     UG    0      0        0 eth0

10.0.0.0        10.127.3.254    255.0.0.0       UG    0      0        0 eth0

[root@BJ-YF-3 ~]#

若访问10.127.3.101,则第一条就匹配成功,可以访问。

ps:

1、为了双方均Ok,两边必须相应添加路由

2、为了重启后依然生效,则要加入/etc/rc.local文件中,开机自启动