KVM 虚拟机上的无线桥接

Zvi*_*ika 9 networking virtual-machine wireless-bridge linux-kvm

我有一个连接到无线路由器的 VM 主机 (KVM)。我希望虚拟来宾与主机位于同一广播域中;即,从路由器的 DHCP 接收他们的 IP。(=第 2 层桥接)

根据KVM 文档,这是不可能的:(Important Note: Unfortunately, wireless interfaces cannot be attached to a Linux host bridge, so if your connection to the external network is via a wireless interface ("wlanX"), you will not be able to use this mode of networking for your guests. 无论如何我都试过了,实际上,它不起作用:))

互联网上有一些资源建议如何制作路由接口,它对我有用。但它是第 3 层,来宾驻留在不同的 IP 子网中。

但是,我过去使用过 VirtualBox -无线桥接在那里工作。

我发现超级用户的问题有关的VirtualBox,解释:Many virtual machine programs come with a special "bridge" or "filter" driver which attaches to existing network interfaces and allows the program to send and receive packets (Ethernet frames) directly

这正是我想要的结果 - 带有以太网桥接的 KVM 虚拟化(第 2 层)。可悲的是,libvirt/KVM 似乎不包含诸如驱动程序之类的内容。但我认为它可以通过其他一些 Unix 工具来实现。

Nik*_*nov 5

并不是“无线适配器”不支持桥接。它是接入点和 WiFi 主机到 AP 协议。当您建立连接时,您将验证适配器的 MAC。该协议有一个用于三个 MAC 的空间:直接经过身份验证的参与者,第三个 - 用于 AP 后面的任何端点。因此WiFi移动站可以向任何MAC发送数据包,但只能使用自己的MAC作为源地址。您无法使用经过身份验证的其他源 MAC 发送任何数据包 - AP 将拒绝该数据包。

还有一种能够真正桥接的 WiFi 协议,称为 WDS。这是通过在数据包中允许四个 MAC 地址来完成的:两个 - 直接经过身份验证的参与者,即桥接 AP,以及两个 - 数据包由 WiFi 桥接器传输的端点(源和目的地)。

请阅读此处http://wiki.mikrotik.com/wiki/Manual:Wireless_Station_Modes#802.11_limitations_for_L2_bridging有关此内容。

遗憾的是WDS的标准化程度不高,各个厂商对其进行的评价也不尽相同。只有当 WiFi 联盟更加......以用户为导向的组织时,他们才会更好地制定规范,我们将能够在任意供应商解决方案之间,甚至在访客计算机和无线网络之间,到处进行 WiFi 桥接!

Proxy-ARP 不是 L2 解决方案,它是 ROUTING 解决方案,即 L3。它欺骗了双方,这样你就可以在这里和那里拥有相同的子网,但这仍然是路由,顺便说一句,这有点搞乱了网络。查看任何机器上的 MAC 表,看看那里发生了什么:“那一侧”的所有 MAC 都是我们的 proxy-arp 路由器的 MAC。

对于真正的 L2 解决方案,您可以尝试使用 ebtables 实用程序配置的 Linux“MAC NAT”功能。由于这是我所知道的唯一真正的 L2 解决方案,因此我倾向于认为 VirtualBox 使用它。然而,它基本上看起来像 proxy-arp。您当然应该能够使用 KVM 和 libvirt 来实现这一点。


Mar*_*iae 2

官方文档太悲观了。与往常一样,聪明的人已经弄清楚了:您可以在此处找到执行此操作的(冗长的)说明。我试过了,轻而易举。

编辑:

我不确定为什么上面引用的文章中发布的第一个解决方案对您不起作用,但它对我有用,并且您没有提供额外的信息。不过,您可能希望考虑一个替代解决方案,这里由 Bohdi Zazen 提供,它使用 proxy-arp。我从未尝试过这个(sol.n.1 对我有用,所以有什么意义),但你可以给它一个机会。