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文件中,開機自啟動