是否需要手动设置接口广播地址?

是否需要手动设置接口广播地址?

我正在从旧的网络工具转换我的脚本:

ifconfig eth0 192.168.2.1 netmask 255.255.255.0

到 iproute2:

ip link set eth0 up
ip addr add 192.168.2.1/24 dev eth0

我注意到新命令默认没有设置广播地址。

什么是:

1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0

就是现在:

1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 scope global eth0

我可以将广播地址添加到ip addr命令中,但我不知道是否真的需要它?首先,这个广播地址是如何使用的,在哪里使用?如果不设置,可能会出现什么问题?其次,看起来路由表默认仍然有正确的条目:

# ip route show table local dev eth0 scope link
broadcast 192.168.2.0  proto kernel  src 192.168.2.1 
broadcast 192.168.2.255  proto kernel  src 192.168.2.1 

我甚至无法测试它,因为现在没有人回复ping -b

答案1

无需手动设置广播地址,它是根据IP网络和子网掩码自动确定的。

答案2

该问题的正确答案是: ip addr add 192.168.2.1/24 brd + dev eth0

这就是iproute2定义网络接口的广播地址。

答案3

在我的环境中,如果我不设置广播地址,我可以从本地“物理”子网内的所有资源(例如直接连接到交换机的每个设备)ping 新 IP。但是,我无法从连接到交换机插入的无线路由器的任何设备 ping 新 IP。通过添加广播地址,无线路由器可以检测到新 IP,并且所有设备都可以互相看到,无论它们如何连接。这可能取决于我使用的设备制造商/我的个人拓扑,但确实是必要的。

相关内容