桥接具有多个 IP 的网络设备

桥接具有多个 IP 的网络设备

我有一台只有一块网卡的小型服务器,我正尝试让网桥在其上运行 KVM。在此网卡上,我静态分配了几个 IP:

eth0 = 192.168.1.1
eth0:1 = 192.168.1.2
eth0:2 = 192.168.1.3
eth0:3 -> Assign the bridge to this

我正在尝试按照以下说明建立桥梁:

sudo brctl addbr br0
sudo brctl addif br0 eth0:3
sudo ifconfig br0 192.168.1.120 netmask 255.255.255.0 up
sudo route add -net 192.168.1.0 netmask 255.255.255.0 br0
sudo route add default gw 192.168.1.1 br0
sudo tunctl -b -u root -t tap0 > /dev/null
sudo ifconfig tap0 up
sudo brctl addif br0 tap0

但是,当我执行第二条命令时:

sudo brctl addif br0 eth0:3

它将整个 eth0 设备置于混杂模式。这将使服务器离线,并且除本地之外的任何设备都无法访问。

有没有办法将 eth0:3 桥接到 br0,而不将整个设备置于混杂模式?

答案1

简短的回答是,据我所知,不是的。

长答案:网桥是第 2 层设备。可以将其视为虚拟交换机。要在网卡和内部设备之间建立桥接,您需要获取网卡上的所有数据并将其放在网桥上(减去第 2 层过滤,例如 .1q VLAN)。让我画一张图来解释:

这就是您希望它工作的方式(路由场景):

<vif> ---- <br0> --- <eth0:3> ---- <peth0> --- <internet>

但实际上虚拟桥总是在第 2 层上桥接:

<br0> --- <peth0>-------<internet>
  |          |
<vif0>    <eth0>
          <eth0:2>

这里 peth0 是您的物理设备,而 eth0 是逻辑设备(具有地址等)。

要获得所需的方案,您必须使用路由而不是网桥。peth0 处于混杂模式的原因是,否则它会过滤掉发往网桥上设备的数据。它不知道网桥上的设备可能会监听什么。

答案2

不,我非常确定这样做不行。您需要将整个eth0设备放入桥接器中,然后将子接口添加到桥接器接口,例如br0:1等。

您是否有什么理由试图避免在br0接口上绑定额外的 IP?

相关内容