我有一个设置其中一个站点通过 wpa 请求者配置为连接到 AP(通过wlan0
接口),并node B
通过 USB(或者可能是以太网)连接到站点,该站点也需要访问权限。
桥接wlan0
和 USB 接口(usb0
)是否可以工作,以便站点收到的 IP 数据包node 1
也可以被转发?
如果桥接应该起作用,我似乎无法添加wlan0
到桥接中。运行brctl addif bridge0 wlan0 usb0
会导致错误Operation not supported
。
而且似乎wlan0 无法桥接,这可能就是我收到上述错误的原因。
一个限制是,我使用的是 A 级 Linux,它不具备成熟 Linux 的所有功能
答案1
站点接口无法桥接,因为它们无法发送欺骗性的 MAC 地址——同一个字段用于表示“发起设备 MAC”和“传输无线电 MAC”,因此如果您尝试代表 USB“节点 1”发送帧,它将被丢弃,因为不是来自关联站点。
(反之亦然,但最重要的是,AP 无法像真正的网桥那样学习每个关联站点的多个 MAC 地址;它假设站点 MAC是接收设备的 MAC 地址。)
从技术上来说,通过在 Linux 上启用“4addr”模式可以实现这iw
一点 – AP 端也一样,其他地方通常称为“WDS 桥接” – 但是,大多数“普通”AP 不支持它(有一些例外)。不支持此模式的 AP 将忽略您的 4 地址帧,也无法向您发送桥接节点 1 的正确帧。
因此,只有在 AP 考虑到这一点的情况下,4addr/WDS 模式才是一种选择 - 例如,如果它是“点对点”或“PtMP”或“WISP”桥,而不是典型的客户端设备 AP。
(有些系统,比如许多流行的“无线扩展器”,或者 VirtualBox 中的桥接功能,通过实现NAT对于 MAC 地址 – 它们实际上会重写已发送帧的 MAC 地址,使其看起来像主机的 MAC 地址,就像路由器对 IP 地址所做的那样。不过,幸运的是,标准 Linux 桥接不支持此“arpnat”功能。)
对于其他所有事情,您将需要第 3 层路由,而不是第 2 层桥接。您将需要 USB 链接使用与 Wi-Fi 链接不同的网络号,在“站点”上启用 IP 转发,并在 AP 端路由器上配置路由以了解 USB 子网应路由到何处。
如果双方必须使用相同的子网号(或者您无法在主网络上配置任何路由),那就不太好,但仍可以使用 Proxy-ARP(以及 IPv6 的 Proxy-NDP)来处理。“站”仍然需要启用 IP 转发,并且需要运行类似parpd
或的程序parprouted
来欺骗必要的 ARP 回复,以使其他设备认为它们都在单个桥接子网上(尽管仅限于 IPv4)。