使用多个IP桥接networking设备

我有一个单一的网卡的小型服务器,我试图让一个网桥运作,以便我可以运行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 

我正在尝试使用以下说明build立桥梁:

 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 

它将ENTIRE eth0设备置于混杂模式。 这会使服务器脱机,并且本地以外的任何地方都无法访问。

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

简而言之,据我所知,没有。

漫长的回答:桥是一个二层设备。 把它想象成一个虚拟交换机。 要在网卡和内部设备之间build立桥接,需要将网卡上的所有数据放在网桥上(减去第2层过滤,例如.1q vlans)。 让我画一张图来解释:

这就是你想要的工作方式(路由scheme):

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

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

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

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

为了得到你想要的场景,你将不得不使用路由而不是网桥。 peth0被置于promiscious模式的原因是因为否则它可能会过滤掉桥上设备的数据。 它不知道桥上的设备可能会听到什么。

不,我敢肯定,这不会那样。 您需要将整个eth0设备放入网桥,并将子接口添加到网桥接口,例如br0:1等。

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