Networking

使用 iptables 進行 Internet 共享:選擇要共享的連接

  • January 12, 2014

我有一台帶有兩個網路設備(eth0wlan0)的電腦,它們都連接到網際網路(兩個不同的連接/isp)。我正在嘗試將與wlan0另一台通過乙太網連接的電腦的連接共享到eth0.

我正在做的是:

# sysctl net.ipv4.ip_forward=1
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

然後我可以從客戶端電腦連接到這台電腦,但共享的網際網路連接是 oneth0而不是 on wlan0

如果我禁用網際網路連接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

引用自:https://unix.stackexchange.com/questions/109014