8

OpenVPN と、ICS (Android 4.X) に付属する新しい VpnService API を使用しています。

VPN トンネルからの IP アドレスの除外を定義する方法はありますか? (その IP 宛てのトラフィックは、VPN トンネルを経由せずにネットワークに直接ルーティングされます)。残りのトラフィックを保護しながら、暗号化されていない YouTube パスなどの帯域幅を集中的に使用するサービスを許可することで、VPN のネットワーク負荷とコストを削減しようとしています.

私の理解では、Android が Tun デバイスを開く前に、除外するトラフィックではなく、VPN で通過する必要があるトラフィックを指定するルートのリストを受け取ることができます。

VPNService.Builder API ドキュメント

4

2 に答える 2

4

VPN からローカル WiFi サブネットを除外する必要がありました。0.0.0.0 / 0 の代わりに複数のルートを追加するアプローチを使用しました。たとえば、サブネット 192.168.240.90 / 21 (バイナリ表現は 11000000.10101000.11110000.01011010) を除外する必要がある場合、次の 21 のルートを VpnService に追加する必要があります (バイナリ表現):

00000000.00000000.00000000.00000000 / 1
10000000.00000000.00000000.00000000 / 2
11100000.00000000.00000000.00000000 / 3
11010000.00000000.00000000.00000000 / 4
11001000.00000000.00000000.00000000 / 5
11000100.00000000.00000000.00000000 / 6
11000010.00000000.00000000.00000000 / 7
11000001.00000000.00000000.00000000 / 8
11000000.00000000.00000000.00000000 / 9
11000000.11000000.00000000.00000000 / 10
11000000.10000000.00000000.00000000 / 11
11000000.10110000.00000000.00000000 / 12
11000000.10100000.00000000.00000000 / 13
11000000.10101100.00000000.00000000 / 14
11000000.10101010.00000000.00000000 / 15
11000000.10101001.00000000.00000000 / 16
11000000.10101000.00000000.00000000 / 17
11000000.10101000.10000000.00000000 / 18
11000000.10101000.11000000.00000000 / 19
11000000.10101000.11100000.00000000 / 20
11000000.10101000.11111000.00000000 / 21

アイデアは、プレフィックスの位置で(右から)ビットを反転し、プレフィックスの位置の後のすべてのビットをゼロにすることです。その結果、ローカル サブネットに送信されるパッケージを除くすべてのパッケージが、1 つまたは別のルートに一致します。

于 2016-12-22T17:59:21.980 に答える
1

短い答えはありません。

長い答え。によって複数のルートを実行する必要があります(たとえば、IPを除外するために/ 1から/32までの32のルートを使用します)。また、パケットを解析し、新しい保護されたソケットを使用してこれらをプロキシできます。(CPU集中の可能性あり)

于 2013-01-27T11:11:58.173 に答える