目標:すべてのトラフィックがすべてのネットワークインターフェイス(wlan0、rmnet0、rmnet1)からVPNトンネルを介して強制されるようにします。つまり、VPNに接続されていない場合、すべてのトラフィックはドロップになります。つまり、インターネットトラフィックは許可されるべきではなく、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に対応していません。
このシナリオでは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