为什么不能简单地将接口添加到网桥中?

为什么不能简单地将接口添加到网桥中?

我对 Linux 桥的思维模型是错误的。

我一直认为桥接器类似于简单的非托管交换机:插入一些以太网电缆,然后根据在该端口上通信的 MAC 地址将数据从一个端口复制到另一个端口。特别是:开关本身不是有一个IP地址。

所以我原以为我可以简单地做:

brctl addbr mybr
brctl addif mybr eth0

eth0 具有 IP 地址。

但我无法让它发挥作用:任何与 eth0 关联的 IP 地址似乎都会被忽略。

相反,我可以这样做:

    default_interface=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
    dif=$default_interface
    gw=$(ip -4 route ls | grep default | grep -Po '(?<=via )(\S+)')
    dif_ip=$(ip -4 route ls | grep default | grep -Po '(?<=src )(\S+)')
    echo Add bridge
    sudo brctl addbr mybr
    # $dif must be up, but with no ip addr
    sudo ip addr flush dev $dif
    sudo brctl addif mybr $dif
    sudo ifconfig mybr $dif_ip
    sudo route add -net 0.0.0.0 gw $gw

这会将 IP 地址和路由从 eth0 移动到网桥。

我明白我不能简单地做:brctl addif eth0我不明白的是为什么

相关内容