プロキシ設定¶
この章では、現在のスマートフォンに IP プロキシを設定する方法を説明します。FIRERPA は HTTP/s、SOCKS5、SHADOWSOCKS などのプロキシをスマートフォンに設定でき、デバイスの通信を指定したプロキシ経由で送信します。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)
プロキシタイプ (type)¶
Shadowsocks 暗号化パラメータ¶
以下のリストは、サポートされている Shadowsocks 暗号化方式です。リスト内の暗号化方式のみ対応し、難読化パラメータには対応していません。
Shadowsocks をご利用の場合は、次の方法で暗号化方式とパスワードを設定してください。
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.x や 10.x.x.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
デバイス上のプロキシの送信ネットワークインターフェイスを設定します。たとえば、デバイスに SIM カードネットワーク(rmment_datax)、Wi-Fi ネットワーク(wlan0)、USB 給電(eth0)が存在する場合、ネットワークの優先度が異なるため、システムはデフォルトで SIM カードネットワークを使用する可能性がありますが、USB 給電からプロキシを出したい場合は、このパラメータでプロキシの出口ネットワークを指定できます。
profile.interface = "eth0"
以下の設定により、システム内の特定のアプリケーションにのみプロキシを適用できます。対象外のアプリケーションのトラフィックはプロキシを通りません。
# 以下の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 の起動時に事前設定されたプロキシサーバーに自動接続させることができます。これにより、スマートフォンのトラフィックが常にプロキシを経由するようになります。以下の設定を記述し(ご自身のプロキシ情報に修正してください。設定方法は サービス設定 を参照)、一部の説明されていないフィールドは 完全なパラメータ で説明されているフィールド名と同じです。
gproxy.enable=true ; サービスを有効にするかどうか true | false
gproxy.type=http-connect ; プロキシタイプ: http-connect, https-connect, socks5, shadowsocks
gproxy.host=172.1.1.1 ; プロキシサーバーのアドレス
gproxy.port=8080 ; プロキシサーバーのポート
gproxy.password= ; プロキシサーバーのログインパスワード (認証なしの場合は空)
gproxy.login= ; プロキシサーバーのログインユーザー名 (認証なしの場合は空、タイプがshadowsocksの場合は暗号化方式)
gproxy.nameserver= ; カスタムDNSサーバー
gproxy.drop_udp=false ; UDPパケットを破棄するかどうか
gproxy.udp_proxy=false ; UDPパケットをプロキシするかどうか (socks5やshadowsocksなどプロキシのサポートが必要)
gproxy.bypass_local_subnet=true ; ローカルネットワークトラフィックをプロキシしない
gproxy.dns_proxy=false ; DNSクエリをプロキシ経由にする (UDPとTCPをサポートするDNSサーバーが必要)
gproxy.uid= ; 指定したUIDに対してのみプロキシ (デフォルトはグローバル)
プロキシサービスの構築¶
FIRERPA は tools ディレクトリに、UDP をサポートする SOCKS5 プロキシサービス Docker をすぐに利用可能な形で提供しています。このドキュメントの Socks5 プロキシのデプロイ 関連の章で、独自のプロキシサーバーをデプロイする方法を確認できます。