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


9

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

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

Answers:


4

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


在我看来,您似乎应该说“没有必要设置广播地址”,因为它总是可以从netmask和ip推断出来的。但是在某些系统上(我在docker容器中的Ubuntu上尝试过),可能会发生未设置广播地址的情况。因此,我想知道为什么接口定义中存在这样的字段。换句话说,我为什么可以$ ip addr 192.168.0.4/16 broadcast 1.2.3.4 dev <dev>呢?广播地址不应是字段,而应始终是对的,对吧?
JonasVautherin

没有回答问题:此广播地址的使用方式和位置?如果未设置,可能会破坏什么?
claymation

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.