web-dev-qa-db-ja.com

iptables-VPN経由ですべてのトラフィックを強制します(VPN接続がない場合はすべてのトラフィックをドロップします)

目標:すべてのトラフィックがすべてのネットワークインターフェイス(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に対応していません。

4
diagonalbatman

このシナリオでは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
3