システムプロキシの設定(IP切り替え)

このセクションでは、現在の携帯電話にIPプロキシを設定する方法について説明します。FIRERPAは、現在の携帯電話にHTTP、SOCKS5プロキシを設定することをサポートしており、これにより携帯電話のすべての通信トラフィックが設定されたプロキシから送信されるようになります。現在、この機能はIPV6をサポートしていません。

プロキシへの接続

このインターフェースには多くのパラメータがあります。プロバイダーから取得したプロキシが http://1.x.x.x:8080 であると仮定すると、以下の数行のコードだけでデバイスのトラフィックをこのプロキシ経由にすることができます。使用可能なパラメータについては、以下の 完全なパラメータ を参照してください。

profile = GproxyProfile()
profile.type = GproxyType.HTTP_CONNECT

profile.drop_udp = True
profile.host = "1.x.x.x"
profile.port = 8080

d.start_gproxy(profile)

注意点として、プロキシを設定した後、実行中のアプリケーションはすぐに設定されたプロキシを使用しません。これらのアプリケーションはプロキシ設定前にすでにTCP接続を確立しているためです。したがって、対象のアプリケーションを手動で閉じてから再度開くことで、アプリケーションはプロキシ経由で接続を確立します。

プロキシタイプ

プロキシタイプ説明
GproxyType.HTTP_CONNECTHTTP
GproxyType.HTTPS_CONNECTHTTPS (HTTP+TLS)
GproxyType.SOCKS5Socks5
GproxyType.SHADOWSOCKSShadowsocks
GproxyType.HTTP_RELAY廃止

Shadowsocks 暗号化パラメータ

以下はサポートされているShadowsocksの暗号化タイプのリストです。リストに存在する暗号化方式のみがサポートされており、難読化パラメータはサポートされていません。

暗号化タイプ名称
AESaes-128-cfb
AESaes-192-cfb
AESaes-256-cfb
AESaes-128-ctr
AESaes-192-ctr
AESaes-256-ctr
CAMELLIAcamellia-128-cfb
CAMELLIAcamellia-192-cfb
CAMELLIAcamellia-256-cfb
DESdes-cfb
AES-AEADaes-128-gcm
AES-AEADaes-192-gcm
AES-AEADaes-256-gcm
AEADchacha20-ietf-poly1305

Shaowsocksの場合、以下の方法で暗号化方式とパスワードを設定してください。

profile.login = "chacha20-ietf-poly1305"
profile.password = "パスワード"

プロキシの無効化

以下のようにして、FIRERPAがシステムに設定したプロキシを無効にすることができます。このインターフェースは非常にシンプルで、追加のパラメータは必要ありません。

d.stop_gproxy()

完全なパラメータ

以下は、プロキシインターフェースの完全なパラメータ設定情報です。各パラメータの説明に基づいて、そのパラメータを使用するかどうかを選択できます。

以下のパラメータを使用してプロキシサービスの種類を設定できます。socks5プロキシの場合は GproxyType.SOCKS5 となります。

profile.type = GproxyType.HTTP_CONNECT

DNSクエリを114にリダイレクトする必要がある場合、このパラメータはシステムから発行されるすべてのDNSをここに転送します。OpenVPNと共存している場合は、OpenVPNの内部DNSに設定しないでください。さもないと、ネットワークが完全に切断される可能性があります。この設定を使用しない場合、デフォルトでシステムのDNSが使用されます。

注目

`dns_proxy` パラメータを設定してDNSクエリをプロキシする場合、使用するDNSサーバーはTCPクエリをサポートしている必要があります。通常、一般的なDNSサーバーはTCPクエリをサポートしています。
profile.nameserver = "114.114.114.114"

プロキシサーバーのIPとそのポート番号の設定です。

profile.host = プロキシサーバーのアドレス
profile.port = プロキシサーバーのポート

プロキシサーバーがログイン認証を必要とする場合、以下のパラメータで提供できます。これはプロキシプロバイダーに依存します。Shadowsocksタイプの場合、loginは暗号化方式になります。

profile.login = "プロキシサーバーのログインユーザー名"
profile.password = "プロキシサーバーのログインパスワード"

システム内のUDPトラフィックをブロックするために使用します。なぜUDPトラフィックをブロックする必要があるのでしょうか?現在、ほとんどの公共プロキシサービスはシステム内のUDPトラフィックのプロキシをサポートしていないためです。もちろん、一部のSOCKS5サーバーはUDPのプロキシをサポートしています(例えば、私たちが提供する自己構築ソリューションなど)。Shadowsocksも通常UDPをサポートしています。したがって、システムのUDPトラフィックを無効にすることは良い選択です。このオプションはデフォルトでオフになっています。

profile.drop_udp = False

ローカルネットワークをバイパスするかどうかを設定するために使用します。Trueに設定すると、192.168.xや10.xなどのルーターのネットワークセグメントへのトラフィックはプロキシを経由しなくなります。デフォルトはFalseです。udp_proxyを有効にした場合、このオプションはUDPトラフィックには無効であることに注意してください。

profile.bypass_local_subnet = True

UDPトラフィックをプロキシするかどうかを設定するために使用します。プロキシがいくつかの前提条件を満たす必要があります。プロキシは GproxyType.SOCKS5 または GproxyType.SHADOWSOCKS プロキシである必要があり、かつプロキシサーバーでUDPプロキシサポートが有効になっている必要があります。私たちが提供するドキュメントを通じて、SOCKS5 UDPをサポートするプロキシサーバーをインストールするか、独自のssサーバーを構築することができます。デフォルトはFalseです。httpプロキシを使用する場合や drop_udp オプションがTrueの場合、このオプションは無視されます。

profile.udp_proxy = False

すべてのDNSトラフィックをプロキシ経由で転送する必要があるかどうかを設定するために使用します。このオプションを有効にすると、デバイス上のすべてのDNSトラフィックがプロキシ経由で送信され、汚染を防ぐことができます。このオプションを使用する場合、同時に nameserver パラメータを指定する必要があります。パケットキャプチャのシナリオでは使用できません。さもないと、キャプチャソフトウェアがDNSデータパケットを正しく処理できず、擬似的なネットワーク切断を引き起こす可能性があります。

profile.dns_proxy = False

以下の設定を使用して、システム内の特定のアプリケーションにのみプロキシを設定することができます。それ以外のアプリケーションのトラフィックはプロキシを経由しません。

# 以下の3つの方法から1つを選んで対象アプリケーションを選択してください。
app = d.application("com.android.browser")
app = d.get_application_by_name("ブラウザ")
app = d.application("com.android.browser", user=999) # 複数インスタンスのアプリ

profile.application.set(app)

プロキシの自動適用

FIRERPAが起動時にプリセットされたプロキシサーバーに自動的に接続するように設定できます。これにより、携帯電話のトラフィックが常にプロキシを経由することを保証できます。以下の設定をコピーし、関連する設定をあなたのプロキシ情報に変更して properties.local ファイルに書き込み、その後FIRERPAを再起動してください。説明されていない一部のフィールドは、完全なパラメータ で説明されているフィールド名と同じです。

gproxy.enable=true
gproxy.type=http-connect
gproxy.host=1.x.x.x
gproxy.port=8080
gproxy.password=
gproxy.login=

プロキシサービスの構築

FIRERPAは、toolsディレクトリに、UDPをサポートするすぐに使えるsocks5プロキシサービスのdockerを提供しています。このドキュメントのプロキシサービスデプロイ関連のセクションで、独自のプロキシサーバーをデプロイする方法を学ぶことができます。