Android API 29 では、VPN ネットワークに HTTP プロキシの推奨を付ける VpnService.Builder.setHttpProxy が導入されました。既存の VPN サービスで、設定済みのインターフェースを確立する前に:

builder.setHttpProxy(
    ProxyInfo.buildDirectProxy("proxy.example", 8080));

ここで builder はサービスの VpnService.Builder、ProxyInfo は android.net.ProxyInfo です。プロキシのホストとポートは別々に指定します。この断片は、他の VPN パラメータがすでに設定された builder にプロキシ情報を追加します。

PAC プロキシはこの API ではサポートされません。PAC URI から ProxyInfo を作成しても、サポートされる VPN プロキシ設定にはなりません。到達可能な直接の HTTP プロキシエンドポイントを使用してください。許可された公開トラフィックには、HTTP プロキシ一覧がホストとポートの候補を提供しますが、その到達性は VPN のルーティング構成の下で確認する必要があります。

この設定は助言的なものです。アプリケーションは無視できるため、すべての接続がプロキシを使うことは保証できません。分割トンネルでは、推奨に従うアプリケーションが VPN 外の宛先への HTTP リクエストもそのプロキシ経由で送ろうとする場合があります。それらのアプリケーションは、プロキシ情報を適用する際に 2 つのルート群を区別できません。設定を完全と見なす前に、そのルーティング構成の下で中間者の到達性を確認してください。

関連記事