NetGuardの作成者として、私はこの分野で直接の経験を持っています。
(VPN)Linuxカーネルはソケットベースの接続を介したすべてのトラフィックタイプの転送を許可しないため、ローカルVPNベースのファイアウォールの欠点は、すべてのトラフィックタイプを処理できないことです。例としては、IPsecがあります。これは、一部のメーカーがIP呼び出しに使用しています。これに対する部分的な(IPsec用ではない)ソリューションは、リモートVPNサーバーを使用してトラフィックを転送することですが、これは多くの人にとってプライバシーの面では受け入れられず、複雑さが増し、おそらく余分なバッテリー使用も伴うでしょう。実際には、TCPおよびUDPトラフィックの処理は、NetGuardユーザーの99,9%にとって十分であると思われます。Android 5以降では、アプリケーションをVPNにルーティングされないように除外することが可能です(VPNを実装するアプリケーションは、これが必須かオプションかを決定します)。すべてのトラフィックを転送できないことから生じる問題に対処するために使用できます。別のオプションは、アドレス(範囲)を除外することです。NetGuardはこれを使用して、一部のメーカーのIP呼び出しを「修正」します。
別の欠点は、トラフィックを転送すると、パケットの検査と転送が必要になるため、何らかの処理が必要になるため、モバイルデバイスのバッテリー使用量が増加することです。Linuxカーネルに統合されているiptablesを使用する方が効率的であり、バッテリーに優しいためです。
一般に、Androidはシステムアプリケーションやコンポーネントのトラフィックも含め、すべてのトラフィックをVPNにルーティングするように見えますが、製造業者は特定のトラフィックタイプを除外することを決定でき、VPNベースのファイアウォールで実現できるセキュリティを低下させる可能性があります。
NetGuardは、広告ブロックを提供するDNSリクエストを除き、データ自体を分析しませんが、プライバシーの問題が発生する可能性があります。それにも関わらず、技術的に見れば、これはVPNベースのファイアウォールの利点です(まだそのように呼び出したい場合)。iptablesで可能なことを超えてデータストリームのステートフルインスペクションを許可するからです。これには、処理が関係するため、バッテリー使用量が犠牲になる可能性があります。SSLストリームを検査するには、ローカルMiT攻撃が必要になることに注意してください。
さらに別の欠点は、AndroidがVPNのチェーンを許可しないため、ローカルVPNを使用してファイアウォールを実装すると、ファイアウォールがそのようなサービス自体または別のVPNへの転送またはプロキシメカニズムを提供しない限り、実際のVPNサービスの使用を妨げることです応用。
最後に、VPNベースのファイアウォールは、実行するファイアウォールVPNサービスを提供するアプリケーションに依存しています。これは簡単なように見えますが、そうではありません。一部のメーカーのAndroidバージョン/バリアントは、メモリ不足の状態でプロセスを積極的に強制終了するためです(AndroidがVPNサービスを提供するアプリケーションを強制終了するとバグです)。
最後に、Androidデバイスのルート化はますます難しくなっており、多くの人々にとって唯一の選択肢としてVPNベースのファイアウォールが残されています。Googleがシステムベースのファイアウォールをすぐに追加するとは思わない。広告収入に大きな影響を与える可能性があるからだ。iOSにはシステムベースのファイアウォールがあります。
質問がある場合は教えてください、私はそれらに答えようとします。