兩個無線介面之間的路由 - Linux

兩個無線介面之間的路由 - Linux

基本上,我的網路看起來像這樣

                            +------+
  10.0.0.10 ------ 10.0.0.1=|Laptop|=11.0.0.11 ------ 11.0.0.1 
(wlan0,client)    (AP,wlan0)+------+(wlan1,client)        (AP)

wlan0 和 wlan1 是連接到筆記型電腦的 USB Wi-Fi 轉接器

我想透過我的筆記型電腦連接這些網絡,起初我嘗試過橋接,但事實證明,不支援橋接

我已經嘗試過這個但沒有成功。

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

我將不勝感激任何幫助。

答案1

您不需要兩個偽裝規則。您只需要偽裝一個客戶端,該客戶端將您的電腦作為預設路由;您將來源 NAT 套用於離開「WAN」側介面的封包。

如果防火牆處於預設狀態,您只需要這條規則:

iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

如果不同網路上的 MTU 不同,您可能需要套用 MSS 修復:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu   

(這有助於解決諸如“ping 有效,網站不起作用”或“某些網站起作用,其他網站不起作用”之類的問題)。

有一個極為常見的問題。我這樣做了大約 20 年,但仍然經常忘記這一點,直到一切都應該有效,但有些卻不起作用。您需要在核心中明確啟用資料包轉送:

sysctl net.ipv4.ip_forward=1

並將相同的變數設定/etc/sysctl.conf為在啟動後啟用。

相關內容