Clashのよくある質問
サブスクリプションのインポート、プロキシ接続、インターネット接続のトラブルを解説。まずリクエストがコアに届いているか確認し、その後ルール、ノード、DNSを調べます。設定変更は一度に1つずつ行ってください。
質問をクリックすると回答が開きます。クライアントによって設定名が多少異なる場合があるため、回答には照合用の設定項目も記載しています。初期設定は使い始めるためのガイドを、設定項目や上書き方法は応用設定マニュアルをご覧ください。
基礎知識
クライアント、コア、プロキシモードの違いを理解し、インストール完了やテスト成功だけで、すべての通信が処理されていると判断しないようにしましょう。
Clash、mihomo、GUIクライアントの違いは?
Clashはルールベースのプロキシツールのプロジェクト名で、mihomoは関連する設定体系を引き継ぎ、拡張したコアです。Clash Verge RevやFlClashなどのGUIクライアントは、サブスクリプションのインポート、プロキシグループの選択、システム設定を担当します。画面が起動しても、コアが設定を正常に読み込んだとは限りません。設定項目がサポートされない場合は、クライアントの「概要」またはコア設定で使用中のコアを確認し、ログの解析エラーを調べてください。チュートリアルにあるmihomoの設定項目が、旧バージョンのClashコアでも使えるとは限りません。
クライアントをインストールしたのに、サブスクリプションや設定ファイルが必要なのはなぜ?
クライアントは設定を読み込み、通信を中継します。インストールしただけで利用可能なプロキシサーバーが使えるようになるわけではありません。サブスクリプションには通常、サーバー情報、プロキシグループ、ルールが含まれますが、ノード情報だけの場合はクライアント側でルールを生成する必要があります。利用中のサービス提供元から、現在のコアに対応した設定を入手し、設定画面からインポートして有効にしてください。ログインページのURLをサブスクリプションURLとして使ったり、公開コメント欄にサブスクリプションURLを投稿したりしないでください。URLに含まれる認証情報から、第三者に同じ設定を読み取られるおそれがあります。
ルール・グローバル・ダイレクトの各モードはどう使い分ける?
通常の利用ではルールモードをおすすめします。対応する設定はmode: ruleで、rulesの順に通信の経路が決まります。グローバルモードは、コアに入った通信をグローバルプロキシグループに送るため、短時間の比較テストに向いています。ただし、すべてのシステムアプリの通信を処理するとは限りません。ダイレクトモードでは、コアに入った通信が宛先へ直接接続しますが、システムプロキシが無効になるわけではありません。モードを切り替えたらテスト用の接続を新しく確立し、接続画面で実際の経路を確認してください。既存の接続は、確立時のルールを引き継ぐ場合があります。
システムプロキシとTUNモードの違いは?
システムプロキシは主にOSのHTTPプロキシ設定を変更します。設定を参照するかどうかはアプリ次第で、コマンドラインツールやゲーム、独自のネットワークスタックを使うアプリは迂回することがあります。TUNは仮想ネットワークインターフェースとルーティングを使って、より多くのIP通信を処理します。設定項目はtun.enableで、OSの許可またはサービス権限が必要です。まずシステムプロキシで基本動作を確認し、必要に応じてTUNを有効にしてください。TUNの対象範囲はルーティング、除外ルール、他のVPNにも左右されます。スイッチがオンになっているだけで、すべての通信がコアに入っているとは判断できません。
ノードの遅延テストは成功するのに、Webサイトが開けないのはなぜ?
遅延テストで確認できるのは、通常、ノード経由で指定されたテスト先にアクセスするまでの時間です。目的のWebサイト、すべてのプロトコル、現在のルールが利用できるとは限りません。プロキシ画面で対象のプロキシグループにテスト済みのノードが選択されているか確認し、Webサイトを開いて接続画面で適用ルールと経路を確認してください。通信がクライアントに届いていない場合は、システムプロキシまたはアプリ側のプロキシ設定を確認します。通信が届いているのに失敗する場合は、DNS、TLS、接続タイムアウトのログを確認してください。遅延の数値だけを見て設定を何度も変えるのは避けましょう。接続先のサービスが、その出口を制限している可能性もあります。
用語の解説:コア、プロキシグループ、ネットワークスタック。
インストールと設定
設定形式、アカウント状況、端末の権限を確認しましょう。まずサブスクリプションを読み込み、追加の許可が必要な機能はその後に有効にします。
サブスクリプションをインポートできない、または形式エラーが表示される場合の対処法は?
設定画面でリモート設定を追加し、サブスクリプションURLを省略せずに貼り付けます。前後に空白がないか、チャットアプリでURLが途中までしかコピーされていないかも確認してください。ログにYAML解析エラーやプロキシ情報の欠落が出る場合、有効な設定ではなく、ログインページ、エラーページ、非対応形式のサブスクリプションを取得している可能性があります。サービス提供元にClash形式またはmihomo形式のどちらを選ぶべきか確認し、再度インポートしてください。Base64形式のノードURLだけでは、完全なYAML設定として使えません。調査用にエラー行番号は残しつつ、スクリーンショットを共有する前にサブスクリプションURLとサーバーの認証情報を隠してください。
サブスクリプションが無効になった、または更新後にノードが減った場合、まず何を確認する?
まずサービス提供元のアカウントページで、契約状況、サブスクリプションURLの変更、ノードの更新を確認し、クライアントの設定画面から手動で一度更新してください。HTTP 401や403は認証またはアクセス制限、404はURLの変更が原因の可能性があります。更新ボタンを何度も押しても解決しないことがあります。更新後は、実際に有効になっている設定が対象のものか、クライアントでノードの絞り込みが設定されていないかを確認してください。認証情報を含むサブスクリプションを、出所不明の変換サービスに入力しないでください。ローカルに使えるバックアップがある場合は、上書き前に保存しておきましょう。
混合ポートの設定場所と、アプリに入力するアドレスは?
混合ポートは通常、クライアントの設定画面にあるポートまたはプロキシ設定で確認できます。設定項目はmixed-portです。7890はよくある例ですが、すべてのクライアントで固定されているわけではありません。変更後は設定を保存し、必要に応じてコアを再読み込みしてください。HTTPまたはSOCKS5プロキシを手動設定できるローカルアプリでは、127.0.0.1と実際の混合ポートを入力し、アプリが求めるプロトコルを選択します。ポートが使用中と表示された場合は、クライアントの二重起動を終了するか、空いているポートに変更してください。アプリ側のプロキシ設定も更新し、ポートが食い違わないようにします。
TUNを有効にすると権限不足や仮想ネットワークインターフェースの作成エラーが出る場合は?
まずTUNをオフにし、クライアントの設定でサービスモードがインストールされ、起動しているか確認してください。Windowsのデスクトップクライアントでは通常、補助サービスのインストールと管理者による許可が必要です。macOSではクライアントの案内に従ってネットワーク関連の権限を許可します。LinuxではTUNデバイスの作成とルーティング管理に必要な権限がサービスにあるか確認してください。クライアント全体を常に管理者権限で実行することだけを解決策にしないでください。ログの権限エラーやデバイスエラーを確認し、クライアントの説明に従ってサービスを修復します。仮想ネットワークインターフェースやルートの競合を調べるため、他のVPNも一時的に停止してください。
macOSでアプリを開けないと表示された場合、どう判断する?
まずインストーラーのアーキテクチャが合っているか確認します。Apple Silicon搭載Macでは通常ARM64、Intel搭載Macではx64を選び、ダウンロードと展開が正常に完了していることも確認してください。開発元を検証できないという警告が表示された場合は、配布元を確認してから「システム設定」の「プライバシーとセキュリティ」を開き、そのアプリに「このまま開く」などの選択肢があるか確認して、案内に従って許可します。アプリが破損している場合と権限の警告は別のエラーなので、同じコマンドで対処できるとは限りません。1つのクライアントを起動するために、システム全体のセキュリティ機能を無効にしないでください。解決しない場合はOSのバージョンと警告の全文を記録し、プロジェクトのインストール手順を確認してください。
使い方のヒント
起動、切り替え、上書き設定はそれぞれ動作確認が必要です。実際に有効な設定と、新しく確立した接続を基準に確認してください。
OS起動時の自動起動と、自動接続は同じ設定?
別の設定です。OS起動時の自動起動はクライアントのプロセスを起動するだけです。システムプロキシ、TUN、前回の設定を自動で有効にするかどうかは、クライアントごとの起動オプションによります。設定画面で自動起動を有効にした後、システムプロキシ、サービスモード、設定の復元オプションを個別に確認してください。Windowsではタスクマネージャーの「スタートアップ アプリ」、macOSではシステム設定の「ログイン項目」で確認できます。再起動後は、まずコアが正常に動作していることを確認してからプロキシの状態を確認します。クライアントが起動していないのにシステムに古いプロキシ設定が残っていると、ブラウザーが一時的にインターネットへ接続できないことがあります。
ノードを切り替えた後、接続が新しいノードを使っているか確認するには?
プロキシ画面で対象のプロキシグループを切り替えたら、テスト用のページを開き直すか、接続画面で対象アプリの既存接続を切断し、新たに接続させてください。既存のTCP接続や一部のセッションは元の経路を使い続ける場合があるため、ページを一度再読み込みするだけでは比較できないことがあります。接続の詳細でルール、プロキシ経路、宛先ドメインを確認し、想定したグループを通っているか確認してください。設定にurl-testやfallbackの自動選択グループがある場合、グループの種類によって手動選択できないことがあります。関係のないグループを切り替えるのではなく、サイトへの接続を実際に制御しているグループを確認してください。
特定のWebサイトだけを直接接続し、他のサイトには影響させない方法は?
ルールモードのまま、クライアントのルール上書きまたはローカル上書き機能に、対象ドメインのルールを追加します。例:DOMAIN-SUFFIX,example.com,DIRECT。先に適用される可能性のある包括的なルールやMATCHより前に配置してください。example.comは構文の例なので、実際のドメインに置き換えます。Webページからログイン、画像、APIなど別のドメインにリクエストする場合もあるため、接続画面で個別に確認してください。永続化できる上書き機能を使いましょう。サブスクリプションから生成されたファイルを直接編集するだけでは、次回の更新で変更が上書きされることがあります。
スマートフォンや別のPCから、このPCのプロキシを使う方法は?
信頼できるLAN内でLAN接続を許可します。対応する設定はallow-lan: trueです。続いて、待ち受けアドレスとシステムのファイアウォールで、同じネットワークからのアクセスが許可されていることを確認してください。他のデバイスには、このPCのLAN内IPアドレスと実際の混合ポートを入力します。127.0.0.1はデバイスごとにそのデバイス自身を指すため、入力しないでください。authenticationを設定し、接続元のアドレスも制限することをおすすめします。共有を使わなくなったら必要に応じて無効にしてください。ルーターでプロキシポートをインターネットに公開しないでください。スマートフォンのアプリがWi-Fiプロキシを使うかどうかは、アプリの仕様によります。
サブスクリプションの更新でルールの変更は上書きされる?ローカル設定を保持する方法は?
リモートサブスクリプションに対応するYAMLファイルを直接編集すると、次回の更新で変更が上書きされることがあります。rules、dns、tunなど、継続して使う設定はクライアントの上書き、マージ、スクリプト機能に記述し、その機能が適用される順序も確認してください。ルール一覧への追加か置換か、MATCHの前に挿入されるかは、クライアントによって異なります。更新後はエディターの内容だけでなく、実際に有効な設定と接続ログを確認してください。変更前に元に戻せるローカルコピーを保存しておきましょう。トラブルの原因を切り分ける際は上書きを一時的に無効にし、サブスクリプションとローカル変更のどちらに問題があるか確認できます。
設定手順:OS起動時の自動起動、プロキシグループとノードの選択。
トラブル対処
基本ネットワーク、アプリの接続方法、適用ルール、プロキシの出口の順に確認します。タイムアウト、認証エラー、DNSエラーはそれぞれ分けて対処してください。
Clashでインターネットに接続できない場合の確認手順
まずシステムプロキシとTUNをオフにし、通常は直接接続できるWebサイトに基本ネットワークからアクセスできるか確認します。失敗する場合はWi-Fi、ゲートウェイ、システムに残ったプロキシ設定を確認してください。基本ネットワークに問題がなければ、クライアントを1つだけ起動し、設定の読み込み、コアの動作、プロキシグループ内の利用可能なノードを確認します。次に、接続画面にリクエストが表示されているか確認してください。表示されない場合はアプリのプロキシ設定とルーティングを調べ、表示される場合は適用ルール、DNS、接続エラーを確認します。モード、ノード、DNSを同時に変更すると原因を特定しにくくなるため、一度に1つだけ設定を変更して再テストしてください。
ノードがタイムアウトし続ける場合、サブスクリプション・ネットワーク・ノードの問題をどう切り分ける?
まずサブスクリプションの更新が成功し、アカウントが有効であることを確認してから、同じサブスクリプション内の複数のノードをテストします。一部のノードだけタイムアウトする場合は、ノードのメンテナンスや接続先による制限を優先して確認してください。すべて失敗する場合は、システム時刻、サーバードメインの名前解決、利用中のネットワークで接続が遮断されていないかを調べます。信頼できる別のネットワークに切り替えて比較する方法もありますが、タイムアウトを単純にポートエラーと決めつけないでください。認証エラー、証明書エラー、接続タイムアウトは原因が異なるため、ログにあるエラーのキーワードをそのまま記録します。遅延テストだけ失敗して実際のアクセスは正常な場合は、テスト先がその出口から利用できるかも確認してください。
システムプロキシを有効にしても、ブラウザーやコマンドラインが直接接続するのはなぜ?
まず、システムプロキシのアドレスが現在のクライアントの待ち受けポートを指しているか確認します。次に、ブラウザーの拡張機能、組織のポリシー、独自のプロキシ設定によって上書きされていないか確認してください。コマンドラインツールはシステムプロキシを参照しない場合があります。curl -I --proxy http://127.0.0.1:7890 https://example.comを使って明示的なプロキシ接続をテストできます。ポートは実際の値に置き換えてください。明示的なプロキシ接続は接続画面に記録されるのに、通常のリクエストは表示されない場合、アプリからプロキシへの接続方法に原因がある可能性が高いです。アプリの説明に従ってプロキシ環境変数を設定するか、TUNの利用を検討してください。コアに届いていないリクエストを直すために、ノードを何度も切り替えるのは避けましょう。
WindowsのUWPアプリでローカルプロキシを使えない場合の対処法は?
AppContainerサンドボックス内で動作する一部のWindowsアプリには、ローカルのループバック接続に制限があります。ブラウザーでは使えるのに対象アプリだけ失敗する場合は、この制限を確認してください。まずアプリが実際にローカルプロキシへ接続しようとしているか確認し、クライアント付属のUWPループバックツールを使って、必要なアプリだけにループバックの除外を設定します。ツールがない場合はパッケージファミリー名を調べ、WindowsのCheckNetIsolationの使い方に沿って設定してください。操作には管理者権限が必要な場合があります。すべてのストアアプリに同じ制限があるわけではなく、除外設定でノードやDNSの問題が直るわけでもありません。すべてのアプリを一律に許可することはおすすめしません。
TUNを有効にした後、DNSの異常やインターネット接続の切断が起きた場合、どの設定項目を確認する?
まずTUNをオフにして接続を復旧し、サービス権限とログを確認します。他のVPNが同時にルートを変更していないことも確認してください。tun.enable、tun.auto-route、tun.auto-detect-interface、dns.enableを確認し、利用中のOSで出力インターフェースの認識とDNSの処理が適切か調べます。dns.enhanced-mode: fake-ipを使う場合、コアがドメインの対応付けと後続の接続を正しく処理する必要があります。特定のアプリで互換性の問題がある場合は、状況に応じてfake-ip-filterを調整してください。設定を変更したら再読み込みし、該当アプリのDNSキャッシュを消去します。複数のDNS設定をむやみにコピーして混在させないでください。接続が復旧したら、TUNの機能を1つずつ有効にします。
設定全体を確認する場合は応用設定マニュアルをご覧ください。現在正常に動作している設定を、見慣れない設定でそのまま上書きしないでください。