在Arch Linux上,我希望eth0(连接到桥接路由器)共享从wlan0收到的连接,我已经阅读了教程,但是我不像其他用户那样精通命令,也不能完全理解。
UPDATE
根据linux-ath5k-devel上的这个线程,不可能在无线(客户端aka站模式)和有线接口之间进行桥接。
应该设置NAT来代替:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
那么你必须为自己分配IP地址:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
安装一个DHCP服务器,并将以下文本添加到其configuration文件(在/etc/dhcpd.conf或类似的东西)
subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.100 10.0.0.120; option routers 10.0.0.1; option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf; }
然后启动它/etc/init.d/dhcpd start
而就是这样!
brctl addbr mybridge brctl addif mybridge eth0 brctl addif mybridge wlan0
首先你创build一个桥接接口,我select一个任意名称mybridge然后添加接口到它。
您应该请求一个新的IP地址(只有当您想为桥接设备本身获得一个有效的IP时才需要):
dhclient -d mybridge
要桥接wifi接口,您可以使用iw
工具来启用4addr :
# iw dev <wifiInterface> set 4addr on
即:
# brctl addif <bridgename> <wifiInterface> can't add <wifiInterface> to bridge <bridgename>: Operation not supported # iw dev <wifiInterface> set 4addr on # brctl addif <bridgename> <wifiInterface>
现在它应该工作。 你可以使用以下方式显示桥
# brctl show
取决于AP对你意味着什么:
1)它可能只希望看到来自你的数据包,与你已知的链路层地址(因此不是桥接的数据包)2)它可能实际上更聪明,知道哪个IP地址应属于哪个链路层地址(原因它知道DHCP并检查它)
如果1 + 2都是真的,你需要的东西确实像IP NAT,DHCP,..
但是,如果只有1)的情况下,你可以伪造链路层地址,并反向映射到另一个方向的权利之一,如下所述:
https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC
要桥接wifi接口,您可以使用iw
工具来启用4addr :
# iw dev <wifiInterface> set 4addr on
即:
# brctl addif <bridgename> <wifiInterface> # can't add <wifiInterface> to bridge <bridgename>: Operation not supported # iw dev <wifiInterface> set 4addr on # brctl addif <bridgename> <wifiInterface>
现在它应该工作。 你可以检查:
# brctl show
如果iw本身报告错误,如“command failed:Operation not supported(-95)”(在Raspbian上可见),则可能不起作用。 并不是所有的驱动程序都能实现这个function。
在其他答案中描述的4addr当然是适配器/驱动程序支持的最佳方式,但不是全部都是。 NAT可能适用于某些情况,但在LAN上双向进行适当的通信将会出现问题(例如,连接打印机或访问NAT另一侧的其他物联网设备)。 任何依靠广播/多播(例如自动发现,bonjour)的东西都将通过NAT失败。
另一种方法是使用ARP代理(parprouted),如https://wiki.debian.org/BridgeNetworkConnectionsProxyArp所述 。 我已经在一个Raspberry Pi上为打印机设置了它,它的function就像一个魅力(我已经在post-up
命令中增加了10秒的睡眠post-up
,让它先获得一个IP地址,这可能与缓慢我的老RPi …)