Iptables

如何將所有數據包從 wlan0 轉發到 tun0 (OpenVPN)?

  • February 14, 2021

我有 wlan0 和 eth0。Eth0 連接到網際網路,wlan0 是一個接入點。我使用“–pull-filter ignore redirect-gateway”選項連接到 OpenVPN 伺服器,這樣它就不會自動通過 VPN 路由所有流量,這不是我想要做的。

我正在嘗試將所有流量從 wlan0(接入點)路由到 tun0。這樣,任何連接到我的接入點的客戶端都將使用 VPN。我嘗試使用 iptables 執行此操作:

iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

這不起作用(並且計數器也不更新)。我嘗試用​​ DID 工作的 eth0 替換 tun0(但 ofc 完全繞過了 VPN),所以我假設問題出在 tun0 上。我還在某處讀到 IP 路由表更適合於此。如果這是真的,我該怎麼做?

假設你的 wlan 子網是 192.168.1.0/24 並且 tun0 IP 是 10.10.10.99:

在 VPN 網關上執行以下命令

啟用路由(如果尚未啟用):

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

刪除您已有的前兩個 NAT 規則,同時保留 FORWARD 規則:

sudo iptables -t nat -L -n --line-numbers
sudo iptables -t nat -D POSTROUTING 1

刪除 NAT 規則後,以正確的格式添加回單個 NAT 規則。

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -o tun0 -j MASQUERADE

最後一步是使用“策略路由”處理路由表:

sudo ip rule add from 192.168.1.0/24 table 99
sudo ip route add 0.0.0.0/0 via 10.10.10.99 dev tun0 table 99

參考這里這裡

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