Clash用語集
画面上の名称を設定項目に対応づけて解説します。カーネル、プロトコル、ルーティング、通信の取り込み方式、サブスクリプション形式を5つのカテゴリから確認でき、各用語には個別のリンクからアクセスできます。
カーネルとクライアント
クライアントは操作画面を提供し、カーネルは接続を処理します。トラブルの切り分けでは、クライアント名、カーネル名、実行中の設定をそれぞれ記録してください。
- mihomoプロキシカーネル / Clash.Meta
- mihomoはClashエコシステムのプロキシカーネルです。以前はClash.Metaという名称で、プロトコル接続、DNS処理、ルール判定、通信転送を担います。Clash Verge RevなどのGUIクライアントに組み込まれることがありますが、画面のバージョンとカーネルのバージョンは別です。設定項目が使えるか確認するときは、クライアント名だけで判断せず、実行中のカーネルとそのドキュメントを確認してください。
- GUIクライアントGUI / 設定・システム連携
- GUIクライアントは、サブスクリプション管理、接続先の選択、接続ログの確認、システムプロキシの切り替えなどを行い、設定をカーネルに渡します。画面の設定やテンプレート、上書き設定を統合して実行時設定を作るクライアントもあるため、サブスクリプションの元データを編集しても動作が変わらないことがあります。設定が再起動後に元へ戻る場合は、編集したものが元のサブスクリプション、保存される上書き設定、一時的な実行用コピーのどれかを確認してください。
- プロキシノードproxies / アウトバウンド接続情報
- プロキシノードは通常、プロキシサーバーのアドレス、ポート、プロトコル、認証情報の一式を指し、全体設定では
proxiesの項目に対応します。リスト上の名前はラベルにすぎず、サーバーの所在地、実際の接続元地域、サービスの利用可否を示すものではありません。ノードは個々の接続情報を表し、プロキシグループは複数の接続やグループから送信先を選ぶため、役割が異なります。
- 遅延テストテストURL / timeout
- クライアントは通常、指定したプロキシ経由でテスト先にアクセスし、リクエストの所要時間を記録します。接続の再利用や計測範囲は実装によって異なります。結果はテストURL、接続先、ネットワーク経路、タイムアウト設定に左右され、ダウンロード帯域やすべてのサイトでのアクセス速度を示すものではありません。テストがタイムアウトした場合は、その試行が制限時間内に終わらなかったことを意味します。実際のアクセス状況やログもあわせて確認してください。
- 外部コントローラーexternal-controller / 管理API
external-controllerは、カーネル管理APIの待ち受けアドレスを指定します。クライアントはこのAPIから接続ログや状態を取得したり、接続先を切り替えたりできます。例の127.0.0.1:9090はローカルの管理用アドレスで、ブラウザーのHTTPプロキシ欄に入力するものではありません。アクセス制御とネットワーク分離を適切に設定しない限り、外部から到達できるアドレスに管理APIをバインドしないでください。
プロキシプロトコル
アプリからローカルプロキシへの接続に使うプロトコルと、カーネルからリモートサーバーへの接続に使うプロトコルを区別しましょう。名称が似ていても、設定項目や通信方式が同じとは限りません。
- HTTPプロキシHTTP / CONNECT
- HTTPプロキシは、アプリがリクエストをプロキシの待ち受けアドレスに送信する方式です。HTTPSでは通常、
CONNECTでトンネルを確立した後、アプリと接続先がTLSをネゴシエートします。アプリがローカルのHTTPプロキシに接続しても、リモートノードもHTTPプロトコルを使うとは限らず、通信全体が自動的に暗号化されるわけでもありません。プロキシ経由になるかどうかは、アプリがその設定を使うかによって決まります。
- SOCKS5TCP / UDP ASSOCIATE
- SOCKS5は汎用プロキシプロトコルです。TCPに対応し、アプリとプロキシの双方が対応していればUDPも転送できます。ドメイン名をローカルで解決するか、プロキシ側に任せるかはアプリの接続方法によって異なります。コマンドラインツールによっては、URLスキームでこの違いを指定します。SOCKS5のアドレスを入力しただけでは、すべてのDNS問い合わせがプロキシ経由になるとは限りません。また、プロキシ非対応アプリの通信を取り込むこともできません。
- Shadowsockstype: ss
- Shadowsocksは、クライアントとプロキシサーバー間の通信を暗号化して転送します。mihomoのノード設定では通常、
type: ssと記述します。サーバーアドレス、ポート、暗号化方式、認証情報、オプションのプラグインはサーバー側の設定と一致させる必要があり、表示名だけでは接続情報を復元できません。対応するプロトコルの仕様や暗号化方式は異なる場合があります。インポートできない場合は、カーネルの対応状況と各設定項目を確認してください。
- Trojantype: trojan / TLS
- Trojanは通常、TLSを使ってプロキシ通信を転送します。サーバーアドレスと認証情報に加え、証明書に関するドメイン名も正しく設定する必要があります。サーバーへの接続先アドレスと証明書の検証に使うドメイン名は、それぞれ別の役割を持つ場合があるため、安易に入れ替えないでください。証明書エラーが発生した場合は、システム時刻、証明書チェーン、ドメイン名を確認します。証明書検証を無効にすると、サーバーの正当性を確認しにくくなります。
- Hysteria 2type: hysteria2 / QUIC
- Hysteria 2はQUICベースのプロキシプロトコルで、UDP通信が必要です。ネットワークでUDPが制限されている場合、同じサーバーのTCP通信が正常でも接続できないことがあります。初代Hysteriaとは設定名をそのまま置き換えられません。プロトコル自体が高いスループットを保証するわけではなく、実際の性能は回線品質、サーバーの処理能力、混雑状況に左右されます。
ルールとルーティング
まず接続がカーネルに届いているか確認し、その後でルールの順序、振り分け先、ルールデータを調べます。ルールで使う名前には、対応する定義が必要です。
- ルールベースの振り分けmode: rule / rules
- ルールモードでは、カーネルが
rulesを記述順に照合し、一致したルールで指定されたアウトバウンドまたはプロキシグループに接続を渡します。たとえばDOMAIN-SUFFIX,github.com,PROXYは、該当するドメインとサブドメインをPROXYという名前の宛先に振り分けます。順序を変えると判定結果も変わりますが、アプリの通信がそもそもカーネルを通っていない問題は解決できません。接続ログで一致したルールを確認してください。
- プロキシグループproxy-groups / select / url-test
- プロキシグループは、プロキシやほかのグループをまとめ、ルールから参照できるアウトバウンド名を作ります。
selectは手動選択、url-testは定期的なテスト結果に基づく選択、fallbackはメンバーの順序と利用可否に応じた切り替えに使います。自動選択はテスト先や確認間隔に左右されるため、サイトごとに最速の回線が選ばれるわけではありません。
- GeoIPGEOIP,CN,DIRECT
- GeoIPはIPアドレスのデータベースを使って接続先の地域を判定し、地域に応じて直結またはプロキシへ振り分ける用途で使われます。企業の所在地やドメインの末尾から分類するものではありません。CDNの振り分けやデータベースの更新によって判定結果が変わることがあります。ドメイン名からIPアドレスを得るため、名前解決が発生する場合もあります。
no-resolveを指定すると、そのIPルールが名前解決を開始するのを防げますが、接続全体でDNSが不要になるわけではありません。
- ルールセットrule-providers / RULE-SET
- ルールセットでは、ドメイン、IPアドレスなどのルールを個別に管理します。
rule-providersで定義し、rulesからRULE-SETで参照します。データ形式はbehaviorやformatなどの設定と一致させ、ルールセット名も正しく指定してください。ダウンロードに成功しても、形式が利用可能であることや、対象の接続にルールが適用されることを意味しません。
- MATCHフォールバックルール / 最後に照合
MATCHは、それまでのルールに一致しなかった接続を受け持つため、通常はルールリストの末尾に置きます。MATCH,PROXYを先頭に置くと、そのルールに一致した接続は後続のルールで処理されません。ここで使うPROXYは自動で用意される予約語ではなく、独自の宛先名です。使用前に同名のプロキシまたはプロキシグループを定義してください。DIRECTとREJECTは組み込みのアウトバウンドです。
関連情報:設定ファイルとルールの解説 →
通信の取り込み方式
通信の入口、DNS名前解決、アウトバウンドルールは連携して動作します。単一の設定スイッチがオンかどうかだけでは、通信経路全体が想定どおりに動いているか判断できません。
- システムプロキシOSのプロキシ設定
- システムプロキシは、プロキシの待ち受けアドレスをOSに登録し、その設定に従うアプリからローカルプロキシへ接続できるようにします。一部のコマンドラインツール、ゲーム、独自のネットワーク機能を持つアプリは設定を参照しないため、ブラウザーで使えてもすべてのソフトで通信が取り込まれるとは限りません。クライアントを終了する前にシステムプロキシが元に戻っていることを確認してください。戻っていないと、待ち受けが停止したローカルポートにアプリが接続し続けることがあります。
- TUNモードtun.enable / 仮想ネットワークインターフェース
- TUNは仮想ネットワークインターフェースとルーティング設定を使い、IP通信を取り込みます。システムプロキシの設定に従わないアプリも対象にできる場合があります。実際の対象範囲は自動ルーティング、除外設定、システム権限、DNS設定によって異なり、
tun.enableを有効にしただけですべての接続が対象になるわけではありません。stackはネットワークスタックの実装を指定する項目で、ルールモードを切り替える設定ではありません。有効にした後も、ルールに応じて直結またはプロキシを選択できます。
- mixed-portローカルHTTP・SOCKS共用ポート
mixed-portを設定すると、1つのローカルポートでHTTPとSOCKSのプロキシ接続を受け付けます。例:mixed-port: 7890。リモートノードのポートや管理APIのポートとは役割が異なるため、相互に置き換えることはできません。アプリから接続する際は、正しいプロキシ種別と待ち受けアドレスを指定してください。ほかの端末から接続させる場合は、待ち受け範囲、LANへのアクセス許可、ファイアウォール設定も確認します。
- Fake-IPdns.enhanced-mode: fake-ip
- Fake-IPモードはアプリに合成アドレスを返し、アドレスとドメイン名の対応を保持します。後続の接続時にカーネルが宛先ドメインを復元し、ルールによる振り分けを行えるようにします。合成アドレスは接続先サーバーの実際のグローバルIPではありません。DNS問い合わせと後続の通信が、対応する処理経路に入る必要があります。実際の名前解決結果を必要とするアプリでは
fake-ip-filterへの追加が必要な場合がありますが、根拠なしに除外対象を広げないでください。
- DNSリーク名前解決経路 / 想定外のリゾルバー
- DNSリークとは一般に、ドメイン名の問い合わせが想定外のネットワーク経路やリゾルバーを通り、問い合わせ情報が意図しない相手に知られる状態を指します。ブラウザーのセキュアDNS、OSの名前解決サービス、カーネルのDNS設定が関与することがあります。リゾルバーの所在地が異なるだけでは、リークの証拠にはなりません。まず想定する経路を明確にし、問い合わせがカーネルを通っているか、上流DNSへの通信がどの経路を使うか、アプリが独自の暗号化DNSを使っているかを確認してください。
仕組みを比較:TUNモードとシステムプロキシの違い →
サブスクリプションと設定ファイル
まず入力データの種類を確認してから、適切な方法でインポートします。全体設定、プロキシ一覧、共有リンクはそれぞれ別のデータです。
- サブスクリプションURLリモート設定 / 定期更新先
- サブスクリプションURLは、プロキシ一覧や設定全体を取得するためのリモートアドレスです。アカウントを特定できる認証情報が含まれることがあるため、機密情報として扱ってください。同じHTTPS形式のURLでも、YAML、エンコードされた共有リンク一覧、その他のデータが返される場合があり、URLの末尾だけでは互換性を判断できません。インポート後は設定が有効か、プロキシグループが表示されるかを確認してから接続を試します。更新に成功したことと、ノードが利用できることは別の確認事項です。
- YAMLインデントによる階層 / キーとリスト
- YAMLはmihomoの設定でよく使われるデータ記述形式です。半角スペースのインデントで階層を表し、
-でリスト項目を記述します。Tabによるインデント、キーの重複、特殊文字を含む値の引用漏れは、解析エラーや意図しない解釈の原因になります。YAMLとして解析できても、設定が有効とは限りません。フィールドの型、カーネルの対応状況、ルールから参照するプロキシ名も確認してください。
- 設定ファイルconfig.yaml / 実行設定一式
- 設定ファイルには、ローカルの待ち受けポート、DNS、プロキシ、プロキシグループ、ルールなどの実行設定を記述します。
config.yamlは一般的なファイル名ですが、拡張子だけで内容が利用できるかは判断できません。GUIクライアントが起動前にテンプレートや上書き設定を統合する場合、サブスクリプションの元データと実際の実行設定は異なることがあります。編集前に復元できるコピーを保存し、変更後は起動ログを確認してください。設定の読み込み失敗を回線の問題と取り違えないようにしましょう。
- プロキシプロバイダーproxy-providers / use
- プロキシプロバイダーは、
proxy-providersからリモートまたはローカルのプロキシ項目を読み込み、プロキシグループからuseで参照する仕組みです。通常はノード情報だけを提供し、設定全体に含まれるDNS、待ち受けポート、ルールは管理しません。単独で有効にできる完全な設定とは限りません。プロバイダーの更新間隔とクライアント全体のサブスクリプション更新間隔は別々に管理される場合があるため、それぞれの設定を確認してください。
- サブスクリプション変換データ変換 / 出力形式
- サブスクリプション変換は、入力データを対象クライアントが認識できる形式に整える処理です。プロキシグループやルールのテンプレートを適用するサービスもあります。不足している認証情報を補ったり、カーネルが対応していないプロトコル項目を使えるようにしたりするものではありません。サードパーティーの変換サービスはサブスクリプションURL全体を取得できることが多いため、利用前に認証情報の漏えいリスクを確認してください。まずはクライアントが元の形式を直接インポートできるか確認しましょう。