And*_*ndy 5 networking linux bridge eth0
我有一个带有单个 NIC 的小型服务器,我试图让网桥在其上运行,以便我可以运行 KVM。在这个 NIC 上,我静态分配了几个 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
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下说明设置网桥:
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
Run Code Online (Sandbox Code Playgroud)
但是,当我执行第二个命令时:
sudo brctl addif br0 eth0:3
Run Code Online (Sandbox Code Playgroud)
它将整个 eth0 设备置于混杂模式。这会使服务器脱机并且无法被本地以外的任何东西访问。
有没有办法将 JUST eth0:3 桥接到 br0 而不是将整个设备置于混杂模式?
简短的回答是,据我所知,不。
长答案:网桥是第 2 层设备。把它想象成一个虚拟交换机。要在网卡和内部设备之间进行桥接,您需要获取进入网卡的所有数据并将其放在网桥上(减去第 2 层过滤,例如 .1q vlan)。我画个图来解释一下:
这是您希望它的工作方式(路由方案):
<vif> ---- <br0> --- <eth0:3> ---- <peth0> --- <internet>
Run Code Online (Sandbox Code Playgroud)
但实际上虚拟网桥总是在第 2 层进行桥接:
<br0> --- <peth0>-------<internet>
| |
<vif0> <eth0>
<eth0:2>
Run Code Online (Sandbox Code Playgroud)
这里peth0 是您的物理设备,而eth0 是逻辑设备(带有地址等)。
要获得您想要的场景,您必须使用路由而不是网桥。将 peth0 置于混杂模式的原因是,否则它可能会过滤掉通往桥上设备的数据。它不知道桥上的设备可能会听到什么。
| 归档时间: |
|
| 查看次数: |
10648 次 |
| 最近记录: |