Clash Meta
トラブルシューティング
利用状況に合わせて問題を探せます。まずカーネル、現在の設定、通信の取り込み方法を確認し、サブスクリプション、ルール、ネットワークログを調べましょう。項目をクリックすると対処方法が表示されます。
初めて使う方は入門ガイドをご覧ください。手順に沿って問題を切り分けるには、トラブル対処ドキュメントをご利用ください。
基本知識
カーネル、クライアント、プロキシサービスの違いと、モード切り替えの範囲を確認します。
Clash Meta、mihomoカーネル、GUIクライアントの違いは?
Clash Metaは、このカーネルプロジェクトで以前使われていた名称で、現在はmihomoとして開発・保守されています。カーネルはプロキシプロトコル、ルール判定、DNS、接続処理を担当します。GUIクライアントはカーネルとは別に、サブスクリプション管理、ポリシー選択、システムプロキシ、ログ表示などの機能を提供します。クライアントの名称が違っても、使用しているカーネルが異なるとは限りません。設定の互換性を確認する際は、まず概要画面や起動ログでカーネル名とバージョンを確認し、該当するドキュメントを参照してください。GUIを更新してもカーネルが同時に更新されるとは限らず、クライアントによってはカーネル管理画面から別途更新が必要です。
Clash Metaのクライアントをインストールしたのに、なぜサブスクリプションが必要なの?
クライアントは接続や通信の振り分けを行いますが、それ自体がプロキシサービスというわけではありません。通常、利用可能な設定にはプロキシサーバーのアドレス、ポート、認証情報と、それらを参照するポリシーグループやルールが必要です。サブスクリプションはこうした設定を配布する方法の一つで、実際に利用するサービスの提供元から取得します。自分でサーバーを構築している場合は、設定ファイルを自作することもできます。読み込む前に、サブスクリプションの形式がClashまたはmihomoに対応していることを確認し、URLはログイン情報と同様に安全に保管してください。認証情報がクエリパラメーターに含まれる場合もあるため、URL全体を公開ログやスクリーンショット、オンライン変換サイトに貼り付けないでください。
ルールモード、グローバルモード、DIRECTモードはどう使い分ける?
普段の通信振り分けには、通常ルールモード、つまりmode: ruleを使います。接続はrulesを上から順に照合し、一致したルールに対応するポリシーへ渡されます。グローバルモードでは、カーネルが処理する接続をグローバルポリシーに送りますが、利用可能なプロキシの選択は必要です。カーネルを経由しないアプリの通信まで自動的に取り込むわけではありません。DIRECTモードでは、カーネルが処理する接続を宛先へ直接送ります。ルールが原因かどうかを調べるため、一時的にグローバルモードへ切り替える方法もありますが、テスト後は元のモードに戻してください。モードの設定と通信を取り込む方法は別のものです。グローバルモードにしてもシステムプロキシやTUNの代わりにはならず、すべてのUDP通信がプロキシ経由になるとは限りません。
Clash for Windowsの更新終了後も、既存の設定は移行できる?
基本的なYAML設定の多くは移行できますが、元のサブスクリプション、クライアント側の上書き設定、スクリプトは分けて考える必要があります。まずサブスクリプションURLを控え、ローカル設定、自作ルール、ポリシーグループ名をバックアップしてから、保守が続いているmihomo対応クライアントをインストールしてください。元のサブスクリプションを読み込んで基本的な接続を確認し、その後、上書き設定を一つずつ戻します。旧クライアントのスクリプトAPI、設定フォルダー、システム連携機能は互換性がない場合があるため、プログラムのフォルダーを丸ごとコピーしないでください。移行後は旧クライアントのシステムプロキシ、バックグラウンドサービス、自動起動を無効にし、カーネル同士のポート競合やルート設定の重複を防ぎます。
インストールと設定
サブスクリプションの取得からカーネルの起動まで、応答内容、待ち受けポート、システム権限を確認します。
サブスクリプションを読み込めない・更新後に使えなくなったとき、最初に確認することは?
まず設定画面またはサブスクリプション管理画面から手動で更新し、応答ステータスとエラー本文を確認します。401や403は認証、権限、アクセス制限に問題があることが多く、404の場合はURLを確認します。タイムアウトした場合は、まずサブスクリプションのドメインに接続できるか調べてください。ダウンロードは成功しても解析エラーになる場合、取得した内容がログイン画面やエラーページではないか、Clashの設定形式かどうかを確認します。更新前に使える設定をバックアップし、何度も削除して作り直すのは避けてください。現在のプロキシ経由でサブスクリプションを更新する設定になっていないかも確認しましょう。プロキシが使えない場合は、ネットワークの状況に応じてDIRECT接続で更新し、サービス提供元に有効期限を確認してください。
mixed-port: 7890とは?ポートが競合したときの対処法
mixed-portは、HTTPとSOCKSのプロキシ接続を同時に受け付ける混合リスニングポートです。7890はよく使われる値ですが、固定ではありません。アプリにプロキシを手動設定する場合は、クライアントが実際に待ち受けているアドレスとポートを入力します。ローカル接続では通常127.0.0.1を指定します。起動ログにaddress already in useと表示されたら、ほかのプロキシクライアントや残存するカーネルプロセスを終了し、ポートの使用状況を確認してください。空いているポートに変更することもできますが、システムプロキシ、ブラウザー拡張機能、コマンドラインの環境変数も合わせて変更する必要があります。サブスクリプション内のポートをクライアントが上書きする場合もあるため、設定画面と起動ログに表示される最終値を確認してください。
TUNモードで権限不足と表示されるとき、サービスの動作を確認するには?
TUNは仮想ネットワークインターフェースの作成とルート設定の変更を行うため、通常は管理者権限またはクライアントが提供する特権サービスが必要です。Windowsではサービスモードがインストールされ、起動していることを確認してから、クライアントの案内に従って権限を許可します。macOSではヘルパープログラムをインストールし、システムの許可を完了してください。Linuxではサービスアカウントに必要なネットワーク権限があるか確認します。TUNのスイッチがオンになっているだけで通信が取り込まれたと判断せず、インターフェースの作成とルート設定に関するログも確認してください。デバイスが使用中と表示された場合は、ほかのVPNや仮想ネットワークアダプターのサービスを停止します。権限を戻したらカーネルを再起動して試してください。ファイアウォールを無効にしたり、コントロールインターフェースの公開範囲を広げたりしてエラーを回避することはおすすめしません。
config.yamlを編集したらエラーに。YAMLのインデントミスを見つける方法
エラーが出たファイルはそのまま残し、ログに記載された行番号と前後の行を確認します。YAMLのインデントにはスペースを使い、タブは使いません。同じ階層のキーは位置を揃え、リスト項目にはハイフンを使います。キーのコロンと値の間にはスペースを入れてください。行番号はパーサーが読み進められなくなった位置を示すことが多く、実際の原因は一つ前の行にある場合もあります。カーネルを直接実行できる場合は、mihomo -t -f config.yamlで設定をテストできます。実際の設定ファイルへのパスを指定してください。ポリシーグループやルールが参照している名前が存在することも確認します。サブスクリプション管理型のクライアントでは上書き設定の項目を使い、ダウンロードキャッシュを直接編集しないでください。次回更新時に変更が消えることがあります。
使い方のヒント
カスタムルール、自動起動、複数デバイスでの同期、DNSの経路を確認します。
Clashのカスタムルールはどこに追加する?設定しても反映されない原因
ルールモードではrulesの順にルールを照合します。カスタムルールは、先に一致する可能性のある範囲の広いルールより前に置いてください。特に最後のMATCHより後に追加しても適用されません。たとえばDOMAIN-SUFFIX,github.com,PROXYを使うには、PROXYという名前のポリシーまたはプロキシグループが必要です。名前は大文字・小文字も区別されます。サブスクリプション更新で変更が上書きされないよう、クライアントのルール上書き機能やルールの先頭に追加する設定項目を使いましょう。保存後に設定を再読み込みし、接続の詳細画面で実際に適用されたルールとポリシーの経路を確認します。確立済みの長時間接続は以前の経路を使い続ける場合があるため、テスト前に該当する接続を閉じて再アクセスしてください。ドメインルールでは、アプリにIPアドレスが直接指定された通信を判定できません。
Clashを自動起動してもネットにつながらないとき、確認する設定は?
クライアントの自動起動、カーネルの起動、システムプロキシの有効化、TUNの有効化はそれぞれ別の状態です。まずシステムを再起動し、クライアントがバックグラウンドで起動しているか、現在の設定が読み込まれているか、カーネルがポートの待ち受けに成功しているかを確認します。次にシステムプロキシまたはTUNが復元されているか確認してください。サービスモードの場合は、システムサービスの起動方式と実行状態も確認します。画面上でクライアントが起動していても、特権サービスがまだ起動していない場合があります。ログイン時にネットワークが未接続だと、サブスクリプションの更新や接続テストに失敗することがあります。ネットワークが使えるようになってから再試行してください。複数のクライアントを同時に自動起動しないでください。クライアントを切り替えるときは、旧プログラムが残したプロキシ設定やサービス設定を先に削除します。
パソコンとスマートフォンで同じサブスクリプションと設定を使える?
同じサブスクリプションを利用することはできますが、サービスで許可されているデバイス数と同時接続数をまず確認してください。プロキシ一覧やルールは共有しやすい一方、TUN、DNSの待ち受けアドレス、インターフェース名、ファイルパス、外部コントロールインターフェースはデバイスごとの上書きが必要な場合があります。共通設定はサブスクリプション管理に任せ、ポートやシステム連携の設定は各デバイスのクライアントに分けておくのがおすすめです。ファイルを同期する際は、認証情報付きのサブスクリプションURLを公開しないでください。コントロールインターフェースの認証情報も公開リポジトリに登録しないようにします。デバイスを変更したら、ポリシーグループの選択が引き継がれているか確認してください。同じ設定ファイルでも、OSのネットワーク機能、VPNの権限、バックグラウンド動作の違いによって、通信の挙動が異なることがあります。
ClashのDNSリークを確認する方法は?fake-ipなら全通信を取り込める?
fake-ipは仮想アドレスとの対応付けによってドメイン情報を保持しますが、すべてのDNSリクエストが自動的にカーネルへ送られるわけではありません。まずdns.enableが有効か確認し、システムDNS、TUNのDNSリダイレクトルール、ブラウザーやアプリで暗号化DNSが個別に有効になっていないかを調べます。カーネルログとシステムのネットワーク設定を照らし合わせて、DNSの問い合わせ経路を確認してください。オンライン検査ページに表示されるリゾルバーの場所は、あくまで手がかりです。DNSを変更した後は、システムとブラウザーのキャッシュを消去し、接続し直します。検査結果が想定と違っても、nameserverを手当たり次第に追加しないでください。どのリクエストをシステムで解決し、どれをカーネルに渡すのか、上流DNSへの接続がどの経路を使うのかを先に確認しましょう。
トラブル対処
症状を比較してテストし、設定は一度に一つだけ変更します。元に戻せる設定を残しておきましょう。
ノードのテストがタイムアウト。サーバーの停止か設定の問題か?
テストのタイムアウトは、指定されたテストリクエストが制限時間内に完了しなかったことを示すだけで、サーバーの停止を断定できるものではありません。まずシステム時刻が正確か、サブスクリプションが最新かを確認し、ログでドメインの名前解決失敗、接続拒否、ハンドシェイク失敗、認証エラーを調べます。同じ設定を別のネットワークで試すと、ローカルネットワークの制限か接続先の問題かを切り分けやすくなります。同じポリシーグループ内の別プロキシに切り替えて比較する方法もあります。速度テストだけ失敗し、実際のアクセスに問題がない場合は、テスト先のURLとタイムアウト設定を確認してください。サービス提供元に問い合わせる際は、エラーの種類と発生時刻を伝え、サーバーの認証情報は隠します。タイムアウトのスクリーンショットだけを送るのは避けてください。
システムプロキシを有効にしたのに、ターミナルや一部のアプリが直接接続するのはなぜ?
システムプロキシは、その設定に従うアプリにプロキシアドレスを通知するもので、通信を透過的に取り込む機能ではありません。ターミナルの一部のプログラムはHTTP_PROXY、HTTPS_PROXY、ALL_PROXY環境変数を参照しますが、アプリ内のプロキシ設定だけを使うプログラムもあります。ブラウザー拡張機能がシステム設定を上書きする場合もあります。まずカーネルが動作中であることを確認し、curl -I -x http://127.0.0.1:7890 https://example.comでプロキシを明示してテストします。ポートは実際の待ち受けポートに置き換えてください。明示的なプロキシ接続が成功する場合は、アプリがどのプロキシ設定を使っているか、除外リストがないかを確認します。システムプロキシに従わないアプリの通信を取り込みたい場合はTUNモードを検討できますが、ルート、権限、ほかのVPNとの競合も確認してください。
Microsoft Storeアプリが接続できないとき、UWPのループバック制限を解除するには?
AppContainerで分離された一部のアプリは、ローカルのループバックプロキシに直接アクセスできません。ブラウザーでは接続できるのに特定のアプリだけ失敗する場合は、ループバック制限を確認します。まず対象アプリがローカルプロキシを使っていることを確認し、クライアントのループバック許可ツールを使うか、管理者ターミナルでCheckNetIsolation LoopbackExempt -sを実行して現在の許可リストを確認してください。手動で追加する場合は、CheckNetIsolation LoopbackExempt -a -n=の後に対象アプリのパッケージファミリー名を指定します。スタートメニューに表示される名前ではありません。必要なアプリだけを許可し、すべてのアプリを一括で許可しないでください。代替手段としてTUNによる通信の取り込みも試せますが、有効かどうかはアプリの通信方式やルート設定によります。
Androidで画面ロック後に切断される・電池消費が多いとき、バックグラウンド動作を確認する方法
まずシステム設定のアプリ管理からクライアントを選び、バッテリー使用量、バックグラウンド動作、自動起動の権限を確認してください。メニュー名はメーカーやOSによって異なります。画面ロック後に切断される場合はバックグラウンド動作を許可し、VPN接続が維持されているか、ほかのVPNアプリが接続を引き継いでいないかを確認します。電池消費が多い場合は、頻繁な再接続、サブスクリプションの繰り返し更新、デバッグログの出力がないかを調べ、不要な接続テストを止めたときの変化も比較してください。省電力設定を一度にすべて変更せず、一項目ずつ調整して、似たネットワーク条件で様子を見ます。電波が弱い場合やテザリング中、多数のバックグラウンドリクエストがある場合も電池を消費します。クライアントの電池使用率だけでカーネルの異常を判断しないでください。
問題の切り分けを続ける:症状別のトラブル対処手順を見る →