CentOS:从主路由表中删除 /24 规则后无法添加路由

CentOS:从主路由表中删除 /24 规则后无法添加路由

正如标题所述,从主路由表中删除规则后,我无法添加任何路由,直到我这样做

service network restart 

或者

ifup eth0

重现此问题:

ip route list table main
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.47 
default via 192.168.2.1 dev eth0 

我可以删除并添加默认路由

#ip route del default
#ip route list
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.47 
#ip route add default via 192.168.2.1

#ip route list
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.47 
default via 192.168.2.1 dev eth0 

但是,如果我删除 192.168.2.0/24 路由​​,我就无法再添加任何路由。

# ip route del 192.168.2.0/24

# ip route list
default via 192.168.2.1 dev eth0 
# ip route add 192.168.2.0/24
RTNETLINK answers: No such device

# ip route add 192.168.2.0/24 via 0.0.0.0
RTNETLINK answers: No such device
# ip route add 192.168.2.0/24 src 192.168.2.47
RTNETLINK answers: No such device
# ip route list
default via 192.168.2.1 dev eth0 

答案1

原因是您实际上有两个路由表条目。首先是默认条目,它指向 192.168.2.0/24 网络中的网关 192.168.2.1,然后是网络接口eth0(即 192.168.2.0/24)的网络路由。

如果删除活动网络路由,则实际上会将其关闭。在此特定情况下,删除路由 192.168.2.0/24 意味着您没有可用的路由接口,因此添加路由将失败。

总结:您只是做错了,或者至少顺序错了。如果您在 192.168.2.0/24 网络中有一个活动接口,请不要删除该网络。

答案2

最后我终于找到了这个问题。

基本上,在添加路线时,我们还需要定义范围和原型。

就我而言,我无法将其添加回来的原因是我没有指定范围。范围定义了网络中 IP 的可见性。它可以是主机、链接 [仅限于 LAN]、全局等。

因此,添加它的正确语法是

ip route add 192.168.2.0/24 via 0.0.0.0 dev eth0 scope link

相关内容