Linux

重啟網路後IP路由錯誤

  • September 6, 2018

我想讓 IP 路由持久化,但在重啟或服務重啟後它消失了。

這是我的網路配置:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 52:54:00:ce:1c:48 brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.56/16 brd 10.0.255.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet 10.255.255.24/9 brd 10.255.255.255 scope global eth0:23
      valid_lft forever preferred_lft forever
   inet6 fe80::5054:ff:fece:1c48/64 scope link
      valid_lft forever preferred_lft forever

貓 ifcfg-eth0

ONBOOT=yes
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.56
NETMASK=255.255.0.0
GATEWAY=10.0.0.1

貓 ifcfg-eth0:23

ONBOOT=yes
DEVICE=eth0:23
BOOTPROTO=static
IPADDR=10.255.255.24
CONNECTED_MODE=yes
NETMASK=255.128.0.0
GATEWAY=10.0.0.1

路線-n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.128.0.0      0.0.0.0         255.128.0.0     U     0      0        0 eth0

當我想要 ping 10.128.0.1 時,我做不到!另一方面,當我執行此命令時:

ip r d 10.128.0.0/9 ; ip r a 10.128.0.0/9 via 10.0.0.1

我可以 ping 我的其他伺服器(10.128.0.1)並且我的路由已更正。

路線-n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.128.0.0      10.0.0.1        255.128.0.0     UG    0      0        0 eth0

ping 10.128.0.1

PING 10.128.0.1 (10.128.0.1) 56(84) bytes of data.
64 bytes from 10.128.0.1: icmp_seq=1 ttl=64 time=0.124 ms
64 bytes from 10.128.0.1: icmp_seq=2 ttl=64 time=0.109 ms

但是我小心翼翼地在 /etc/sysconfig/network-scripts/route-eth0 中添加了路由文件

像這樣 :

default via 10.0.0.1 dev eth0
10.128.0.0/9 via 10.0.0.1 dev eth0

我不明白為什麼我的路線是錯誤的。

檢查您的eth0:23配置。

它的地址與 重疊,10.128.0.0/9因此它認為系統是直接連接的。這就是系統不允許您通過預設網關添加路由的原因!

可以看到route -n網關是0.0.0.0的,所以線路

10.128.0.0/9 via 10.0.0.1 dev eth0

無法執行(它也可能在某些日誌文件中給出錯誤)。

顯然,當您顯式刪除路由時,系統允許您通過預設網關添加路由,因為它的表中不再有另一條路由(直接連接的路由)。

要解決此問題,您必須刪除該eth0:23介面,因為 10.128.0.0/9 它不是連接網路,您不應該在該機器上擁有 IP 地址。

引用自:https://unix.stackexchange.com/questions/467055