Linux 以太网/无线桥接

Linux 以太网/无线桥接

我所从事的产品的一个新要求是支持以太网到无线桥接。假设我们有两个网络接口:eth0 和 ath0(我们使用 Madwifi 驱动程序)。我可以使用哪些选项来允许连接到 eth0 的计算机访问无线网络?

我首先尝试的是brctl实用程序。这似乎正是我想要的。而且,在有线网络上,它确实如此。但在无线网络上,它不太管用。一些 Wiresharking 显示,桥接数据包的源 MAC 被(正确地)设置为桥接后面的计算机。但是,AP 从未见过该 MAC 关联,因此会丢弃数据包。如果我启用 WDS 数据包(iwpriv ath0 wds 1),则数据包会与发送方和接收方地址一起发送,但 AP 似乎不允许这样做(它非常旧,我们无法更改它)。并非所有 AP 都必须接受 WDS,对吗?

因此,我想知道我们是否必须进行某种以太网 NATing 或类似操作。但是,我不知道它如何工作——一个 MAC 地址如何在 n 台计算机之间共享?这ebtables似乎太低级了。简单地在出去和回来的路上重写 MAC 地址会使桥接计算机无法使用网络。另外,它如何知道传入数据包的最终目的地?您至少需要来自 IP 和 TCP/UDP 层的详细信息。

答案1

是的,桥接不适用于 wifi。最简单的解决方案是使用路由。您可以设置一个“透明路由器”,感觉就像一座桥梁,但实际上它路由数据包。为此,将一个网络设为另一个网络的子集。

例如,如果您的有线局域网是192.168.183.0/24,则您可以让无线局域网使用192.168.183.192/26

您可能还必须打开“代理 arp”。只需将 添加echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp到某些启动脚本即可。

答案2

这样的配置对于桥接两个网络接口来说非常好用

# The primary network interface
allow-hotplug eth0

iface eth0 inet static
        address 192.168.0.10
        network 192.160.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 212.27.39.2
        dns-search home
        auto eth0

iface wlan0 inet static
        address 192.168.0.9
        network 192.160.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 212.27.39.2
        dns-search home
        wireless_keymode open
        wireless_mode managed
        wireless_nick srvolivier
        wireless-essid SMC2870
        wireless-key wepkey
        auto wlan0

iface br0 inet static
        address 192.168.0.8
        network 192.160.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 212.27.39.2
        dns-search home
        bridge_ports eth0 wlan0
        auto br0

答案3

我编写了一个中继器程序,它读取一侧并将其发送到另一侧,了解桥接器后面的 PC 的 MAC 并在必要时使用它重写 src/dst MAC,但这让我感到很意外。

答案4

不知道“普通”桌面发行版,但在 netgear 路由器上的 dd-wrt ​​上,我可以轻松地将无线(虚拟)接口与以太网和 vlan 接口桥接起来。喜欢

brctl addif br0 wl0.1
brctl addif br0 vlan1
brctl addif br1 wl0.2
brctl addif br1 eth0

所以我有一个桥接至 wan eth 端口的无线“WAN”和一个桥接至 4 端口交换机(eth0)的无线“LAN”。

相关内容