プロキシサービスのデプロイ

ここでは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つのネットワークに接続している場合、wlan0eth0 のように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

ヒント

デプロイが完了したら、プロキシ設定のセクションを参照して、デバイスにネットワークプロキシを設定する方法を確認してください。