Linux 中的 IPv4 广播路由

Linux 中的 IPv4 广播路由

我有一台带有三个网络接口的服务器 - 环回接口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地址不可路由。使用它时,您将指定接口。它似乎向您展示了第一个具有广播功能的界面。

但在这两种情况下,地址可路由的假设都是错误的,因此我很惊讶您在尝试查找路由时竟然获得了任何信息。

相关内容