我在 OVS 桥接器中没有看到第 2 层及以上的流量,但是我看到了第 1 层流量。
我有以下设置:
我创建了一个带有三个适配器的 Linux VirtualBox VM:NAT,端口转发将内部 SSH (22) 端口转发到外部端口,以便我可以管理 VM;桥接适配器连接到以太网电缆,连接到外部机器(可能是 Raspberry PI 或笔记本电脑等);另一个桥接适配器连接到我的路由器上的 RealTech Wifi 加密狗。在 VM 内部,我在后两个桥接适配器之间创建了一个 OVS 桥接器,目的是使加入 LAN 的设备也加入我的 Wifi。我按照以下方式操作:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 <LAN bridged adapter inside the VM>
ovs-vsctl add-port br0 <Wifi bridged adapter inside the VM>
(我还禁用了虚拟机内部的 LAN 和 Wifi 适配器的路由,并且还禁用了主机内部的 LAN 路由,因为我打算使用无线网络访问 LAN 上的设备)
LAN 端没有 DHCP 服务器,但 Wifi 端当然有。我已从 LAN 中的设备运行 DHCP 发现,它立即从路由器正确获取了 IP 地址,这表明第 1 层数据包传输正常(也已使用 Wireshark 确认)。但是,我无法 ping 通路由器网关本身或无线网络中的任何设备,包括网桥本身,而且没有人可以在 LAN 本身 ping 通该设备。我已从主机端(而不是在 VM 中)检查了 Wireshark,似乎正在生成 ARP 回复,但它似乎没有通过网桥传播。我已尝试使用 LAN 上的多个设备来检查这不是连接到 LAN 的设备本身的问题。
为了更好地表示,我设计了网络,如下所示:
我也尝试过使用裸 Linux 桥接器brctl
,但遇到了同样的问题。
答案1
好的,在偶然发现另一个类似的问题后我找到了答案:QEmu 的第 2 层桥接网络问题。我能够在启用混杂模式的情况下在主机、桥接虚拟机和 LAN 上的网络之间传递流量。我尝试将桥接适配器从 Wifi 更改为 NAT(将网络发送到 LAN 中的设备)或仅主机适配器(仅用于测试桥接)。但是,当桥接器连接到 Wifi 适配器时,我无法在外面 ping 通路由器,我猜这与驱动程序不支持 Wifi 适配器上的桥接有关。