多くのGUIクライアントには既にグラフィカルなインターフェースが内蔵されていますが、リアルタイムの接続一覧、各接続のトラフィック、ノードの遅延曲線をより直感的に見たい場合は、Webダッシュボードを接続するほうがログを追うよりずっと簡単です。その入り口となるのが external-controller です。
external-controllerを有効化する
これによりローカルにRESTful APIサービスが起動し、Webダッシュボードはこのインターフェース経由で内核のリアルタイム状態を読み取ります。トラフィックの転送自体には関与しません。
external-controller のリスンアドレスを 0.0.0.0 に変更してLAN内の他のデバイスからアクセスできるようにする場合は、必ず secret も設定してください。設定しないと、そのポートにアクセスできる誰でもあなたのプロキシ設定を読み取ったり変更したりできてしまいます。
external-ui:静的パネルを内蔵する
一部の内核は external-ui フィールドをサポートしており、パッケージ化されたパネルの静的リソースディレクトリを指定すると、http://127.0.0.1:9090/ui にアクセスするだけで直接パネルを開けます。追加のデプロイは不要です。
パネルで何が見えるか
| モジュール | 内容 |
|---|---|
| Proxies | すべてのノードとプロキシグループ、確認・手動切替・速度テストの実行が可能 |
| Connections | 現在アクティブなすべての接続:宛先アドレス、使用中のノード、使用済みトラフィック、接続時間 |
| Logs | リアルタイムのログストリーム、ルールマッチ、接続の確立・切断などのイベント |
| Rules | 現在読み込まれているすべてのルールとルールセット、マッチ順序の確認に便利 |
| Traffic | リアルタイムの上り下りレートグラフ、現在の帯域使用状況を直感的に確認 |
よく使われるパネルプロジェクトの選び方
オープンソースコミュニティには接続してすぐに使える成熟したWebパネルプロジェクトが複数あります。多くは純粋なフロントエンドの静的ページで、デプロイも簡単です。パッケージ化された静的リソースをダウンロードして external-ui を対応するディレクトリに指定するか、あるいはブラウザで対応するオンライン版のページを直接開き、自分の external-controller のアドレスと secret を入力するだけで接続できます。選ぶ際に注目すべきポイントは2つです。インターフェースが分かりやすく直感的かどうか、そして現在使っている内核バージョンのAPIフィールドに対応しているかどうか(内核のブランチによってAPIに差異がある場合があり、パネルのバージョンが古すぎると一部表示が欠けることがあります)。
パネルのセキュリティ強化の推奨事項
- 必ずsecretを設定する:ローカルの
127.0.0.1でしか使わない場合でも、キーを設定する習慣をつけておけば、後でリスンアドレスを誤って変更してしまったときのリスクを避けられます。 - コントロールポートを公開インターネットに晒さない:どうしても遠隔アクセスが必要な場合は、
external-controllerを直接公開IPにリスンさせるのではなく、SSHトンネルやVPNでローカルポートに転送する方法を優先してください。 - パネルの入手元を定期的にチェックする:公式リポジトリや有名なオープンソースプロジェクトのパネルリソースのみを使用し、出所不明のサードパーティ版パッケージは避けましょう。
スマートフォンでパネルは使えるか
使えます。原理は全く同じです。スマートフォンとClashを実行しているデバイスが同じLAN内にあれば、スマートフォンのブラウザで http://内核が動いているデバイスのLAN内IP:9090/ui(external-controller のリスンアドレスを 0.0.0.0 に変更し、secret も設定する必要があります)にアクセスすれば、同じパネルを開けます。多くの人がこれを内核の「リモート操作」の方法として使っています。パソコンで内核を動かし、スマートフォンでパネルを開いて接続とトラフィックを確認する——デバイスを何度も切り替える必要がありません。
パネルを使ったトラブルシューティングの考え方
- あるサイトが遅い/つながらない:Connectionsで該当する接続を見つけ、どのノードを使っているか確認し、そのノード単体で遅延をテストします。
- ルールのマッチミスを疑う:Logsでルールマッチのログレベルを開き、あるドメインが実際にどのルールにマッチしているかをリアルタイムで観察します。
- トラフィックが異常に高い:Connectionsをトラフィックでソートし、どの接続・プロセスが大量に帯域を消費しているかを素早く特定します。
external-controller のアドレスと secret を入力すれば接続して使用できます。
パネルとクライアント標準のインターフェースは何が違うのか
クライアント自体にグラフィカルなインターフェースがあるのに、なぜ追加でWebパネルを接続する必要があるのか、と疑問に思う人も多いでしょう。両者の役割は実は少し異なります。クライアント内蔵のインターフェースは通常大幅に簡略化されており、「ワンクリック接続」「クイックノード切替」など日常的によく使う操作を前面に出し、大部分の内部詳細を隠しています。一方でExternal Controller+Webパネルが公開するのは内核の最も生の実行状態で、フィールドがより充実し、リアルタイム性も高く、インターフェース経由の二次開発(トラフィックデータを定期的に取得して統計するスクリプトなど)にも対応します。日常使用ではクライアント標準のインターフェースで十分ですが、より深いトラブルシューティングや自動監視が必要な場合にのみ、追加でパネルを接続する価値があります。
インターフェースで簡単な自動監視を行う
External Controllerが提供するのは標準的なRESTfulインターフェースです。つまり既存のWebパネルで見るだけでなく、自分でスクリプトを書いて定期的にインターフェースをリクエストし、トラフィックデータを記録して長期統計を取ったり、あるノードが連続して異常を示したときに通知をトリガーしたりすることもできます。これは応用的な使い方で必須ではありませんが、自分のネットワーク利用状況をより細かく監視したい場合は探求する価値があります。パネルを何度も手動で開いて確認するより、はるかに手間が省けます。
複数デバイスで同じパネルを共有する
自宅に複数のデバイス(パソコン、ルーター、NAS)があり、それぞれ独立したClashインスタンスを動かしている場合、理論上は各インスタンスにそれぞれ独立した external-controller ポートを割り当て、同じパネルプロジェクトで接続先アドレスを切り替えながら確認できます。インスタンスごとに別々のパネルをデプロイする必要はありません。この「1つのパネルで複数インスタンスを管理する」使い方は、ルーターをサブルーターとして使う構成や複数ノードのデプロイ場面でよく見られます。
まとめ
External Controllerは本質的に内核が外部に公開する「可観測性」のインターフェースであり、追加のパフォーマンスコストなしに接続レベルの詳細データを取得できます。パネルと組み合わせることで、「ネットが遅くなった気がする」「間違ったノードを使っているのでは」といったあいまいな疑問を、直接観察して検証できる具体的な事象に変えられます。