Linux

Linux 乙太網/無線橋接

  • February 19, 2010

我們對我所從事的產品的一項新要求是支持乙太網到無線的橋接。假設我們有兩個網路介面:eth0 和 ath0(我們正在使用 Madwifi 驅動程序)。我需要哪些選項才能讓連接到 eth0 的電腦能夠訪問無線網路?

我嘗試的第一件事是brctl實用程序。這似乎正是我想要的。而且,在有線網路上,它是。但在無線網路上,它並不完全奏效。一些 Wiresharking 顯示橋接數據包的源 MAC 已(正確)設置為橋接後的電腦。然而,從未見過 MAC 關聯的 AP 會丟棄該數據包。如果我啟用 WDS 數據包 ( iwpriv ath0 wds 1),則數據包會與發送器和接收器地址一起發送,但 AP 似乎不允許(它很舊,我們無法更改)。並非所有 AP 都必須接受 WDS,對嗎?

因此,我想知道我們是否必須進行某種乙太網 NAT 等。但是,我看不出它是如何工作的——如何在 n 台電腦之間共享一個 MAC 地址?ebtables顯得水平太低。只需在退出和返回時重寫 MAC 地址,橋接電腦就無法使用網路。另外,它如何知道傳入數據包的最終目的地?至少,您需要來自 IP 和 TCP/UDP 層的詳細資訊。

對,橋接不適用於wifi。最簡單的解決方案是使用路由。您可以設置一個“透明路由器”,感覺就像一個網橋,但實際上它路由數據包。為此,使一個網路成為另一個網路的子集。

例如,如果您的有線 LAN 是192.168.183.0/24,您可以讓無線 LAN 使用192.168.183.192/26

您可能還必須打開“代理 arp”。只需添加一個echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp到一些啟動腳本。

這樣的配置將非常適合橋接兩個網路介面

# 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

引用自:https://serverfault.com/questions/114657