在 Linux 机器上,我有以下 IP 设置:
ruckus$ ifconfig -a
br0 Link encap:Ethernet HWaddr F0:3E:90:07:8E:E0
inet addr:172.18.140.3 Bcast:172.18.140.255 Mask:255.255.255.0
inet6 addr: fe80::169:254:17:11/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5719 errors:0 dropped:0 overruns:0 frame:0
TX packets:5175 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1277606 (1.2 MiB) TX bytes:619615 (605.0 KiB)
br0:169 Link encap:Ethernet HWaddr F0:3E:90:07:8E:E0
inet addr:169.254.17.11 Bcast:169.254.17.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
路由表如下:
ruckus$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 172.18.140.254 0.0.0.0 UG 0 0 0 br0
169.254.17.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
然后我删除接口 br0 上的 IP
ruckus$ ifconfig br0 0.0.0.0
ruckus$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 172.18.140.254 0.0.0.0 UG 0 0 0 br0
169.254.17.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
可以看到默认路由项仍然存在。我认为删除接口上的 IP 时内核应该会删除默认路由项。我认为最可能的原因是我正在 Linux 机器上应用“策略路由”。接口 br0:169 上仍然有一个 IP,所以内核不会删除 br0 上的默认路由项?
这是真的吗?如果是,为什么?