TomatoUSB + Entware + SS

TomatoUSB + Entware + SS

このメモは、Entware 経由で TomatoUSB ルーター上に SS を動かすための基本的な手順を記録したものです。正確なパッケージ名や設定ファイルのパスは、TomatoUSB のビルドや Entware のスナップショットによって異なることがあるため、重要な変更を加える前にルーター上で確認してください。

1. ルーター環境を確認する

SSH でルーターにログインし、CPU アーキテクチャと利用可能なストレージを確認します。

uname -a
df -h
mount

Entware は永続ストレージにインストールする必要があります。通常は /opt 以下にマウントされた USB ドライブです。/opt が存在しない、または読み取り専用になっている場合は、パッケージをインストールする前に修正してください。

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

TomatoUSB では、まず USB サポートを有効にし、ストレージデバイスをマウントします。その後、ルーターのアーキテクチャに合ったインストーラーに従って Entware をインストールします。インストール後、パッケージインデックスを更新します。

/opt/bin/opkg update
/opt/bin/opkg upgrade

opkg が見つからない場合は、/opt/bin/opt/sbinPATH に含まれているか確認します。

echo $PATH
ls -l /opt/bin/opkg

一時的な対処としてよく使われるのは次の方法です。

export PATH=/opt/bin:/opt/sbin:$PATH

恒久的に修正するには、ルーターの起動スクリプトにパス設定を追加します。

3. SS をインストールする

Entware のパッケージ名は変更されることがあるため、まず利用可能なパッケージ名を検索します。

opkg list | grep -i shadowsocks

一致するクライアントパッケージをインストールします。例:

opkg install shadowsocks-libev-ss-local

パッケージ名が異なる場合は、opkg list に表示されたものを使用してください。

4. 設定ファイルを作成する

/opt/etc 以下に設定ファイルを作成します。典型的なクライアント設定は次のようになります。

{
  "server": "example.com",
  "server_port": 8388,
  "local_address": "0.0.0.0",
  "local_port": 1080,
  "password": "change-this-password",
  "method": "aes-256-gcm",
  "timeout": 300
}

次の名前で保存します。

/opt/etc/shadowsocks.json

実際のサーバー、ポート、パスワード、暗号化方式は、自分のサーバー設定に合わせてください。このファイルを公開リポジトリにコミットしないでください。

5. クライアントを手動でテストする

まずクライアントをフォアグラウンドで実行し、エラーが見える状態にします。

ss-local -c /opt/etc/shadowsocks.json -v

別の SSH セッションで、ローカルの SOCKS ポートをテストします。

curl --socks5 127.0.0.1:1080 https://ifconfig.me

このコマンドが期待どおりのリモート IP を返せば、クライアント側は動作しています。

6. 起動時に開始する

TomatoUSB の init スクリプトまたは WAN-up スクリプトに、簡単な起動コマンドを追加できます。

/opt/bin/ss-local -c /opt/etc/shadowsocks.json -f /var/run/ss-local.pid

これに依存する前に、ルーターを再起動してプロセスが起動していることを確認します。

ps | grep ss-local
netstat -lnp | grep 1080

7. ルーティングに関するメモ

ss-local を実行するだけでは、ローカルの SOCKS プロキシが提供されるだけです。LAN 上のすべてのデバイスの通信が自動的にプロキシ経由になるわけではありません。ブラウザーで使用する場合は、ブラウザーまたは OS のプロキシ設定で、ルーターの LAN IP とポート 1080 を指定します。

透過プロキシを行うには、追加のファイアウォールルールと DNS ルールが必要です。これらのルールは小さく、元に戻しやすい形にしておき、LAN 全体に適用する前に 1 台のクライアントデバイスでテストしてください。

8. トラブルシューティング

有用な確認項目:

opkg update
opkg list-installed | grep -i shadowsocks
logread | tail
ps | grep ss
netstat -lnp

よくある問題:

  • 再起動後に /opt がマウントされていない。
  • Entware のアーキテクチャがルーターの CPU と一致していない。
  • USB ドライブがマウントされる前に起動スクリプトが実行されている。
  • サーバーの暗号化方式またはパスワードが一致していない。
  • ルーターのファイアウォールがローカルのリスニングポートをブロックしている。

最も安全な手順は、一度に 1 つだけ変更し、手動でテストしてから、起動スクリプトへ移すことです。