バックグラウンドサービスの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アドレスを取得できない場合は十分ではありません。ここで問題が発生します)