ノードが Clash の「手足」なら、ルール(rules)はその「脳」です。同じノード群でも、ルールの書き方次第で、快適で正確な体験になるか、至る所で違和感のある体験になるかが決まります。本記事では難解な用語の羅列は避け、ルールの動作原理を整理し、すぐに再利用できる設計アプローチを紹介します。
ルールはどうマッチするのか?
覚えておくべきは一言です——ルールは上から順に照合され、一致した時点で停止する。Clash は現在の接続先を、最初のルールから順に比較し、いずれかが一致すると、指定されたポリシーをただちに実行し、以降のルールは見ません。
この仕組みから重要な帰結が出ます——順序がすべてを決める。より「具体的」なルールを前に、より「広い」ルールを後に置きます。そうしないと、広いルールが先に一致し、後ろの具体的なルールが永遠に適用されません。これは初心者が最も陥りやすい落とし穴です。
1本のルールの形
各ルールの基本形式は タイプ,一致値,ポリシー です。例えば DOMAIN-SUFFIX,google.com,PROXY は、「google.com で終わるドメインはすべて PROXY という名前のポリシーグループ経由」という意味です。ここでいう「ポリシー」は、ポリシーグループ、個別ノード、または組み込みの DIRECT(直結)や REJECT(拒否)のいずれかです。
よく使うルールタイプ早見表
| タイプ | 説明 | 例 |
|---|---|---|
DOMAIN | 完全ドメインの完全一致 | DOMAIN,www.google.com,PROXY |
DOMAIN-SUFFIX | ドメインサフィックス一致(最もよく使う) | DOMAIN-SUFFIX,google.com,PROXY |
DOMAIN-KEYWORD | ドメインにキーワードを含む | DOMAIN-KEYWORD,google,PROXY |
IP-CIDR | IP レンジ一致 | IP-CIDR,192.168.0.0/16,DIRECT |
GEOIP | 国・地域で IP を判定 | GEOIP,CN,DIRECT |
PROCESS-NAME | プロセス名で判定 | PROCESS-NAME,Telegram,PROXY |
MATCH | フォールバック。残りすべてのトラフィック | MATCH,PROXY |
DOMAIN-SUFFIX の使用頻度が最も高いのは、1本のルールでドメイン配下のすべてのサブドメインをカバーできるからです。MATCH は「最終フォールバック」で、必ず最終行に置く。それ以前のルールに一致しなかったトラフィックを処理します。
定番のルール配置順序
実運用では、「プライベートからパブリックへ、具体から広範へ」という順序でルールを組むことをおすすめします:
- LAN とプライベートアドレス:
IP-CIDRで内部ネットワークアドレスを直結し、ローカル機器をプロキシしない; - 拒否すべきドメイン:広告・トラッキング系は
REJECTで直接ブロック; - 明確にプロキシ経由にすべきサービス:
DOMAIN-SUFFIXで海外サービスをプロキシへ; - 明確に直結すべきサービス:国内でよく使うサイトを
DOMAIN-SUFFIXで直結へ; - 地理位置でフォールバック:
GEOIP,CN,DIRECTで残りの国内 IP を直結; - 最終フォールバック:
MATCHでその他すべてのトラフィックをプロキシへ。
rules: - IP-CIDR,192.168.0.0/16,DIRECT - DOMAIN-KEYWORD,ad,REJECT - DOMAIN-SUFFIX,google.com,PROXY - DOMAIN-SUFFIX,bilibili.com,DIRECT - GEOIP,CN,DIRECT - MATCH,PROXY
ルールプロバイダー(rule-providers):より楽な方法
ルールを1本ずつ手書きするのは手間がかかり、保守も大変です。コミュニティにはルールプロバイダー(rule-providers)と呼ばれる、数百〜数千本のルールをパッケージ化したリモート更新可能なファイルが大量にあります。参照するだけで定期自動更新できます。例えば「国内ドメイン集合」「広告ブロック集合」をそれぞれ取り込み、少数のルールで向き先を指定すれば、設定がすっきりし、保守も楽になります。
ルールをデバッグするコツ
- ログを活用:ログレベルを上げると、各接続がどのルールに一致したか確認でき、問題の特定が非常に直感的になります;
- グローバルモードで対照:あるサイトが開けないときにグローバルに切り替え、通ればルールの問題とほぼ断定できます;
- 変更後はリロード:多くのクライアントはホットリロードに対応。1行変更してリロードすれば反映され、再起動は不要です。
REJECT と広告ブロック
ルールのポリシーには直結とプロキシのほか、実用的な REJECT もあります。接続を直接拒否する意味です。最も一般的な用途は広告・トラッキングドメインのブロックです。広告ドメインが REJECT ルールに一致すると、リクエストは即座に遮断され、ページ内の広告枠は読み込まれません。すっきりし、通信量も節約できます。コミュニティが保守する広告ドメインルールセットと組み合わせると、効果は特に顕著です。
ルールとポリシーグループの連携
ルールで指定する「ポリシー」は、多くの場合、個別ノードではなくポリシーグループ名です。最大の利点は疎結合です。ルールは「この種類のトラフィックをどのグループに渡すか」だけを答え、実際にどのノードを使うかは、画面上でいつでも切り替えられます。例えば「ストリーミング」というポリシーグループを作り、関連ルールをすべてそこに向ければ、ノードを変えたいときはそのグループ内でクリックするだけで、すべてのストリーミングトラフィックが一括で切り替わります。ルールを1本ずつ書き換える必要はありません。
初心者がよく犯すミス
典型的なのは順序の逆転です。例えば GEOIP,CN,DIRECT や MATCH を、特定のプロキシルールより前に置くと、トラフィックが先に広いルールに一致し、本来効くべき具体的なルールが永遠に適用されません。結果として「ルールを書いたのに効かない」という現象になります。覚えておいてください:具体ほど前、フォールバックは必ず最後。もう一つの頻出問題はインデントミスです——YAML はインデントに極めて敏感で、スペース1つ違うだけで設定全体の読み込みに失敗することがあります。
まとめ
ルールの核心は8文字——順序第一、具体優先。まず「プライベート → 拒否 → プロキシ → 直結 → フォールバック」の骨格を整え、ルールプロバイダーで詳細を埋めれば、精密で保守しやすい振り分けが実現します。各ルールタイプの完全な説明は、ドキュメント · ルールタイプ早見表 を参照してください。
ルールは原理を理解すればそれほど難しくありません。本当に難しいのは、自分の使用習慣に合わせて丁寧に磨き込むことです。成熟したテンプレートルールから始め、「プロキシすべきなのに直結した」「直結すべきなのにプロキシを回った」といった日常のケースに応じて少しずつ調整していけば、数回の後にはルールがだんだん使いやすく、自分に合ったものになります。ルールは Clash で最も時間をかける価値のある部分です。一度整理すれば、長期的に恩恵を受けられます。