我在 192.168.0.11 有一个接口 enp7s0。
我的路由器是 192.168.0.1。
我的路由表是
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp7s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp7s0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp7s0
一切正常。我没有设置 iptalbes。
现在我尝试重置我的路由表并再次设置默认gw。
ip route flush table main
route add default gw 192.168.0.1
冲洗没问题。但添加失败。
SIOCADDRT: network is unreachable
这里有什么问题??
在 Linux 上,默认情况下(当没有使用标志noprefixroute添加地址时),将地址添加到接口会隐式添加到具有范围链接的 LAN 的路由。您有一条到网关的路由,因为它可以使用 dev enp7s0 到达:
当您刷新路由时,您还刷新了隐式范围链接路由:
ip route add 192.168.0.0/24 dev enp7s0
所以你有两种方法来取回它:或者手动添加它(唯一的区别是存在
proto kernel
作为指示路由是由内核而不是手动添加的。所以最好不要使用flush命令(使用delete),或添加其他过滤器(例如:ip route flush scope global
将保留本地 LAN 路由)