サブスクリプション #
Subscriptionサブスクリプションは、ノードや設定を取得するためのリモート接続先で、通常はURLとして提供されます。ノード一覧だけを含むものもあれば、ルール、プロキシグループ、DNS設定を含むものもあります。インポート前に、現在のクライアントが形式に対応しているか確認してください。更新で通常新しくなるのは内容だけで、サービスの有効期限は延長されません。URLに認証情報が含まれる場合があるため、スクリーンショットや問い合わせではURL全体を隠してください。
CLASH / 設定用語インデックス
まず、設定の入手先、接続の出口、スマホからクライアントへ通信を渡す方法の3点を整理しましょう。よく使う用語を5つのカテゴリに分けて解説します。見出し横のリンクから各項目に移動できます。
初めて設定する場合は、サブスクリプション、ノード、ルール振り分けから確認しましょう。画面ロック後に切断される場合は、モバイルOSの仕組みを確認してください。手順を追って操作する場合は、使い方ガイド →をご覧ください。
サブスクリプションが設定内容を提供し、コアが設定を実行し、クライアントが画面とシステム連携を担います。問題が起きたら、まずどの層で発生しているかを確認しましょう。
サブスクリプションは、ノードや設定を取得するためのリモート接続先で、通常はURLとして提供されます。ノード一覧だけを含むものもあれば、ルール、プロキシグループ、DNS設定を含むものもあります。インポート前に、現在のクライアントが形式に対応しているか確認してください。更新で通常新しくなるのは内容だけで、サービスの有効期限は延長されません。URLに認証情報が含まれる場合があるため、スクリーンショットや問い合わせではURL全体を隠してください。
ノードは、サーバーアドレス、ポート、プロトコル、認証情報などを含むプロキシ接続設定です。一覧に表示される名前はラベルにすぎず、出口の所在地や回線品質を保証しません。インポートできたことは設定が認識されたことを示すだけです。利用できるかどうかは、認証情報、ネットワーク接続、サーバーの状態も確認する必要があります。
クライアントに表示されるノードの遅延は、多くの場合、プロキシ経由でテスト先に接続するまでの時間で、一般的なICMP Pingとは限りません。テスト先、ハンドシェイク、現在のネットワークによって結果が変わるため、条件の異なる数値をそのまま比較することはできません。遅延が小さくてもダウンロードが速いとは限りません。タイムアウトする場合は、まずテスト先にアクセスできるか確認し、その後ノードを調べてください。
mihomoはClash.Metaプロジェクトから発展したプロキシコアで、設定の読み込み、接続の確立、ルール振り分けを担います。スマホのボタン、サブスクリプション管理、システムの許可設定は通常、外側のクライアントが提供します。画面のバージョンとコアのバージョンを混同しないでください。設定項目が使えるかどうかは、クライアント名だけで判断せず、実際のコアの対応状況を確認しましょう。
YAMLはClash設定によく使われるテキスト形式で、インデントで階層を表し、リストでノードやルールをまとめます。編集にはスペースを使い、同じ階層のインデントをそろえてください。タブをインデントに混ぜず、キーの重複にも注意しましょう。構文が正しいことは最初の確認にすぎません。項目が対応しているか、ポリシー名が存在するかは、コアで設定を読み込む際にも確認が必要です。
プロトコルは、クライアントとサーバーの通信方式を定めます。同じプロトコル名でも、転送方式、セキュリティ、認証の設定を確認してください。接続を試すためだけにプロトコルの種類を変更するのは避けましょう。
Shadowsocksは暗号化に対応したプロキシプロトコルです。一般的な設定項目には、サーバー、ポート、暗号化方式、パスワードがあります。クライアントとサーバーの双方が同じ暗号化方式に対応している必要があり、追加プラグインとその設定が必要な構成もあります。インポート後に接続できない場合は、これらの情報とコアの対応状況を確認してください。SSと表示されているからといって、すべての実装で共通して使えるとは限りません。
VMessはV2Rayエコシステムのプロキシプロトコルで、ユーザー識別にUUIDを使い、さまざまな転送方式と組み合わせられます。ノードによっては、アドレスとポートに加えて、TLS、サーバー名、パス、リクエストヘッダーの指定が必要です。認証に失敗する場合は、スマホの時刻も確認してください。UUIDだけをコピーして転送設定を省略しても、通常は接続を再現できません。
VLESSは軽量なプロキシプロトコルで、プロトコル自体は通信を暗号化しません。実際の運用ではTLSやREALITYなどのセキュリティ機能と組み合わせます。VMessとは別のプロトコルで、設定の種類名だけ置き換えても変換できません。利用可否は、転送方式やセキュリティ設定の組み合わせに対するコアの対応状況にも左右されるため、サーバー側から提供された情報をすべて読み込んでください。
Trojanは通常、TLS接続上で動作するプロキシプロトコルで、認証パスワードとセキュリティ設定を一致させる必要があります。TLSのサーバー名は証明書の検証などに使われ、接続先のアドレスと同じとは限りません。ログに証明書エラーが表示された場合は、端末の時刻、サーバー名、証明書の状態を確認してください。証明書の検証を無効にする方法を、日常的な対処法として使わないでください。
Hysteria 2はQUICベースのプロキシプロトコルで、通常はUDPで通信できる必要があります。現在のネットワークでUDPが制限されていると、ほかの種類のノードが使えても接続に失敗する場合があります。初代Hysteriaへの対応はHysteria 2への対応を意味しません。不明な種類やパラメーターのエラーが出たら、認識できない項目を削除するのではなく、コアのバージョンとサブスクリプションの形式を確認してください。
まず接続に適用するポリシーを決め、そのポリシーがノードを選びます。ルールに指定する宛先名が、設定内に存在する出口名と一致している必要があります。
ルール振り分けでは、ドメイン、接続先アドレスなどの条件に応じて出口を選びます。通常の利用ではルールモードを選びます。ルールは一般に上から順に照合され、最初に一致した項目のポリシーが適用されるため、具体的なルールを広い条件の前に配置してください。末尾のMATCHは、ほかのルールに一致しない接続の受け皿として使われます。Clashのカスタムルールを追加するときは、指定したポリシー名が存在するかも確認してください。
プロキシグループは、複数のノードや別のプロキシグループをまとめ、ルールから参照できる出口を作ります。selectは手動選択、url-testは測定結果に基づく選択、fallbackは利用可能な項目を順に使用、load-balanceは接続ごとに出口を振り分けます。自動選択グループの測定結果は時間とともに変わることがあります。ロードバランスでも、単一のダウンロード接続の速度が合算されるわけではありません。
Clashのグローバルモードでは、すでにコアに入った通常の接続を、個々の振り分けルールに照合せずグローバルポリシーに渡します。スマホ全体の通信を取り込む機能ではありません。通信がクライアントに入るかどうかは、VPN、システムプロキシ、ルーティングの設定によって決まります。ルールの問題を調べる際に一時的にモードを切り替えて比較することはできますが、テスト後は必要なモードに戻してください。
GeoIPは、データベースに記録されたIPアドレスの地域情報をもとに照合し、接続先アドレスに応じた出口の選択などに使われます。結果はデータベースのバージョン、アドレスの割り当て、サービスの配置変更に左右され、正確な地理的位置を示すものではありません。ウェブサイトのコンテンツがどの地域向けかも直接判断できません。ドメインルールとGeoIPルールを併用する場合は、ルールの順序と名前解決の挙動が判定結果に影響します。
ルールセットは、ドメインやアドレスの項目を再利用可能なリストにまとめ、メイン設定が長くなりすぎるのを防ぎます。mihomoでは通常、rule-providersで取得元を定義し、RULE-SETで参照して出口を指定します。リストの内容は、定義した照合タイプとファイル形式に合わせる必要があります。更新に失敗した場合は、ダウンロード先、形式、参照名をそれぞれ確認してください。
名前解決はドメインをどのようにアドレスに変換するかを決め、通信の取り込みは接続がコアに入るかどうかを決めます。関連はありますが、同じ設定ではありません。
DNSはドメイン名をアドレスに変換し、アプリが接続先を特定できるようにします。ClashのDNS設定はドメインの判定や振り分けにも影響しますが、スマホのシステム、ブラウザー、アプリが独自の名前解決を使う場合もあります。変更前に、接続先サイトの名前解決とプロキシサーバーのアドレス解決を区別してください。すべてのDNSサーバーを安易に置き換えると、ノードへの接続までできなくなる場合があります。
Fake-IPは、問い合わせたドメインに仮想IPアドレスを割り当て、後続の接続をコアが元のドメインに関連付けることで、ドメインに基づくルールを適用しやすくする仕組みです。名前解決と接続の両方が適切な経路に入る必要があります。仮想IPアドレスは、ウェブサイトの実サーバーのアドレスではありません。一部のアプリで互換性の問題が起きた場合は、問題に応じて例外を設定してください。まずDNSモード全体を切り替える必要はありません。
DNS漏れとは、名前解決のリクエストが想定外の経路を通ることです。たとえば指定したDNSサーバーに送るはずのリクエストが、ローカルネットワークから直接送信されるケースです。漏れに該当するかどうかは設定の意図と照らし合わせて判断し、診断ページに表示されたDNSサーバーの地域だけで決めないでください。システムのプライベートDNS、ブラウザーのセキュアDNS、クライアントのDNS設定、ルーティングログをあわせて確認しましょう。
TUNは仮想ネットワークインターフェースでIPパケットを受け取り、システムプロキシ設定を参照しない接続もコアに取り込みます。リモートプロキシのプロトコルではなく、実際に取り込まれる範囲はルーティング、権限、プラットフォームの実装によって異なります。デスクトップではサービス権限が必要な場合があります。AndroidではVpnServiceを使って通信の入口を作ることが一般的ですが、画面上の名称がTUNとは限りません。
システムプロキシは、システム設定に従うアプリにプロキシの接続先を提供し、通常はローカルの待ち受けアドレスとポートを使います。アプリが直接接続したり、独自のネットワーク設定を使ったりする場合は、システムプロキシを経由しないことがあります。そのため、ブラウザーで接続できてもほかのアプリが使えるとは限りません。TUNとの違いは通信の取り込み方法であり、ノードの速さではありません。クライアントを終了した後は、手動プロキシの設定が残っていないかも確認してください。
スマホでの接続安定性は、ノードだけで決まるわけではありません。初回の許可設定、バックグラウンド制限、VPNの競合もシステム設定で確認する必要があります。
VpnServiceはAndroidが提供するVPNインターフェースです。クライアントはこれを使ってローカルの仮想インターフェースを作成し、通信を処理します。初回起動時には通常、システムの許可が必要です。ステータスバーにVPNアイコンが表示されても、確認できるのは通信経路が作成されたことだけで、リモートノードが利用可能とは限りません。同じユーザーや仕事用プロファイルでは、通常VPNを複数同時に動かせません。別のVPNアプリを起動すると、現在の接続が置き換わる場合があります。
バッテリー最適化の対象外設定は、アプリへのバックグラウンド時の電池制限を緩和するためのものです。メーカーによって名称は異なります。「制限なし」、自動起動、バックグラウンド実行の許可などが個別に用意されている場合があるため、端末の設定項目を一つずつ確認してください。画面ロック後に切断される場合は、まずこれらの制限を見直しましょう。ただし、対象外にしてもプロセスが終了しなくなるわけではなく、ノードやネットワークの障害も解決しません。
常時接続VPNは、条件が許す範囲で指定したVPNサービスを維持するAndroidの機能です。選択できるかどうかは、クライアントとシステムの対応状況によります。「VPN未接続時に通信をブロックする」設定とは別で、後者を有効にするとサービスの準備が整う前にネットワークが遮断される場合があります。有効にする前に、サブスクリプション、ノード、クライアントが正常に動作することを確認し、システムのVPN設定から制限を解除する方法も把握しておきましょう。
iOSのVPN設定は、システムに保存される接続情報です。対応するクライアントは必要に応じて許可を求め、設定を追加します。サブスクリプションとは用途が異なり、前者はシステムに通信の入口を作り、後者はノードやルールを提供します。企業のデバイス管理に使う構成プロファイルとも別物です。クライアントを削除した後も接続に問題が残る場合は、システムのVPN設定で該当する項目を確認してください。デバイス管理用の項目を誤って削除しないよう注意しましょう。
アプリ別プロキシでは、アプリごとに通信をプロキシ処理に回すかどうかを決めます。Androidのクライアントでは、VpnServiceの許可リストまたは除外リストで設定することが一般的です。これは、コアに入った後のドメインルールによる振り分けとは別の段階です。除外されたアプリの出口は、通常これらのルールでは決まりません。設定時は、リストが「選択したアプリのみプロキシ」なのか「選択したアプリを除外」なのかを確認してください。iOSに同じ設定があるとは限りません。