Iptables
如何將所有數據包從 wlan0 轉發到 tun0 (OpenVPN)?
我有 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