SS サーバーセットアップ

SS サーバーセットアップ

このメモは、Linux VPS 上で最小限の Shadowsocks サーバーをセットアップする手順を記録したものです。コマンドはディストリビューションやパッケージのバージョンによって少し異なるため、本番環境の設定を変更する前に、サーバー上で名前やパスを確認してください。

1. サーバーを準備する

対応している Linux ディストリビューション、SSH アクセス、通常の sudo ユーザーがあるクリーンな VPS から始めます。

まずパッケージインデックスを更新します。

sudo apt update
sudo apt upgrade

サービスとファイアウォールの確認に使う基本ツールをインストールします。

sudo apt install curl vim ufw

サーバーのパブリック IP アドレスを確認します。

curl -4 ifconfig.me

2. Shadowsocks をインストールする

多くの Debian または Ubuntu システムでは、パッケージは shadowsocks-libev として利用できます。

sudo apt install shadowsocks-libev

ディストリビューションのリポジトリでパッケージが利用できない場合は、現在のリリース向けの公式パッケージソースまたはビルド手順を使用します。内容を確認していないランダムなインストールスクリプトは避けてください。

バイナリが存在することを確認します。

ss-server -h

3. サーバーを設定する

サーバー設定ファイルを作成または編集します。一般的なパスは次のとおりです。

sudo vim /etc/shadowsocks-libev/config.json

設定例:

{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "replace-with-a-long-random-password",
  "timeout": 300,
  "method": "chacha20-ietf-poly1305",
  "fast_open": false,
  "mode": "tcp_and_udp"
}

長くランダムなパスワードを使用します。method の値は、インストール済みバージョンでサポートされているものにしてください。利用可能であれば、chacha20-ietf-poly1305 のような認証付き暗号方式が推奨されます。

必要であればローカルでパスワードを生成します。

openssl rand -base64 32

4. ファイアウォールを開く

ufw を使用する場合は、有効化する前に SSH を許可します。

sudo ufw allow OpenSSH

次に Shadowsocks のポートを許可します。config.json のポートと一致させてください。

sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw enable
sudo ufw status

VPS プロバイダーに別のファイアウォール管理画面がある場合は、そこでも同じ TCP および UDP ポートを開けてください。

5. サービスを起動して有効化する

サービス名はパッケージによって異なる場合があります。Debian と Ubuntu の shadowsocks-libev では、次を試します。

sudo systemctl enable shadowsocks-libev
sudo systemctl restart shadowsocks-libev
sudo systemctl status shadowsocks-libev

起動しない場合はログを確認します。

journalctl -u shadowsocks-libev --no-pager -n 100

サーバーが待ち受けていることを確認します。

sudo ss -lntup | grep 8388

6. クライアント設定

サーバーで使用したものと同じ値でクライアントを設定します。

  • サーバーアドレス: VPS のパブリック IP またはドメイン名
  • ポート: 8388、または設定したカスタムポート
  • パスワード: 生成したパスワード
  • 暗号化方式: chacha20-ietf-poly1305、または config.json 内の方式
  • モード: クライアントが対応していれば TCP と UDP

ブラウザーまたはコマンドラインクライアントでテストします。接続に失敗する場合は、次の項目を順番に確認してください。

  1. サーバープロセスが実行されている。
  2. OS のファイアウォールと VPS プロバイダーのファイアウォールの両方でポートが開いている。
  3. クライアントの方式、パスワード、ポートがサーバー設定と完全に一致している。
  4. サーバーの IP アドレスが正しい。
  5. サーバーログに JSON 構文エラーやバインドエラーがない。

7. メンテナンスメモ

システムを最新の状態に保ちます。

sudo apt update
sudo apt upgrade
sudo systemctl restart shadowsocks-libev

config.json を変更した後は、再起動する前に JSON を検証します。

python3 -m json.tool /etc/shadowsocks-libev/config.json

その後、サービスを再起動します。

sudo systemctl restart shadowsocks-libev

セキュリティのため、パスワードの使い回しを避け、未使用のポートを閉じ、不要になった古いクライアントプロファイルを削除してください。