プロジェクトの沿革と設定形式
Clashは当初、ルールベースのプロキシコアとYAML設定を中心にエコシステムを築き、その後、さまざまな派生プロジェクトやGUIクライアントが登場しました。元のプロジェクトと後継プロジェクトではメンテナンス状況が異なります。古いクライアント向けの手順を、すべての新しいクライアントにそのまま当てはめることはできません。mihomoはClash Metaプロジェクトの技術的な流れを引き継いでいます。動作の詳細は、現在のプロジェクトドキュメントとクライアントへの実装状況を確認してください。過去の記事を参照するときは画面の画像だけでなく、設定項目の意味と対象コアを確かめましょう。
設定ファイルでは、インデント、リスト、参照関係も解析に影響します。変更前に動作するコピーを保存し、一度に一つの設定項目だけを変更してください。解析エラーが発生したら、まずログに示された項目と周辺の記述を確認し、その項目が使用中のコアでサポートされているか調べます。ファイルを読み込めても、確認できたのは構文上のチェックに通ったことだけです。ノードへの接続、ルールの適用、システム通信の取り込みは別々に確認する必要があります。
GUIクライアントとプロキシコア
GUIクライアントは設定の表示、プロセスの管理、システム機能との連携を担い、コアはルールの解析、接続の確立、DNS処理を行います。それぞれ別に更新される場合があるため、GUIを変更してもコアの動作が変わるとは限りません。コアを更新してもサブスクリプションの取り込み画面が変わらない場合があります。クライアントを選ぶ際は、対応プラットフォームやインストール方法に加え、サービスモード、オーバーライド機能、ログの確認場所、設定のエクスポート方法も確認してください。問題の特定や設定の移行に役立ちます。
プロジェクトごとに公開範囲やライセンス条件を確認してください。同じコアを使っていても、アプリ全体が同じライセンスとは限りません。mihomoのリポジトリではソースコードとライセンス情報を公開しており、機能の実装、問題の議論、リリース履歴を確認できます。当サイトではダウンロード先と中国語の操作ガイドをまとめています。各プロジェクトのリリース、ストアでの配布、サブスクリプションサービスは、それぞれのメンテナーが管理しています。
更新対象を3つに分けて考える
クライアントの更新はアプリ本体、コアの更新はプロトコルやネットワーク動作、サブスクリプションの更新はサービス提供元のノードや設定に関わります。ノードに接続できない場合は、すぐにクライアントを再インストールするのではなく、サブスクリプションの期限と、更新後の設定が選択されているかを確認してください。未対応のプロトコルや設定項目がある場合は、コアの対応状況を調べます。更新前に変更内容を読み、現在使える設定を保存してください。更新後は待ち受けポート、通信の取り込み設定、プロキシグループの選択を確認し、既定値の変更が環境に影響していないか確認しましょう。
サブスクリプションには、サービス提供元が設定したDNS、ルール、プロキシグループが含まれることがあります。ローカルで直接編集した内容は、次の更新で置き換わる可能性があります。長期的に保持したいルールは、クライアントが対応するオーバーライドやマージ機能に追加し、適用順序も確認してください。サブスクリプションファイル全体を公開の掲示板にアップロードしないでください。問題を報告するときは、必要な情報を残して設定の一部を抜粋し、OS環境と関連するエラー行を添えましょう。
接続の確認とログの記録
まずコアが待ち受けていることを確認し、次にアプリのリクエストが接続一覧に表示されるかを調べます。最後に適用されたルールと実際の接続先を確認してください。ノードを次々に切り替えるより、問題箇所を特定しやすくなります。レイテンシテストは指定されたアドレスに対して行われるため、成功しても実際のサービスでの動作を保証するものではありません。Webサイトを開けても、すべてのアプリが同じ経路を使っているとは限りません。コマンドラインツールを使う場合は、現在のターミナルにプロキシ環境変数が設定されているか確認し、ブラウザーと同じ方式で通信を取り込んでいるか明確にしてからテストしてください。
デバッグログにはアクセス先のドメイン、接続先アドレス、ローカルパスが含まれる場合があります。共有前に、問題と関係のない情報を削除してください。調査後は日常利用に適したログレベルに戻し、不要なリクエストが長期間記録されないようにしましょう。コントロールポートと混合プロキシポートは用途が異なります。前者は管理インターフェース用、後者はプロキシリクエストの受付用です。管理用アドレスをブラウザーのプロキシ設定に入力しないでください。既定ポートは一般的な設定値なので、実際に待ち受けているポートはクライアントの表示を確認してください。