トラブルシュート 外部コントローラ タグ: external-controller bind-address secret

クライアントは起動なのに Clash 外部コントローラが開かない?bind-addresssecretYAMLポートを順に確認(2026)

プロキシ接続は普通なのに、ブラウザ外部ツールから Web パネルREST API 付き external-controller)だけが タイムアウトする、接続拒否(拒否)になる、401 が返る、といった不具合は、設定のどこかで リッスン先認証トークンファイアウォールの少なくとも 1 つが食い違っていることが多いです。本稿は Clash および Mihomo 系の一般的な YAML 記法を手がかりに、本機(127.0.0.1)・LAN 内別マシン・リモート到達性を切り分ける実務的な手順に整理します。公開ネットに平文で晒さない、secret の役割、GUI が書き戻す設定との整合といった安全面も併せて触れます。

読了時間:約17分
Clash 編集部

1. 症状のパターン(タイムアウト・接続拒否・401)

まずはブラウザの挙動を言葉に落とすと、切り分けが速くなります。

  • 接続は試みられるが最後まで待てない:多くの場合は、コアは起動しているが、指定した IP:ポートHTTP サーバ生えていない、あるいは ファイアウォール到達できないパターンです。別のポートに本当は生えている、というミスが典型です。
  • 接続を拒否された(すぐ失敗)127.0.0.1 以外の機器から、127.0.0.1 だけに束縛したプロセスへアクセスしようとしている、あるいは プロセスが落ちた直後に叩いている、などです。
  • HTTP 401 や、パネルが「認証が必要」として止まる:secret(または同等の トークン)が空なのにクライアントが送っている、YAML 側に長い secret があるのに、パネルに打ち込んでもいない、といった不整合が多いです。REST クライアントでは Authorization: Bearer 形式が要求される実装もあり、パネルごとに要確認です。

以降では、external-controller という 1 本の「管理用 HTTP エンドポイント」の聞いている相手bind-address)とsecret)を、設定ファイル上で揃える手順に集中します。プロキシ本丸(mixed-portportsocks-port 等)の乱数ミスと取り違えないでください。前者は トラフィック、後者は API/パネル です(名称と役割の対応表は、当サイト ドキュメントの用語解説と併読しやすいです)。

2. external-controller(Clash 外部コントローラ)の意味

Clash 外部コントローラは、コア(clash プロセス)が HTTPREST 風の API を出す受け口の総称で、実体の設定名はコアの世代やフォーク(Clash PremiumClash MetaMihomo 等)でやや違います。いずれの場合も、ここにWeb ダッシュボード(yacd、metacubexd 等)のフロントが、ブラウザから /proxies/version へ話しかける相手先になります。GUI 付きクライアント(Clash Verge 等)は、内部 API 呼び出しのために、裏で同じ external-controller を使うか、別途 抽象化するかは実装次第ですが、YAML を直接編集する運用であれば、まず external-controller の行にどの URL 相当の待受が出ているかを目で追うのが近道です。

用語の整理として、「Clash 外部コントローラexternal-controller キーで指定する、管理用の ip:port あるいは host:port 相当」として読み進めてください。一部ドキュメントでは bind-address を分離して説明し、ポート だけ external-controller に書かせる、という書式も流行しています。いずれにせよ、最終的に「どのローカル/グローバル IP のどの ポートが開くか」が一貫していればよい、という点は共通です。

3. YAML に書く external-controller とポート番号

最も分かりやすい表記のひとつは、ip:port または host:port 形式の1 行に、待受 アドレス番号をまとめて書く形です。例(あくまで学習用の骨格。実装・バージョンで読み違いが出るなら、公式例に合わせてください)。

# Example skeleton — match your Clash / Mihomo version docs
external-controller: 127.0.0.1:9090
secret: "choose-a-long-random-string"
# If split style is used in your build:
# bind-address: "*"
# external-controller: :9090

ここで ポート9090 である例によく出ますが、常に 9090 であるわけではありません。他プロセス(別の プロキシ や、開発サーバ、システム予約等)と衝突して GUI が黙って別の番号へ逃がしている、という事故も少なくないです。実際の設定を開いて最終行を確認し、クライアント起動直後のログ(「listening on ...」風の行)に出ている数値にしてください。Linux で systemd 常駐のときも、同一ホスト上で 2 つのユニットが同じ external-controller を奪い合うと、片方は起動失敗するので注意です。

IPv6 や :: の取り扱い

環境によっては [::]:9090 のように IPv6 側にだけ生える、0.0.0.0 だけだと 二重で片方失敗、といった挙動があります。ブラウザが localhostIPv6 優先で解釈し、リッスン127.0.0.1 だけ、という取り違いもゼロではありません。迷ったら http://127.0.0.1:(ポート)/数字の IPv4 で直打ちし、http://[::1]:(ポート)/ も比較すると切り分けしやすいです。

4. bind-address:127.0.0.1 だけ? LAN に開く?

bind-address(あるいは external-controller 行に焼き込まれた IP 部分)が、127.0.0.1 または localhost 相当に限られているとき、そのマシンのブラウザなら到達しやすい一方、同じ LAN 内のスマートフォンや、リモートのノート PC から 192.168.x.x:9090 のようには届きません。これは仕様上の安全設計として妥当で、意図せず外に API を晒す事故を減らす効果があります。

同じ家の別端末から Web パネルを見たいなら、0.0.0.0* といった ワイルドな待受(実装表記差あり)+OS ファイアウォール上で当該ポートだけ信頼する相手(同一サブネット等)に制限する、という二段が現実的です。Windows の場合は、LAN とファイアウォールの解説に沿った整理が、到達性の話と併用しやすいでしょう。public IP から 平文の 9090 を直接開く、secret だけ信じる、は極力避けるのが本稿の立場です(SSH トンネル、VPN 内だけ開く、HTTPS 前方に正規の終端、など上の層を検討してください)。

注意:0.0.0.0 解放は、家庭内 LAN でも、ゲスト用 Wi-Fi から到達したり、悪意のある端末に横断されたりし得ます。secret があるから安心、ではなく、到達面最小化し、秘密十分長く平文前提を忘れない、がセットです。

Windows と WSL、Docker の罠

ホスト上の Clash127.0.0.1:9090 を、WSL2 内のブラウザから叩こうとすると、127.0.0.1指し先Linux 側のループバックに向いて疎通しない、という定番の誤解があります。WSL2 とホストの記事の通り、resolv.confWindows の実 IPhost.docker.internal 等、到達先のモデルをにしたうえで、bind-address を合わせてください。コンテナ上でコアを動かす場合も、ポート公開-p 等)の1 段挟まる点を落としやすいです。

5. secret 設定と 401 認証エラー

secret キーは、external-controllerHTTP インターフェースに対する、簡易的な 共有鍵として機能します。実装の詳細(ヘッダ名、Bearer か、クエリの secret= か)はクライアントフロント(パネル)のバージョン差でブレるため、ここでは原則として「YAML に書かれた文字列を、パネルの設定画面同一に入力する」ことだけを必須に挙げます。空欄 "" か未設定(実装差あり)のとき、パネルが古いトークンをローカル保存していて、毎回 401 になる、というパターンは、ストレージを消して再入力すると直る、が典型です。

画面・ログ上の挙動 想定原因 先に試すこと
常に 401 または Unauthorized secret 不一致、パネル側の古い保存値 YAML の値をコピーし、パネルを再設定・キャッシュ消去
パネルは開くが操作だけ失敗 GET は通るが PUT が拒否、など メソッド制限 同じ API ベース URL を他ツールで比較
一時的に開いてすぐ 401 二重起動で片方のコアに当たる プロセス一覧と、待受ポートの重複を確認

また、Clash 外部コントローラ向け Web UI をhttps:// で配信する中継reverse proxy)の裏に同じ API を乗せる構成では、パスのプレフィックス(/clash 等)の取り扱いをミスると、正しい host:port に見えても、実際の fetch 先は別物、という罠が出ます。そういう層の話は、本稿の YAML 直確認よりに、中継の設定者と握るのが得策です。

6. GUI・プロファイル・上書きの食い違い

多くの GUI は、起動時に「作業中の YAML」を一時的に生成し、コアに流し込みます。手で config.yaml を直した直後、GUI古い内容で保存し、external-controller 行が元に戻るsecret だけ GUI 側の常連値に戻る、はよくある戸惑いの種です。対策の基本は、一時的に GUI の「設定を書き戻す」手順を止める、どちらの編集面にするかを決め、一方寄せ切ることです。CLI のみ、Linux の systemd 記事のように1 箇所のファイルに責任を集約する、という運用の方が、行間の secret ズレは出にくいです。

ヒント:コア ログに「External controller listen ...」風の行が出る版では、起動直後1 行スクリーンショットしておき、YAMLexternal-controller同じか比較すると早いです。

7. ファイアウォールと到達性(本機と LAN 以外)

OS 標準の ファイアウォール、サードパーティの セキュリティスイート、企業 MDMプロファイル、はいずれも「着信TCP 9090(例)」を黙殺する局面があります。症状は、127.0.0.1 では curl が通るのに、LAN 内の別 PC からだけタイムアウト、など非対称に現れます。ここは bind-addressLAN から到達可能にした「上で」ファイアウォールルール不足、という 二重条件が満たされているか、を確認します。macOS では、Clash Verge 周辺の拡張の話と、到達性の話はが違います。混同すると、「プロキシは動くのに API だけ 詰まる」の説明が辻褄合わないまま悩みが延びるので、レイヤを分けて考えてください。

8. Web パネル(ダッシュボード)の「API ベース URL」

ブラウザで使う Web パネル(静的フロント)は、どの http://…:port を「Clash 外部コントローラ」として使うかを、初回の設定で聞かれることが多いです。ここに https:// や、存在しない パス多く入れると、UI はロードしてもバックエンドfetch できず、真っ白のまま、Console だけ CORS 風、など誤解を招きます。まずは、http://127.0.0.1:(YAML数字)/素の HTTP 200 を返すか、同一マシン上の curl で触ってください。

多くの公式・準公式 UI は、/ui や専用のサブパスを足した URLブックマークにしますが、API 本体host:port とは役割が違います。混ぜると、画面出どころ(静的ファイル)と、APIexternal-controller)の対応が分断されたまま、ずっと読み込み中に見える、という罠に落ちがちです。

9. セルフチェックリスト

  1. 実際有効YAML 断片(GUI の「実行中の設定」等)に、external-controller意図した ポート1 回目視できるか。
  2. 127.0.0.1 から、curl 等で /version 等の軽い GET期待通り401 の意味も一貫)か。
  3. 別端末から叩くなら、bindLAN から到達可で、ファイアウォール 着信同ポート許可か。
  4. secret があるなら、401 時のヘッダ挙動と、パネル再入力キャッシュ掃除をしたか。
  5. WSLDocker なら、127.0.0.1意味どの OS かをにしたか。

10. まとめ

Clash 外部コントローラexternal-controllersecret)の不整合は、プロキシ一見動いていても、Web パネル自動化だけが壊れている、という形で出やすいです。YAML 上の ポートbind-address127.0.0.1ワイルド待受か)、401 時の secretOSファイアウォールWSL/コンテナループバックGUI上書き、の六方向に揃えれば、タイムアウト接続拒否401 の大半は、再現性のある 一段ずつの作業に還元できます。コアのソースIssue トラッカーは GitHub 上の公式情報で追えますが、クライアントの配布物は、手元の OS に合わせて当サイト ダウンロードページから揃う導線に任せるのが、初動の取り違え減らしやすいです。

多機能 GUI より、まず API 直叩きで疎通一発可視化できる、というのが Clash 系の扱いやすい点でもあり、本トラブルに直面したときの切り分けにも直結します。

Clash を無料ダウンロードし、外部コントローラ付きの安定したクライアントを試す