Networking
使用 iptables 進行 Internet 共享:選擇要共享的連接
我有一台帶有兩個網路設備(
eth0
和wlan0
)的電腦,它們都連接到網際網路(兩個不同的連接/isp)。我正在嘗試將與wlan0
另一台通過乙太網連接的電腦的連接共享到eth0
.我正在做的是:
# sysctl net.ipv4.ip_forward=1 # iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
然後我可以從客戶端電腦連接到這台電腦,但共享的網際網路連接是 on
eth0
而不是 onwlan0
。如果我禁用網際網路連接
eth0
(通過設置無網關),那麼要共享的連接就是wlan0
. 但是,我想同時啟用網際網路連接並指定 iptables 共享哪一個。這可能嗎?我錯過了什麼?我需要一些轉發規則嗎?
好像您的預設 gw 在 eth0 上,並且客戶端被重定向到它(通過 icmp 重定向)。
要修復您的設置,您需要添加一個路由規則,說明所有傳入的數據包
client_ip
都應該路由到wlanO_gw
.嘗試添加一個新的路由表:
- 編輯
/etc/iproute2/rt_tables
並為新表添加一行,例如表 ID 和新表名稱252 masq
在哪裡。252``masq
- 添加規則以使用表 masq 路由 ip_client 數據包
從 ip_client/32 表 masq 添加 ip 規則
- 將預設 gw 添加到 masq 表
ip ro 通過 wlan0_gw 表添加預設值 masq