Clashコア
設定の読み込み、ルールの照合、プロキシ接続を実際に行うプログラムで、通常はGUIの背後で動作します。オリジナルのClashと、その後に派生したコアは別のプログラムであり、対応プロトコルや設定キーも異なります。「設定を読み込めない」ときは、クライアント名だけでなく、「バージョン情報」や起動ログでコアの名称を確認してください。
CLASH / 用語解説
まず通信をどの仕組みが取り込み、ルールがどの出口を選ぶのかを整理し、次にDNSとサブスクリプションを確認します。設定項目ごとに25の用語をまとめ、各項目へ個別にリンクできます。
設定項目が見つからない場合は、ブラウザーのページ内検索で日本語名や設定キーを検索してください。手順を確認する場合ははじめにへ。エラーが出ている場合はトラブルシューティングをご覧ください。
01 / プログラムと操作画面
操作するのはクライアント、接続を処理するのはコアです。まず実行中のプログラムを確認し、設定キーが対応しているか判断しましょう。
設定の読み込み、ルールの照合、プロキシ接続を実際に行うプログラムで、通常はGUIの背後で動作します。オリジナルのClashと、その後に派生したコアは別のプログラムであり、対応プロトコルや設定キーも異なります。「設定を読み込めない」ときは、クライアント名だけでなく、「バージョン情報」や起動ログでコアの名称を確認してください。
Clash Metaプロジェクトを引き継ぐ形で開発されたプロキシコアです。Clash形式の設定との互換性を保ちつつ、プロトコル、DNS、ネットワークの取り込み機能を拡張しています。古い手順では「Metaコア」と呼ばれることもあるため、実際の設定項目と照らし合わせてください。クライアントがmihomoに対応していても、現在使用中のコアのバージョンを確認しましょう。クライアントの更新だけでは、コアが切り替わらない場合があります。
「設定」「プロキシ」「ログ」などの操作画面を備え、コアの起動、サブスクリプションの管理、システムプロキシの設定を行うアプリです。サブスクリプションの内容にポートやDNS、上書き設定を追加することがあるため、エディターで見えるファイルが実際の実行設定とは限りません。設定を保存しても元に戻る場合は、まずクライアントがその項目を管理していないか確認し、画面の設定と設定ファイルのどちらを変更するか判断してください。
クライアントや管理パネルが接続状態の確認、プロキシグループの切り替え、実行時設定の変更に使うインターフェースです。たとえば127.0.0.1:9090で待ち受けます。管理用の接続口であり、ブラウザーの通信に使うプロキシポートではありません。通常はローカルからのみアクセスできるようにしてください。遠隔管理が必要な場合は、認証とアクセス制限も設定します。待ち受けアドレスを全インターフェースに変更するだけでは不十分です。
HTTPプロキシとSOCKSプロキシの両方を受け付けるローカルの待ち受けポートです。設定例はmixed-port: 7890ですが、実際の値はクライアントの現在の設定を確認してください。アプリにプロキシを個別設定する場合は、正しい待ち受けアドレスとポートを指定し、コントローラーのポートを入力しないようにします。address already in useが表示されたら、別のクライアントが同じポートを使用していないか確認してください。
02 / 接続方式
プロトコルによって接続の確立方法が決まります。同じプロトコル名でも、認証、トランスポート、証明書の設定を一致させる必要があります。typeだけ変更しても接続できるとは限りません。
アプリからHTTPリクエストをプロキシに渡して処理します。HTTPSへ接続する場合は通常、CONNECTでトンネルを確立してから、アプリと接続先サイトの間でTLS通信を行います。「HTTPプロキシ」という名称だけでは、アプリからプロキシまでの通信が暗号化されるとは限りません。ブラウザーはシステム設定に従うことがありますが、ほかのアプリでは手動設定が必要な場合があります。アプリが対応する設定方法を確認してください。
TCPを中継し、UDP ASSOCIATEでUDPにも対応する汎用プロキシプロトコルです。実際に利用できるかはアプリとサーバーの実装によります。暗号化が標準で保証されるわけではなく、ドメイン名の名前解決先も一律ではありません。一部のツールでは、プロキシ側で名前解決する指定をsocks5hと表記します。利用前に、そのツールの引数や設定方法を確認してください。
規定の暗号方式とパスワードでサーバーに接続するプロキシプロトコルで、Clashの設定では通常ssと記述します。アドレス、ポート、暗号方式、パスワード、使用する場合はプラグインの設定も、サーバー側と一致させてください。インポート後に接続できない場合は、コアが暗号方式やプラグインに対応しているか確認します。パスワードを貼り直すだけでは、プロトコルの非対応は解決しません。
通常はTLSで暗号化接続を確立するプロキシプロトコルです。アドレス、ポート、パスワードに加え、サーバー証明書とSNIを確認してください。接続先にIPアドレスを使う場合も、証明書の検証に必要なドメイン名を別途指定することがあります。x509関連のエラーが出たら、システム時刻、ドメイン名、証明書チェーンを確認し、証明書検証の無効化を恒久的な対処にしないでください。
QUICベースのプロキシプロトコルで、ネットワークが対応するUDP通信を許可している必要があります。TCPのサイトにアクセスできても、このプロトコルの接続経路が使えるとは限りません。Hysteria 2と初代Hysteriaでは認証方式や設定項目が異なり、そのまま置き換えることはできません。タイムアウトが続く場合は、まずコアの対応状況、サーバーアドレス、UDPの到達性を確認し、その後で帯域幅などの詳細設定を見直してください。
03 / 出口の選択
通信を取り込んだ後に、ルーティングが行われます。経路を調べるときは、一致したルールとプロキシグループで現在選択されている出口の両方を確認してください。
ドメイン、IPアドレス、プロセスなどの条件に応じて接続の出口を選びます。rulesは通常、上から順に照合され、最初に一致したルールが適用されます。たとえばDOMAIN-SUFFIX,example.com,DIRECTは、該当するドメインとサブドメインを直接接続します。フォールバック用のMATCHは通常末尾に置きます。前に置くと、後続の詳細なルールが正しくても適用されません。
複数のノードやほかのプロキシグループをまとめ、ルールから参照できる出口を構成します。設定項目はproxy-groupsです。selectは通常、手動選択に使い、url-testはテスト結果に応じて選択します。プロキシグループ自体が新しいプロキシサーバーになるわけではありません。ルールで参照するグループ名が定義と完全に一致しているか、またグループ内で現在選択されている出口も確認してください。グループ名が一致しているだけでは、経路が正しいとは限りません。
ruleはルールに従って出口を選び、globalは通常、グローバル用プロキシグループを使います。directはコアに渡された接続を直接接続します。モードで決まるのは通信の処理方法であり、取り込むアプリではありません。そのため、グローバルモードに切り替えても、システムプロキシやTUNの代わりにはなりません。原因を調べる際に一時的にモードを切り替えて比較する場合は、元の設定を記録し、確認後に必要なルーティング設定へ戻してください。
IPアドレスの地域情報に基づいて照合するデータとルールの仕組みです。たとえばGEOIP,CN,DIRECTのように指定します。データベースの判定はIPアドレスの登録地域や推定地域を示し、ユーザーの現在地を示すものではありません。CDNのIPアドレスもネットワークによって変わることがあります。誤判定がある場合は、ウェブページに表示された地域だけで判断せず、コアが使うデータ形式、読み込みログ、更新元を確認してください。
複数の照合条件を独立したリソースにまとめ、rule-providersで定義してから、RULE-SETルールで参照します。個別に管理・更新しやすいのが特徴です。ルールセットが定めるのは「どの接続が条件に一致するか」であり、「どの出口に接続するか」は参照するルールで決まります。ファイル形式、behavior、実際の内容が一致している必要があります。ダウンロードに成功しても、形式が合わなければ読み込めないことがあります。
関連情報:プロキシモードの選び方 · GeoIPの更新と誤判定のトラブル対処。
04 / 名前解決と通信の取り込み
ドメイン名の名前解決と通信の取り込みは別の処理です。ページが開けても、すべてのDNSクエリが想定した経路を通っているとは限りません。
ドメイン名をIPアドレスに変換するシステムで、接続前によく使われる処理です。クライアントのdns設定が影響するのは、その名前解決経路を通るリクエストに限られます。ブラウザー内蔵の暗号化DNS、アプリ独自の名前解決、システムのキャッシュによって結果が変わる場合があります。no such hostが表示されたら、まず接続先ドメインとプロキシサーバーのドメインのどちらで失敗したか確認し、該当する名前解決経路を調べてください。
アプリには対応情報に基づく仮想IPを返し、コアがその情報からドメイン名を特定して接続を処理する方式です。ドメイン名の情報を保ち、一部の名前解決待ち時間を減らせます。よく使われる仮想アドレスは198.18.0.0/16で、サイトの実サーバーのIPアドレスではありません。アプリが仮想アドレスを取得した後、コアを経由せず直接接続すると失敗する場合があります。互換性対策として除外範囲をむやみに広げず、対象のドメインごとにフィルタリングを検討してください。
仮想ネットワークインターフェースとルーティングを使ってIP通信を取り込み、システムプロキシに従わない一部のアプリにも対応します。設定は通常tunの下にあります。システム権限、ルート設定、DNSとの連携が必要で、有効にしても端末のすべての通信が必ずプロキシ経由になるわけではありません。ほかのVPNと併用する場合はルートの競合を確認してください。取り込み状況はスイッチの状態だけで判断せず、接続ログで確認します。
指定した経路を通るはずのドメインクエリが、実際には別のリゾルバーへ送られる状態です。たとえばローカルネットワークのDNSを経由している場合があります。OS、ブラウザー、クライアントの設定と、テストページがどのようにクエリを確認するかをあわせて調べてください。リゾルバーに表示された国や地域だけでは判断できません。まずブラウザーとシステムの名前解決設定をそろえ、クエリログと接続ログを確認しながら、経路を一つずつ検証してください。
OSにローカルプロキシのアドレスを登録し、システム設定に従うアプリで使えるようにします。すべてのネットワークパケットを強制的に転送するものではありません。コマンドラインツール、ゲーム、独自のネットワーク設定を持つアプリは、この設定を無視する場合があります。個別にプロキシを設定するか、TUNの利用を検討してください。クライアントを終了した後にブラウザーも接続できなくなった場合は、停止したポートを指すプロキシ設定がOSに残っていないか確認します。
05 / 接続情報とファイル
インポートに成功しただけでは、情報を読み込めたことしかわかりません。現在の設定が有効か、参照先がそろっているか、出口が実際に使えるかも確認してください。
指定したURLからプロキシ情報や設定一式を取得し、定期的に更新する仕組みです。取得内容や形式は配布元によって異なります。完全なClash設定には通常、ノード、プロキシグループ、ルールが含まれますが、ノードだけのサブスクリプションは設定全体としてそのまま有効にできるとは限りません。URLに認証情報が含まれる場合があるため、スクリーンショットやログを共有する前にURL全体を隠してください。更新後は、この設定が現在有効になっていることも確認します。
コアが接続するプロキシサーバーの設定で、通常はプロトコル、サーバーアドレス、ポート、認証情報が含まれます。ノード名は表示用のラベルにすぎず、地域名や回線名が書かれていても、実際の所在地、速度、利用可否を保証するものではありません。ノードはproxiesに直接記述するか、プロキシプロバイダーから読み込めます。設定ファイルを共有してトラブルを相談する場合は、表示名だけでなく認証情報も削除してください。
クライアントが指定した出口からテスト先へアクセスし、所要時間を記録します。結果には接続、ハンドシェイク、応答待ち時間などが含まれる場合があり、単純なネットワークの往復時間とは限りません。遅延が小さくてもダウンロードが速いとは限りません。テストに成功しても、すべての接続先サイトにアクセスできるとは限りません。ノードを比較するときは、同じテスト先と条件を使ってください。タイムアウトが表示された場合は、ログを確認して接続失敗、名前解決の失敗、テスト先の到達不可を切り分けます。
Clashの設定でよく使われる構造化テキスト形式です。インデント、コロン、リスト記号で階層を表し、インデントにはTabではなくスペースを使います。config.yamlは一般的なファイル名ですが、ファイル内のすべての設定項目が現在のコアに対応するとは限りません。変更後は構文に加え、プロキシグループ名とリソース参照を確認してください。サブスクリプションで管理されるファイルは次回の更新で上書きされる場合があるため、変更を維持するにはクライアントが対応する上書き機能を使います。
proxy-providersでプロキシ項目を個別に読み込み、プロキシグループからuseで参照する仕組みです。設定一式を含むサブスクリプションとは異なり、出口情報だけを更新しながら、メイン設定のルールやグループ構成を維持できます。ダウンロード後もプロキシ一覧が空の場合は、リソース形式、参照名、フィルター条件を確認してください。ルールセットのファイルをプロキシプロバイダーに指定しないよう注意しましょう。