将wlan0连接到eth0

在Arch Linux上,我希望eth0(连接到桥接路由器)共享从wlan0收到的连接,我已经阅读了教程,但是我不像其他用户那样精通命令,也不能完全理解。

    UPDATE

    根据linux-ath5k-devel上的这个线程,不可能在无线(客户端aka站模式)和有线接口之间进行桥接。

    安装NAT

    应该设置NAT来代替:

    echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 

    分配IP

    那么你必须为自己分配IP地址:

     ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up 

    安装dhcp守护进程

    安装一个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; } 

    启动dhcpd

    然后启动它/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所&#x8FF0; 。 我已经在一个Raspberry Pi上为打印机设置了它,它的function就像一个魅力(我已经在post-up命令中增加了10秒的睡眠post-up ,让它先获得一个IP地址,这可能与缓慢我的老RPi …)