iptables-强制所有流量通过 VPN(当没有 VPN 连接时丢弃所有流量)

iptables-强制所有流量通过 VPN(当没有 VPN 连接时丢弃所有流量)

目标:确保所有网络接口(wlan0、rmnet0、rmnet1)的所有流量都强制通过 VPN 隧道,也就是说所有流量都是已丢弃未连接到 VPN 时。换句话说,不应允许 Internet 流量,而只接受通过 VPN 的流量。

到目前为止... Android 设备带有 iptables 二进制文件、wlan 和 3g 连接 VPN 网关@10.10.10.10(不是真实地址)。

iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -j DROP

iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o tun0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -d 10.10.10.10 -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -j DROP

结果:

流量似乎被阻止了 - 但 VPN 连接也被阻止了。

有什么想法吗?感谢这只是移动数据 rmnet0 接口,这里还没有 WiFi。

答案1

在这种情况下,我不会使用 conntrack,而是使用更简单的设置

iptables -A INPUT  -i tun0 -j ACCEPT
iptables -A INPUT  -s 10.10.10.10 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -d 10.10.10.10 -j ACCEPT

无需任何连接跟踪。DROP顺便说一句,您也不需要最后的规则,它-P ... DROP会处理好这些。

您还需要确保在配置中使用 VPN 服务器的 IP,否则,您还必须将 DNS 列入白名单:

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT  -p udp --sport 53 -j ACCEPT

相关内容