Clash / mihomo · 用語集

Clash用語集

サブスクリプションやノードから、ルールベースルーティング、TUN、設定項目までを解説します。概念ごとに確認し、まず役割を見分けてから変更する設定を判断しましょう。

このページでは25の用語を解説します。各用語の見出し横にあるリンクから個別の項目に移動でき、保存や共有にも便利です。

コア・設定・接続先

基本概念

クライアントは操作画面を提供し、コアはネットワーク処理を実行し、サブスクリプションは設定内容を提供します。この3つは別々のものです。

mihomoコア #mihomo core
mihomoは、プロキシ接続、DNS処理、ルール照合を担うネットワークコアで、Clash Metaの技術を引き継いでいます。GUIクライアントはサブスクリプションや画面、システム設定を管理し、コアは実行設定に基づいて処理を行います。特定のプロトコルや設定項目が使えるかどうかは、クライアント名だけでなく、実際に組み込まれているコアのバージョンで確認してください。
サブスクリプション #Subscription
サブスクリプションは通常、リモートのノードや設定全体を取得するためのURLであり、プロキシ接続そのものではありません。取得した内容はYAML形式の設定ファイルの場合も、ノード一覧だけの場合もあるため、クライアントが対応する形式と照合してください。更新時に既存の内容が置き換わることがあります。継続的な変更は、クライアントが対応するオーバーライド機能を使ってください。サブスクリプションURLには認証情報が含まれることが多いため、公開しないでください。
ノード #Proxy node
ノードは、プロキシサーバーとその接続方法を示す設定のまとまりで、通常はアドレス、ポート、プロトコル、認証情報が含まれます。ノード名にある地域名はラベルにすぎず、実際の出口位置や通信経路を示すものではありません。接続先の選定では、実際の用途での接続性、出口IP、継続的な通信性能を確認し、名称や一度の速度テストだけで判断しないようにしてください。
設定ファイル #Profile / config.yaml
設定ファイルには、プロキシ、プロキシグループ、ルール、DNSなどのネットワーク設定が保存されます。一般的なファイル名はconfig.yamlです。Profileは通常、クライアントが管理する設定エントリーを指し、ローカルファイルやリモートサブスクリプションから作成できます。実行時の設定にはマージやオーバーライド、画面上のオプションが反映される場合もあるため、元ファイルを編集した後は、変更が現在の実行設定に適用されたことを確認してください。
遅延 #Latency / URL test
クライアントに表示される遅延は、通常、ノード経由で指定されたテスト先にアクセスするまでの時間で、ICMP pingの結果とは限りません。テスト先、接続の再利用、タイムアウト設定、測定時のネットワーク状態によって数値は変わります。遅延が小さくてもダウンロードが速いとは限らず、テストがタイムアウトしてもすべてのサイトが利用できないとは限りません。テスト先のサービスと接続ログも確認してください。

ノードとサーバー間の通信方式

プロキシプロトコル

プロトコル名によって接続パラメーターの解釈が決まります。クライアントとサーバーでプロトコルを一致させる必要があり、名前を変更してもプロトコルは変換されません。

Shadowsocks #SS
Shadowsocksは暗号化に対応したプロキシプロトコルです。ノードには通常、サーバーアドレス、ポート、暗号方式、パスワードを設定します。通信する双方で互換性のある暗号方式を使う必要があり、方式によっては鍵の形式にも条件があります。UDPへの対応やプラグインの要否は別途確認が必要で、Shadowsocksという名称だけでは設定がそろっているとは判断できません。
VMessとVLESS #VMess / VLESS
VMessとVLESSは異なるプロトコルです。一般的な設定ではどちらもUUIDを使いますが、認証や通信方式の要件は異なります。VLESS自体には通信内容を暗号化する機能がなく、実際の安全性はTLSやREALITYなどのトランスポート設定によって決まります。インポート時は通信方式、サーバー名、パスなども確認してください。ノードの種類の名前を変更するだけでは使えません。
Trojan #TLS-based proxy protocol
Trojanは通常、TLSでプロキシ通信を転送し、パスワードで認証します。接続には認証パラメーターだけでなく、サーバー証明書、サーバー名、ネットワークの疎通性も関係します。証明書エラーが発生した場合は、まずドメイン名、システム時刻、サーバー証明書を確認してください。証明書検証の無効化を通常の解決策にしないでください。
Hysteria2 #QUIC-based proxy protocol
Hysteria2はQUICベースのプロキシプロトコルで、UDPの疎通性に依存します。クライアントとサーバーの両方が第2世代のプロトコルに対応している必要があり、第1世代の設定をそのまま互換性のある設定として使うことはできません。帯域幅の設定、輻輳制御、ネットワークの制限が通信性能に影響します。帯域幅の数値を大きくしても、実際の回線容量は増えません。
TUIC #QUIC transport
TUICはQUICベースのプロキシプロトコルで、TCPとUDPのプロキシ通信を転送し、多重化によって接続を管理します。利用する際は、プロトコルのバージョン、認証情報、サーバー側の設定が一致していることを確認してください。ネットワーク側でUDPが制限されていると接続できない場合があります。QUIC対応だからといって、あらゆるネットワークで高速または安定するとは限りません。

照合条件と接続先ポリシー

ルールと通信の振り分け

ルールは接続をどう照合するかを決め、ポリシーは接続先を決めます。通信の振り分けを確認するときは、まず一致したルールを見てから、最終的に選択されたノードを確認してください。

ルールベースルーティング #Rule-based routing
ルールベースルーティングでは、ドメイン名、接続先IP、ポート、プロセスなどの条件に基づいて、コアに入った接続の処理ポリシーを選びます。通常、ルールは上から順に照合され、最初に一致した有効なルールで接続先が決まるため、具体的な条件を広い条件より前に置くのが一般的です。ルールを追加した後は、設定ファイルが保存されたかだけでなく、接続ログで実際に一致したルールを確認してください。
プロキシグループ #proxy-groups
プロキシグループは複数のノードや他のプロキシグループをまとめ、ルールが個々のノードに直接依存しないようにするポリシーの選択肢です。selectは手動選択、url-testはテスト結果に基づく自動選択に使い、選択方法が異なります。ルールで参照するグループ名が存在することを確認してください。グループ内で利用できるノードは、各ノードの状態やテスト先にも左右されます。
GeoIP #IP geolocation database
GeoIPは、IPアドレスの位置情報データベースを使って接続先を判定します。たとえばGEOIP,CN,DIRECTは、該当するアドレスを直接接続のポリシーに渡す設定です。データベースの更新が遅れる場合があり、判定結果はサービスの所有者の所在地を示すものではありません。ドメイン名への接続では、IPルールによって名前解決が行われることもあります。no-resolveを指定すると、このような能動的な名前解決を制限できます。
ルールセット #rule-providers / RULE-SET
ルールセットは、複数のドメイン名、IPアドレス、従来形式のルールをまとめ、個別に更新・再利用しやすくする仕組みです。rule-providersで定義し、ルール一覧からRULE-SETで参照して、接続先のポリシーを指定します。データ形式とbehaviorを一致させてください。ルールセット自体の更新状況も個別に確認し、メインのサブスクリプションの更新時刻だけで判断しないようにしてください。
DIRECT、REJECT、MATCH #Built-in policies / final rule
DIRECTとREJECTは組み込みポリシーで、それぞれ直接接続と接続拒否を表します。MATCHは残りすべての接続に一致するルールタイプで、ノードやプロキシグループではありません。よく使われるMATCH,PROXYは、残りの接続をPROXYという名前のポリシーに渡します。このポリシー名が設定内に存在することも確認してください。

通信の取り込みとドメイン名解決

ネットワークモード

システムプロキシとTUNは通信をコアに取り込む方法を決め、ルールモードとグローバルモードは取り込んだ後の処理を決めます。DNSは別途確認が必要です。

システムプロキシ #System proxy
システムプロキシは、ローカルのHTTPまたはSOCKSプロキシをシステムやアプリに提供します。この設定に従うプログラムだけが利用します。ターミナルツールの中には環境変数を参照するものがあり、アプリによっては独自のプロキシ設定を使います。システムプロキシを有効にしても直接接続するプログラムがある場合は、まずそのプログラムがどのネットワーク設定を使うか確認してください。すぐにルールの不具合と判断しないようにしましょう。
TUNモード #Virtual network interface
TUNモードでは、仮想ネットワークインターフェースとルーティング設定を使って、より多くのIP通信をコアに取り込みます。特定のアプリの通信が取り込まれるかどうかは、権限、ルート、除外設定、DNS設定によって異なります。有効にすれば必ずすべての接続が対象になるわけではありません。ルールモードと併用できます。他のVPNと競合する場合は、ノードを何度も切り替えるのではなく、ルートとインターフェースを確認してください。
ルールモード・グローバルモード・直結モード #rule / global / direct
ルールモードはrulesに基づいて通信を振り分けます。グローバルモードは、コアに入った通信をグローバルセレクターに渡します。直結モードでは直接接続のポリシーを使います。グローバルモードでも、グローバルセレクターで適切なノードやポリシーを選ばなければ、プロキシ経由になるとは限りません。これらのモードは、コアに入っていないアプリの通信を自動で取り込むものではなく、システムプロキシやTUNの設定の代わりにもなりません。
DNSリーク #DNS leak
DNSリークとは通常、ドメイン名の名前解決リクエストが意図しない経路でリゾルバーに送られ、指定した名前解決方法から外れることです。システムDNS、ブラウザー内蔵のDoH、アプリ独自の名前解決によって実際の経路が変わる場合があります。検査サイトに表示されるリゾルバーの所在地は手がかりの一つです。DNS設定、名前解決方法、接続ログをあわせて確認し、地域名だけで判断しないでください。
Fake-IP #Synthetic DNS address
Fake-IPは、DNS問い合わせに合成アドレスを割り当て、接続がコアに入った際に元のドメイン名へ対応付けることで、ドメイン名の識別や通信の振り分けを助けます。このアドレスは接続先サーバーの実IPではないため、合成アドレスが表示されても名前解決の障害とは限りません。実IPを必要とするアプリでは、fake-ip-filterへの追加が必要な場合があります。問題を切り分ける際は、システムやアプリに残った古いDNSキャッシュにも注意してください。

実行設定でよく使う項目

設定項目

設定項目名は変更せず、そのまま使ってください。編集する前に、元のサブスクリプション、クライアントのオーバーライド、最終的な実行設定を区別し、反映されていないファイルを編集しないようにしましょう。

YAML #Configuration syntax
YAMLは構造化テキスト形式です。Clashの設定ではインデントでオブジェクトの階層を表し、ハイフンでリスト項目を示します。インデントにはスペースを使い、統一してください。特殊文字を含む文字列には引用符が必要な場合があります。構文を解析できても意味的に正しいとは限りません。項目名の誤記、キーの重複、存在しないポリシーの参照などがあると、読み込みに失敗したり、想定と異なる設定になったりすることがあります。
mixed-port #Mixed HTTP / SOCKS listener
mixed-portは、HTTPとSOCKSのプロキシリクエストを同時に受け付けるローカル待ち受けポートを設定します。リモートノードのサービスポートではありません。ブラウザー、ターミナル、その他のアプリでプロキシを手動設定する際は、現在の実行設定と一致するアドレスとポートを指定してください。他のプロセスがポートを使用していると、待ち受けに失敗する場合があります。確認方法はClashのポート設定を参照してください。
proxy-providers #Proxy node providers
proxy-providersは、リモートURLまたはローカルファイルから読み込むノードの一覧を定義します。プロキシグループはuseで一覧を参照できます。ノードを提供する機能であり、ルール、DNS、プロキシグループを含む設定全体を提供するものではありません。リモートの内容はプロバイダーが対応する構造にする必要があります。更新に失敗した場合は、内容の形式、URLへの接続性、キャッシュファイルの状態を確認してください。
nameserver #Upstream DNS resolvers
nameserverはdns設定内で、内蔵DNSが使う上流リゾルバーを指定します。実際のリゾルバーの選択は、nameserver-policyなどの項目にも左右されます。ノードのサーバー名は、別の設定で名前解決することもできます。DoHのURLを指定しても、すべてのアプリの問い合わせがそのリゾルバーに送られるとは限りません。通信の取り込み方法や、アプリが内蔵DNSを迂回していないかも確認してください。
external-controller #Controller API listener
external-controllerは、クライアントの画面や管理パネルから接続状態の確認やポリシーの切り替えなどを行う、コアのコントロールインターフェースの待ち受けアドレスを設定します。プロキシ通信の入口となるmixed-portとは用途が異なり、相互に置き換えることはできません。通常はローカルからのアクセスに制限してください。リモート管理が必要な場合は、認証とネットワーク上のアクセス制限を併用し、インターネットに直接公開しないでください。
Clash最新版をダウンロード