我们对产品的新要求之一就是支持以太网到无线的桥接。 假设我们有两个networking接口:eth0和ath0(我们使用的是Madwifi驱动程序)。 我需要什么样的选项才能让挂在eth0上的计算机能够访问无线networking?
我尝试的第一件事是brctl实用程序。 这似乎正是我想要的。 而且,在有线networking上,它是。 但在无线networking上,这并不是很有效。 有些Wiresharking表明,桥接数据包的源MAC被(正确)设置为桥后的一台计算机。 但是,从未见过MAC关联的AP将丢弃数据包。 如果我启用了WDS数据包,那么数据包将与发送者和接收者地址一起发送,但是AP似乎不允许(这是非常古老的,我们不能改变它)。 并非所有的AP都必须接受WDS,对吧?
因此,我想知道是否需要做某种以太网NAT等。 但是,我不明白它是如何工作的 – 一台MAC地址如何在n台计算机之间共享? ebtables显得太低级别。 简单地重写MAC地址的方式和回来,使桥电脑不能使用networking。 另外,它将如何知道传入数据包的最终目的地? 至less需要IP和TCP / UDP层的详细信息。
对,桥接不适用于无线networking。 最简单的解决scheme是使用路由。 你可以设置一个“透明路由器”,这感觉就像一个桥梁,但实际上它是路由数据包。 为此,使一个networking成为另一个networking的一个子集。
例如,如果您的有线局域网是192.168.183.0/24 ,则可以使无线局域网使用192.168.183.192/26 。
您可能还必须打开“代理ARP”。 只要将echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp到某个启动脚本即可。
这样的configuration对于刷新两个networking接口将是完美的
# 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
我写了一个转发器程序,读取一边并将其发送给其他人,学习PC后面的PC的MAC,并根据需要使用它来重写src / dst MAC,但这样做会使我产生无法预料的后果。
这是我们正在工作(希望它有帮助):
networking1 —无线(WDS桥接))))(((无线(WDS桥接)—networking2)
Network1和Network2使用普通的IP地址空间(192.168.1.0/24)。
不知道与“正常”的桌面发行版,但在dd-wrt netgear路由器我可以很容易地桥接无线(虚拟)接口与ehternet和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”。