目标:确保来自所有networking接口(wlan0,rmnet0,rmnet1)的VPN隧道强制所有stream量,即所有stream量在未连接到VPN时被丢弃 。 换句话说,互联网stream量不应该被允许,只有通过VPN的stream量是可以接受的。
到目前为止… 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
结果:
stream量似乎被阻止 – 但连接到VPN也是如此。
有任何想法吗? 鉴于此只是移动数据rmnet0接口而且在这里还没有WiFi。
在这种情况下,我不会使用conntrack,而是更简单一些
iptables -A INPUT -i tun0 -j ACCEPT iptables -A INPUT -s 10.10.10.10 -j ACCEPT iptables -A OUTPUT -i tun0 -j ACCEPT iptables -A OUTPUT -d 10.10.10.10 -j ACCEPT
不需要任何连接跟踪。 顺便说一下,您最后也不需要DROP
规则, -P ... DROP
可以解决这个问题。
您还需要确保在configuration中使用vpn服务器的IP,否则您也必须将DNS列入白名单:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT