プロキシサービスのデプロイ¶
ここではSOCKS5プロキシの2つのインストール方法を紹介します。問題を回避するため、関連する説明をよくお読みください。
UDPプロトコルをプロキシしたい場合¶
SOCKS5 UDPプロキシの特性上、予期しない多くの問題が発生し、事態は複雑化します。UDPを使用する必要がある場合は、必ず次のルールを守ってください。第一に、ホストマシンのOSがLinuxであること、そしてファイアウォールでUDPポート 50000-55000 を開放する必要があります。第二に、サーバーネットワークがNATではないこと(FULL NATも不可。現在多くのクラウドサーバーはNATモードです)。
豆知識
なぜホストマシンがLinuxでなければならないのか? 他のOSでは、dockerがこのような広範囲のポートを正常にマッピングできない可能性があり、さらに他のOSではdockerのネットワークモードをホスト(host)モードに設定することもできません。
ご利用のサーバーネットワークがNATかどうか不明な場合は、ifconfig などのコマンドでデフォルトのネットワークインターフェースのIPアドレスを取得し、プロキシを使用したいマシンからそのアドレスに ping を送信してください。pingが通らなければ、サーバーはNATネットワーク内にある可能性が高いです。もちろん、条件の一部が満たされていなくても、UDPがまったく使えないわけではありません。gostを自分で構築する方法があり、文末で具体的な手順を説明します。
注目
SOCKS5 UDPプロキシの特性上、UDPが必要な場合は、必ずファイアウォールですべてのポートでのUDP通信を許可するように設定してください。
UDPプロトコルをプロキシしない場合¶
UDPプロトコルをプロキシする必要がない場合は、すべてが簡単です。以下のコマンドを実行するだけでSOCKS5サービスを起動できます。
docker run -it --rm -p 1080:1080 --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5
アウトバウンドネットワークインターフェースの指定¶
サーバーやPCにインターネットに接続できるインターフェースが複数ある場合、例えば家庭用PCで有線とWi‑Fiの両方で2つのネットワークに接続している場合、wlan0 と eth0 のように2つのネットワークインターフェースが存在する可能性があります。プロキシのアウトバウンドに使用するネットワークインターフェースを指定したい場合(例えば eth0 経由で通信したい場合)、以下のコマンドでSOCKS5サービスを起動します。
注目
PCまたはサーバーはLinuxシステムである必要があります。他のOSではアウトバウンドインターフェースの指定はサポートされていません。
docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd -e DEV=eth0 rev1si0n/socks5
UDPを使用するためのすべての前提条件を満たしている場合は、以下のコマンドを使用します。
docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5
GOSTサービスの利用¶
UDPを使用したいが、前述のUDP使用条件を満たせない場合や、アウトバウンドインターフェースの指定が必要ない場合、あるいはdockerをインストールしたくない場合は、gostを試すことができます。 github.com/ginuerzh/gost/releases/から、該当するOSの実行可能ファイルアーカイブをダウンロードします。
gost -L=socks5://username:passwd@:1080
ヒント
デプロイが完了したら、プロキシ設定のセクションを参照して、デバイスにネットワークプロキシを設定する方法を確認してください。