桥接:使用 4addr 选项时丢失 WLAN 网络连接 - 为什么?

桥接:使用 4addr 选项时丢失 WLAN 网络连接 - 为什么?

问题:
为了与我的 Xen VM 一起使用,我需要创建一个桥接到 wlan0 的虚拟网络接口 (vif)。

如果在 /etc/network/interfaces 中添加

auto xenbr0
       iface xenbr0 inet dhcp

然后稍后做

brctl addif xenbr0 wlan0

我收到此错误信息。

can't add wlan0 to bridge xenbr0: Operation not supported

我发现 Linux 根本不会让您在管理模式下桥接无线接口,除非您启用 4addr 选项(需要重新编译 iw):

iw dev wlan0 set 4addr on

然后

brctl addif xenbr0 wlan0

有效,并且 brctl show 显示 xenbr0 已桥接至 wlan0。

不幸的是,一旦我执行

iw dev wlan0 set 4addr on

我的整个网络连接都断了(没有连接)。然后我立即执行

iw dev wlan0 set 4addr off

我重新连接后,它又可以正常工作了。如果我重新执行 4addr on,它又会中断;如果我执行 4addr off,它又可以正常工作了。

不幸的是,我不能只打开 4addr,激活桥接器,然后将其关闭(错误:设备未准备好)。

有人知道我为什么失去联系吗?

答案1

在这里找到答案:http://nullroute.eu.org/~grawity/journal.html#post:20110826

iw dev wlan0 set 4addr on

但是,启用 4addr 后,AP 可能会完全忽略您:关联成功,但所有数据帧都会消失在以太中。这可能是出于安全原因(因为伪造源 MAC 地址非常困难。是的。)在我的路由器(运行 OpenRG)中,需要为无线 AP 接口启用“WDS”模式,添加限制为我的笔记本电脑 MAC 地址的 WDS 设备,并将其添加到 LAN 桥接器。4addr 数据包现在可以正常工作了。

不过,这还存在另一个问题——路由器现在拒绝来自笔记本电脑的三地址数据包,这可能相当不方便(每次更改 WLAN 网络时都必须切换 4addr)。解决方法是在笔记本电脑上添加链接到同一设备但具有不同 MAC 地址的第二个无线接口:

# undo the earlier configuration
iw dev wlan0 set 4addr off


# add a second interface
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr $ADDR
ip link set dev wds.wlan0 up

此处 $ADDR 必须与路由器中配置的 WDS 设备地址匹配;除此之外,它可以是任何有效的 MAC 地址。然后 wlan0 的原始 MAC 仍用于“正常”使用。

可以同时使用 wlan0 和 wds.wlan0 - 尽管我只测试过两次关联到同一个 AP,而不是关联到不同的 AP。

答案2

在某些情况下,您也可以使用 wlan_kabel。它使用数据包套接字直接将 wlan* 设备与以太网设备桥接。但是,您一次只能使用 wlan_kabel 桥接一个 MAC。它没有被接入点禁止的缺点,因为只使用 wlan 设备的原始 MAC。

在您的情况下,这意味着 wlan0 只能由一个虚拟机使用,甚至不能由主机使用。

您可以获取 wlan_kabel这里

相关内容