Linux
Linux 乙太網/無線橋接
我們對我所從事的產品的一項新要求是支持乙太網到無線的橋接。假設我們有兩個網路介面: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