如何将所有数据包从 wlan0 转发到 tun0 (OpenVPN)?

如何将所有数据包从 wlan0 转发到 tun0 (OpenVPN)?

我有 wlan0 和 eth0。 Eth0 连接到互联网,wlan0 是接入点。我使用“--pull-filterignoreredirect-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

这不起作用(并且计数器也不会更新)。我尝试用 eth0 替换 tun0,这确实有效(但 ofc 完全绕过了 VPN),所以我假设问题出在 tun0 上。我还在某处读到 IP 路由表更适合于此。如果这是真的,我该怎么办?

答案1

假设您的 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

参考这里这里

相关内容