我有一台带有三个网络接口的服务器 - 环回接口lo
和两个物理网络接口eth0
,并且eth1
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:1d:09:f0:92:ab brd ff:ff:ff:ff:ff:ff
inet 93.184.216.34/22 brd 93.184.219.255 scope global eth0
inet6 fe80::21d:9ff:fef0:92ab/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:1d:09:f0:92:ac brd ff:ff:ff:ff:ff:ff
inet 10.228.2.2/24 scope global eth1
inet6 fe80::21d:9ff:fef0:92ac/64 scope link
valid_lft forever preferred_lft forever
现在,如果我检查 255.255.255.255 或 0.0.0.0.0(旧的 IP 广播地址)的路由,那么我预计该数据包会在所有三个网络接口上转发。相反,对于 255.255.255.255 仅eth0
使用 ,对于 0.0.0.0 使用lo
:
root@server:~# ip route get 255.255.255.255
broadcast 255.255.255.255 dev eth0 src 93.184.216.34
cache <local,brd>
root@server:~# ip route get 0.0.0.0
local 127.0.0.1 dev lo src 127.0.0.1
cache <local>
root@server:~#
为什么会这样?
答案1
0.0.0.0
不是广播地址。软件经常使用它作为“任意”地址,这可能解释了为什么它显示它找到的第一个接口。在任何情况下它都是不可路由的。
该255.255.255.255
地址不可路由。使用它时,您将指定接口。它似乎向您展示了第一个具有广播功能的界面。
但在这两种情况下,地址可路由的假设都是错误的,因此我很惊讶您在尝试查找路由时竟然获得了任何信息。