デバイス HTTP プロキシ¶
FIRERPA はモバイル端末上で HTTP プロキシ(サービス設定内のブリッジプロキシ、すなわち tunnel2.*)を提供します。パソコンやブラウザのプロキシ設定をスマートフォンに向けると、パソコンからの Web アクセスはまずスマートフォンを通り、スマートフォンのネットワークから外部へ出るため、表示される IP アドレスはスマートフォンのものと一致します。これは プロキシを設定する とは逆方向の動作で、以下のように対比されます:
一般的な使用例としては、パソコンとスマートフォンで同じ出口 IP を共有して連携デバッグを行う、パケットキャプチャ時に mitmproxy の上流をスマートフォンに向けてトラフィックがデバイスから出るようにする、または複数デバイスのネットワークを IP ソースとして活用するなどがあります。
プロキシの使用¶
この機能はデフォルトで有効で、プロキシはリモートデスクトップとサービス ポートを共有し、デフォルトは 65000 です。スマートフォンの WLAN 設定で現在の IP アドレスを確認してください(以下の例では 192.168.0.2)。port を変更した場合は、例のポートを適宜置き換えてください。パソコンからスマートフォンの FIRERPA サービス ポートにアクセスできる必要があり、通常は同一 LAN 内にあるか、サービス ポートをパブリック ネットワークに転送する必要があります。
パソコン上で次のコマンドを使用して素早く検証できます(IP はお使いのデバイスのアドレスに置き換えてください):
curl -x http://192.168.0.2:65000 https://httpbin.org/ip
返された IP がスマートフォンの外部 IP と一致すれば正常に動作しています。Firefox では、HTTP プロキシを 192.168.0.2、ポート 65000 に設定し、「このプロキシを HTTPS にも使用する」にチェックを入れます。Python では次のように記述します:
requests.get("https://httpbin.org/ip", proxies={"http": "http://192.168.0.2:65000", "https": "http://192.168.0.2:65000"})
サービス証明書が無効の場合、プロキシはデフォルトで認証不要です。起動時にサービス証明書を使用した場合、ユーザー名 lamda、パスワードはサービス証明書 PEM ファイルの 1 行目の PASSWD(HTTPS リモートデスクトップのログインパスワードと同じですが、WebUI カスタムパスワードではありません)で認証します。また、サービス設定 で tunnel2.password を設定してプロキシパスワードを個別に指定することもできます。この場合の curl の例は次のとおりです:
curl --proxy-insecure -x https://lamda:証明書パスワード@192.168.0.2:65000 https://httpbin.org/ip
Python の例:
requests.get("https://httpbin.org/ip", verify=False, proxies={"http": "https://lamda:証明書パスワード@192.168.0.2:65000", "https": "https://lamda:証明書パスワード@192.168.0.2:65000"})
プロキシの設定¶
サービス設定 でブリッジプロキシを調整できます。たとえば tunnel2.login と tunnel2.password を設定してログイン資格情報をカスタマイズします:
tunnel2.login=lamda
tunnel2.password=新しいパスワード
tunnel2.iface は出力インターフェースを指定します。wlan は Wi-Fi 経由、rmnet はモバイルデータ(4G/5G)経由で、Wi-Fi 接続中でも優先的にモバイルデータが使用されます。未設定の場合はシステムのデフォルトネットワークが使用されます。指定したインターフェースが現在ネットワークに接続されていない場合、プロキシは使用できません。
tunnel2.iface=rmnet