外部コントローラーを使うと何ができるか

Clash Verge Rev を Windows で使っていると、アプリ本体の画面を開かずにブラウザからプロキシの状態を確認したい場面があります。たとえば、別の端末から現在の接続先を確認する、プロキシグループを切り替える、ログを調べる、システムプロキシや TUN の状態を管理するといった操作です。このときに使うのが、Clash 系クライアントの外部コントローラーです。

外部コントローラーは、Clash の内部 API を待ち受ける HTTP ポートです。対応する WebUI と組み合わせることで、ブラウザから http://127.0.0.1:9090/ui のようなアドレスを開き、現在のプロファイル、プロキシグループ、接続履歴、ルール判定などを視覚的に確認できます。Windows の Clash Verge Rev 外部コントローラー設定で重要なのは、API ポートと secret を正しく指定し、必要以上に LAN へ公開しないことです。

本稿では、Windows 版 Clash Verge Rev を前提に、設定画面の探し方、外部コントローラーの有効化、WebUI への接続、認証エラーやポート競合が起きた場合の確認手順まで順番に説明します。バージョンによってメニュー名や配置が少し異なる場合がありますが、基本的な考え方は共通しています。

安全上の注意:外部コントローラーは、プロキシの切り替えや設定確認ができる管理 API です。インターネット全体へ公開する用途ではありません。まずは 127.0.0.1 のローカル接続だけで動作確認し、LAN 公開が必要な場合も認証とファイアウォールを必ず併用してください。

設定前に確認する項目

作業を始める前に、Clash Verge Rev が正常に起動し、少なくとも一つのプロファイルが読み込まれていることを確認します。外部コントローラーは GUI そのものではなく、バックエンドの mihomo コアが提供する API です。そのため、プロファイルの読み込みに失敗している状態や、コアが停止している状態では、ブラウザ側だけを調整しても接続できません。

次に、現在使われているポートを確認します。Clash Verge Rev には、HTTP 通信を受けるポート、SOCKS ポート、両方をまとめた混合ポート、そして外部コントローラー用の API ポートがあります。これらは役割が違うため、外部コントローラーのポート欄に混合ポートの番号を入力してはいけません。API ポートが 9090 なら、WebUI から接続するときも同じ番号を指定します。

項目 役割 確認時の注意
HTTP ポート HTTP プロキシとしてアプリが通信するための入口 外部コントローラー接続には使わない
SOCKS ポート SOCKS5 対応アプリが利用する入口 API ポートとは別の番号
混合ポート HTTP と SOCKS をまとめて受けるプロキシ入口 ブラウザや端末のプロキシ設定用
外部コントローラー Clash の状態を操作する管理 API secret と WebUI の接続先が必要

また、Windows の別アプリが同じ API ポートを使用していないかも確認します。ポートが競合すると、Clash Verge Rev の画面では設定が保存されたように見えても、実際には API が待ち受けていないことがあります。すでに別の Clash クライアントや mihomo のプロセスを起動している場合は、一度終了してから設定をやり直すと原因を切り分けやすくなります。

外部コントローラーを有効にする手順

Clash Verge Rev の画面構成はリリースによって変化しますが、通常は設定画面の「設定」「全般」「ネットワーク」「コア設定」などに、外部コントローラーまたは External Controller に相当する項目があります。見つからない場合は、プロファイル編集画面ではなく、アプリ全体の設定画面を開いてください。プロファイルの YAML に直接書く方法もありますが、最初は GUI の設定項目を使った方が入力ミスを減らせます。

  1. Clash Verge Rev を起動:タスクトレイに常駐しているだけの場合もあるため、通知領域のアイコンを右クリックするか、アプリのメイン画面を開きます。
  2. 設定画面を開く:サイドバーの「設定」または歯車アイコンを選び、ネットワークやコアに関係する詳細設定を探します。
  3. API ポートを入力:外部コントローラーのアドレスとして、まず 127.0.0.1:9090 のようなローカルアドレスを指定します。ポートが使用中なら 90919097 など、空いている番号へ変更します。
  4. secret を設定:推測されにくい文字列を入力します。短い数字だけ、Windows のユーザー名、メールアドレス、購読 URL の一部などは避けてください。
  5. 設定を保存してコアを再起動:保存ボタンを押した後、必要に応じて Clash Verge Rev のコア、またはアプリ本体を再起動します。

YAML を直接編集する場合、mihomo の設定では次のような構造が一般的です。実際のキー名や利用可能な機能は、Clash Verge Rev に搭載された mihomo のバージョンに合わせてください。

external-controller: 127.0.0.1:9090
secret: "change-this-to-a-long-random-string"

external-controller: 0.0.0.0:9090 とすると、PC 内部だけでなく LAN 上の他の端末からも接続できる可能性があります。しかし、これは単に「スマートフォンから見たい」という理由で気軽に使う設定ではありません。Windows ファイアウォールの受信規則、Wi-Fi のネットワーク種別、Clash 側の secret、ルーターのポート転送の有無をまとめて管理する必要があります。自宅 LAN 内だけで使う場合でも、最初はローカルアドレスのまま動作確認するのが安全です。

公開範囲に注意:0.0.0.0 は便利に見えますが、管理 API の待ち受け範囲を広げます。ルーターのポート開放や外部からのアクセスを組み合わせると、プロキシ設定を第三者に操作される危険があります。外出先から管理したい場合も、直接公開ではなく安全な VPN などを検討してください。

ブラウザから WebUI に接続する

外部コントローラーの API が起動したら、対応する Clash WebUI をブラウザで開きます。WebUI は見た目を提供するフロントエンドであり、Clash Verge Rev の内部 API と接続して初めてプロキシグループや接続情報を表示できます。WebUI の URL は配布元やバージョンによって異なりますが、読み込んだページに API のアドレスと secret を入力する方式が一般的です。

  1. WebUI を開く:Clash Verge Rev の外部コントローラー画面にある「WebUI を開く」ボタンを使うか、信頼できる WebUI の URL をブラウザで開きます。
  2. API アドレスを指定:接続先に http://127.0.0.1:9090 を入力します。ブラウザの URL 欄ではなく、WebUI 内の「Backend」「API Base URL」などの欄に入力する場合があります。
  3. secret を入力:Clash Verge Rev に設定した secret と完全に同じ文字列を入力します。前後の空白や引用符を含めないようにします。
  4. 接続を実行:Connect、接続、Save などのボタンを押し、プロキシ一覧、メモリ使用量、接続数が表示されるかを確認します。

接続できた後は、まず現在のプロキシグループと接続ログを確認してください。表示が更新されるなら、外部コントローラーは正常に動作しています。WebUI からプロキシグループを切り替えるテストをする場合は、通信中のアプリをいきなり変更せず、まずブラウザで軽いページを開いてから接続先の変化を確認すると安全です。自動選択グループを手動選択に変えた場合、以後の通信経路や速度が変わるため、不要な変更は元に戻しておきます。

接続できないときの切り分け

WebUI が「接続できない」「Unauthorized」「Failed to fetch」と表示される場合、原因を一度に決めつけず、API の待ち受け、ポート、secret、WebUI の種類、Windows の通信制限の順に確認します。特に多いのは、混合ポートを API ポートと勘違いするケースと、Clash Verge Rev を再起動した後に別のプロファイルが読み込まれて secret が変わるケースです。

  • Connection refused:指定したポートで API が待ち受けていない可能性があります。外部コントローラーを有効にした後、コアを再起動し、ポート番号の入力ミスを確認します。
  • Unauthorized:API には到達していますが、secret が一致していません。WebUI に保存された古い secret を削除し、Clash Verge Rev 側からコピーして再入力します。
  • ページは開くがデータが空:WebUI の API ベース URL が誤っている、または WebSocket の接続先だけ別ポートになっている可能性があります。WebUI の接続設定を初期化してから再登録します。
  • LAN の別端末からだけ接続できない:外部コントローラーが 127.0.0.1 のままになっているか、Windows Defender ファイアウォールが受信を遮断している可能性があります。
  • 接続後すぐに切れる:Clash Verge Rev のコア再起動、スリープ復帰、プロファイル更新などで API が一時的に再生成されていないか、ログと接続時刻を照合します。

Windows 側では、コマンドプロンプトから対象ポートが開いているかを確認できます。たとえば次のコマンドを実行し、9090 が LISTENING になっているかを見ます。

netstat -ano | findstr :9090

何も表示されない場合は、Clash Verge Rev がそのポートを使用していません。別のプロセス ID が表示された場合は、ポート競合を疑います。管理者権限の PowerShell では、次のように待ち受けプロセスを確認することもできます。

Get-NetTCPConnection -LocalPort 9090 -State Listen

また、WebUI を開くブラウザにプロキシ拡張機能を入れている場合、ローカル API へのアクセスまで Clash のプロキシ経由にしてしまうことがあります。通常は 127.0.0.1localhost をプロキシ対象外にする設定が望ましいです。TUN モードを有効にしている環境では、ローカルネットワークを除外するルールとの組み合わせも確認してください。外部コントローラーの問題に見えて、実際にはブラウザから localhost へ到達する経路が変わっているだけの場合があります。

安全に運用するためのチェックポイント

外部コントローラーを使い始めた後は、便利さだけでなく管理面も確認しましょう。secret は設定ファイルに保存されるため、設定ファイルを第三者へ送ったり、画面共有やスクリーンショットに映したりしないでください。購読 URL と同じく、secret も管理権限に近い情報として扱う必要があります。もし漏えいした可能性があれば、Clash Verge Rev 側で secret を変更し、WebUI に保存された古い認証情報を削除します。

LAN から操作する必要がないなら、待ち受けアドレスは 127.0.0.1 に固定します。家庭内の別 PC やスマートフォンから操作したい場合は、まず Windows のネットワークプロファイルが「パブリック」になっていないか確認し、必要最小限の受信規則だけを作成してください。ルーター側で WAN ポートを Clash の API ポートへ転送する設定は避けるべきです。外部からの操作が必要なときは、VPN や安全なリモート接続を経由し、API 自体を直接インターネットへさらさない構成にします。

設定変更後は、ブラウザの WebUI だけでなく Clash Verge Rev 本体でも状態を確認します。プロキシグループを切り替えたあとに接続一覧が更新されるか、ルール判定が想定どおりか、システムプロキシのオン・オフが Windows 側へ反映されるかを見てください。外部コントローラーは操作画面を便利にする機能であり、通信が必ず高速になる機能ではありません。速度や安定性が変わった場合は、ノード、ルール、DNS、TUN の設定を別々に検証することが大切です。

ほかの Clash クライアントにも外部コントローラー機能はありますが、設定項目の名前が製品ごとに違い、古いクライアントでは WebUI の互換性や認証仕様が分かりにくいことがあります。Clash Verge Rev は Windows 上で mihomo の API、プロファイル、接続状態を一つの画面から確認しやすく、ローカル待ち受けから始めて段階的に運用できる点が実用的です。いくつも画面を探し回らず、この記事の手順で外部コントローラーを安全に試したい方は、まず Clash 公式サイト のダウンロードページから対応する Clash クライアントを確認して、Windows 環境で無理のない構成から始めてみてください。