Logo Neurocoda

Tailscale SOCKS5ポートを公開してプロキシソフトウェアで使用する

Neurocoda
Neurocoda

💡私は長期間ClashやQuantumult Xなどのソフトウェアを使用しており、Tailscaleで内部ネットワークサービスを構築した後、内部ネットワークサービスにアクセスするたびにソフトウェアを切り替える必要があります(Tailscaleクライアントと上記プロキシソフトウェアは同時に1つしか実行できません)。これは不便です。そのため、内部ネットワークプロキシノードをプロキシソフトウェアに追加し、分流ルールを設定して、頻繁なソフトウェアの切り替えを不要にすることを検討しました。

Tailscaleコンテナのデプロイ

Userspace networking mode (for containers) を参照し、Tailscaleコンテナをデプロイしてsocks5ポートを公開します。

Terminal window
docker run -d \\
--name tailscale-socks5 \\
--restart=unless-stopped \\
--cap-add=NET_ADMIN \\
-e TS_USERSPACE=true \\
-e TS_SOCKS5_SERVER=0.0.0.0:1055 \\
-p 127.0.0.1:1055:1055 \\
-v /var/www/tailscale-socks5:/var/lib/tailscale \\
tailscale/tailscale:latest tailscaled --tun=userspace-networking --socks5-server=0.0.0.0:1055

:1055ポートがリッスンされているか確認:

Terminal window
docker exec -it tailscale-socks5 ss -tuln

Tailscaleを起動してログイン:

Terminal window
docker exec -it tailscale-socks5 tailscale up --accept-dns=false --accept-routes

ログイン成功後、Tailscaleコンテナが公開するsocks5ポートが正常に動作するかテスト:

Terminal window
curl --socks5 127.0.0.1:1055 <http://tailscale> 内部ネットワークサービス

ただし、このsocks5には認証(ユーザー名/パスワード)がありません。やや安全に公開ネットワークに公開するために、ユーザー名/パスワード認証付きのSOCKS5プロキシをデプロイし、その送信トラフィックをTailscaleの認証なしSOCKS5サービスに転送することを検討します。

kechangdev/s2sコンテナのデプロイ

プロジェクトアドレス:https://github.com/kechangdev/s2s

以下の例では、このコンテナを起動し、ローカルポート45675でリッスンし、ユーザー名/パスワードをそれぞれusername / passwordに設定し、トラフィックをローカルの認証なしSOCKS5プロキシ127.0.0.1:1055に転送します。

Terminal window
docker run -d --network host \\
--name tailscale-s2s \\
-e SOCKS5_USERNAME="username" \\
-e SOCKS5_PASSWORD="password" \\
-e TS_SOCKS5_HOST="127.0.0.1" \\
-e TS_SOCKS5_PORT="1055" \\
-e INBOUND_PORT="45675" \\
kechangdev/s2s:latest
変数名デフォルト値説明
SOCKS5_USERNAMEusername受信SOCKS5認証に使用するユーザー名
SOCKS5_PASSWORDpassword受信SOCKS5認証に使用するパスワード
TS_SOCKS5_HOST127.0.0.1送信SOCKS5のアドレス(例:Tailscaleが提供するsocks5)
TS_SOCKS5_PORT1055送信SOCKS5のポート
INBOUND_PORT45675本コンテナが外部に公開するSOCKS5ポート(ユーザー名/パスワード認証あり)

説明:

  • --network host は通常、コンテナがホストとネットワーク名前空間を共有し、ローカルのTailscale SOCKS5に簡単に接続できるようにするために使用します。必要に応じて他のネットワークモードを使用しても、コンテナが TS_SOCKS5_HOST:TS_SOCKS5_PORT にアクセスできれば構いません。
  • リッスンポートを変更する場合は、起動時に INBOUND_PORT を変更し、それに応じてポートマッピングを行ってください。

テスト:

Terminal window
curl -v --socks5 127.0.0.1:45675 -U username:password <http://tailscale> 内部ネットワークサービス

対象ページの内容が正しく返ってくれば、プロキシチェーン全体が正常に動作しています。

ソフトウェア設定

Quantumult Xを例に:

  • Socks5ノードの設定:
Terminal window
socks5=IP:Port, username=XXX, password=XXX, fast-open=false, udp-relay=false, server_check_url=http://tailscale 内部ネットワークサービス, tag=tailscale
  • ポリシーグループの設定:
Terminal window
static=Tailscale, tailscale
  • 分流ルールの設定:
Terminal window
; Tailscale
ip-cidr, 100.64.0.0/10, Tailscale

これで、Tailscale内部ネットワークに違和感なくアクセスできます:

|700

注意

TLS/SSHトンネルFail2Ban などの方法でセキュリティを強化することを強くお勧めします。SOCKS5 + ユーザー名/パスワードのみで公開ネットワークに公開することは、潜在的なリスク(ブルートフォース攻撃、パケットキャプチャなど)があります。

Title: Tailscale SOCKS5ポートを公開してプロキシソフトウェアで使用する Author: Neurocoda Created at: 2026-07-03 12:48:47 Link: https://neurocoda.com/ja/posts/tailscale-expose-socks5-port-for-proxy-software-ja/ License: This work is licensed under CC BY-ND 4.0.

Comments