Linux Bridge 无法转发数据包?

Linux Bridge 无法转发数据包?

我正在尝试暂时将笔记本电脑上的 Wifi 互联网连接与台式电脑共享。我在 wlan0 和 eth0(称为 br0)之间建立了一个桥接,从 dhcp 获取了 br0 上的地址,甚至使用 dhcp 从无线路由器获取了 (Windows) pc 的地址。pc 可以 ping 笔记本电脑,但不能 ping 路由器或上网。我是不是漏掉了什么步骤?

答案1

不幸的是,有些无线网卡不支持桥接。为了从桥接器的有线端转发数据包,无线接口需要“欺骗”源主机的 MAC 地址。如果卡(或驱动程序)无法欺骗数据包,桥接器将无法工作。

您可能想要使用 NAT,或者寻找其他 wifi 设备。

http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge#It_doesn.27t_work_with_my_Wireless_card.21以获得完整的解释。

答案2

也许路线表需要一些调整。

http://www.cyberciti.biz/faq/linux-route-add/

每台机器都需要

a) 知道如何访问同一网络中的其他机器

b) 知道如何通过所谓的“网关”访问其他一切(互联网)

正如 Paul 指出的那样,由于您使用的是 DHCP,因此路由表应该已经正确设置,但您可以检查一下。

答案3

我也尝试过类似的桥接方法,但后来我决定使用第二个 NAT 来连接 USB 设备,所以我的设置如下

  • 带 NAT 的路由器 - 带 NAT 的台式电脑 - USB 设备

这只需通过 PC 上的一些 iptables 规则即可完成。

答案4

尝试清除你的 iptables 规则。

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

同时清除你的 arp 表:arp -d *

相关内容