Wi-Fiを使用している場合でも、アウトバウンドTCP / IPトラフィックが常にVPNを使用するようにするにはどうすればよいですか?

Wi-Fiを使用している場合でも、アウトバウンドTCP / IPトラフィックが常にVPNを使用するようにするにはどうすればよいですか?

バックグラウンドサービスのTCPトラフィックがデータを送受信する前にVPNが実行されていることを確認したいと思います。これが真実であることをどのように保証できますか?

セッションを続行する前に「同意する」をタップする必要があるWi-Fiアクセスポイント(スターバックス)に接続している場合は、この特定の状況をどのように処理しますか?

答え1

たぶんiptablesを使ってこれを行うことができます。少なくとも「VPN経由」がiptablesで見えるものであれば(たとえば、別々のトンネルデバイスの場合)、次のようにVPNがデバイス「vpn」であるとします。

iptables -P 出力が低下します。
iptables -A 出力 -o vpn -j を受け入れる
iptables -A 出力 -o lo -j を受け入れる

#DHCP
iptables -A 出力 -p udp --sport 68 --dport 67 -j 受け入れ #DHCP

#「私は同意する」
iptables -A 出力 -p udp --dport 53 -j ACCEPT # DNS/UDP
iptables -A 出力 -p tcp --dport 53 -j ACCEPT # DNS/TCP
iptables -A 出力 -p tcp --dport 80 -m 所有者 --uid-所有者あなたのユーザーID-jを受け入れる

最後の3つのルールを使用すると、「同意する」ページにアクセスできます。 「同意する」ボタンをクリックすると、そのエントリを削除でき、VPNが起動します。この期間中に一部のコンテンツ、特にDNS検索が漏洩する可能性があることに注意してください。これを避けるのははるかに難しいです。

(テストされていないので、Wiresharkをインストールし、必要に応じてデバッグを実行することをお勧めします。それが正しいと確信していますが、対応するDHCPラインについては確信がありません。IPアドレスを取得できない場合は十分ではありません。ここで問題が発生します)

関連情報