为什么在网桥接口上分配MAC和IP地址
- 2025-07-29 12:25:07
与其他网络设备一起列出的桥设备并不表示虚拟桥,而是表示连接到桥的虚拟网卡。如果你有一个物理网桥连接物理网络设备,你也不会看到你的网络设备中列出的物理网桥--但是你会看到你的网卡连接到这个网桥,当然它和其他网络设备一样有自己的MAC地址。
将IP入口分配到桥接设备(同样,它实际上是连接到虚拟桥的虚拟NIC )允许主机设备将数据包路由到由网桥及其连接的所有设备创建的子网。整洁!
虽然网络设备工具(如iproute2 (带有ip link和ip addr命令)允许您查看附加到网桥上的虚拟网卡,但也可以使用brctl程序查看虚拟桥本身。brctl show命令将列出所有桥及其附加接口。下面是一个将iproute和brctl与Linux和tuntaps结合使用的示例:
代码语言:javascript运行复制# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip tuntap add dev tap1 mode tap
# ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev br0
# ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev tap0
# ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev tap1
# brctl addif br0 tap0
# brctl addif br0 tap1
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2e22e593fe8c no tap0
tap1
# ip addr show to 10.0.0.0/24
11: br0:
inet 10.0.0.1/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
12: tap0:
inet 10.0.0.2/24 brd 10.0.0.255 scope global tap0
valid_lft forever preferred_lft forever
13: tap1:
inet 10.0.0.3/24 brd 10.0.0.255 scope global tap1
valid_lft forever preferred_lft forever注意,brctl show输出中的“接口”下面列出的是附加到桥上的其他接口,以及在创建桥时自动添加的br0接口。(我猜Linux不允许在没有附加设备的情况下创建虚拟桥,没有设备的桥接器也会自动销毁。)为了记录在案,我没有在内核中研究过这个问题,也不是一个网络专家。我之所以发布这篇文章,是因为它似乎令人信服地解释了Linux中虚拟桥的相当混乱的实现。我不相信虚拟桥梁本身甚至没有MAC地址。