上級

Clash ルール振り分け詳解:rules を明確に書く実践的アプローチ

ノードが 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-CIDRIP レンジ一致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 は「最終フォールバック」で、必ず最終行に置く。それ以前のルールに一致しなかったトラフィックを処理します。

定番のルール配置順序

実運用では、「プライベートからパブリックへ、具体から広範へ」という順序でルールを組むことをおすすめします:

  1. LAN とプライベートアドレスIP-CIDR で内部ネットワークアドレスを直結し、ローカル機器をプロキシしない;
  2. 拒否すべきドメイン:広告・トラッキング系は REJECT で直接ブロック;
  3. 明確にプロキシ経由にすべきサービスDOMAIN-SUFFIX で海外サービスをプロキシへ;
  4. 明確に直結すべきサービス:国内でよく使うサイトを DOMAIN-SUFFIX で直結へ;
  5. 地理位置でフォールバックGEOIP,CN,DIRECT で残りの国内 IP を直結;
  6. 最終フォールバックMATCH でその他すべてのトラフィックをプロキシへ。
rules 例
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)と呼ばれる、数百〜数千本のルールをパッケージ化したリモート更新可能なファイルが大量にあります。参照するだけで定期自動更新できます。例えば「国内ドメイン集合」「広告ブロック集合」をそれぞれ取り込み、少数のルールで向き先を指定すれば、設定がすっきりし、保守も楽になります。

ルールをデバッグするコツ

REJECT と広告ブロック

ルールのポリシーには直結とプロキシのほか、実用的な REJECT もあります。接続を直接拒否する意味です。最も一般的な用途は広告・トラッキングドメインのブロックです。広告ドメインが REJECT ルールに一致すると、リクエストは即座に遮断され、ページ内の広告枠は読み込まれません。すっきりし、通信量も節約できます。コミュニティが保守する広告ドメインルールセットと組み合わせると、効果は特に顕著です。

ルールとポリシーグループの連携

ルールで指定する「ポリシー」は、多くの場合、個別ノードではなくポリシーグループ名です。最大の利点は疎結合です。ルールは「この種類のトラフィックをどのグループに渡すか」だけを答え、実際にどのノードを使うかは、画面上でいつでも切り替えられます。例えば「ストリーミング」というポリシーグループを作り、関連ルールをすべてそこに向ければ、ノードを変えたいときはそのグループ内でクリックするだけで、すべてのストリーミングトラフィックが一括で切り替わります。ルールを1本ずつ書き換える必要はありません。

初心者がよく犯すミス

典型的なのは順序の逆転です。例えば GEOIP,CN,DIRECTMATCH を、特定のプロキシルールより前に置くと、トラフィックが先に広いルールに一致し、本来効くべき具体的なルールが永遠に適用されません。結果として「ルールを書いたのに効かない」という現象になります。覚えておいてください:具体ほど前、フォールバックは必ず最後。もう一つの頻出問題はインデントミスです——YAML はインデントに極めて敏感で、スペース1つ違うだけで設定全体の読み込みに失敗することがあります。

まとめ

ルールの核心は8文字——順序第一、具体優先。まず「プライベート → 拒否 → プロキシ → 直結 → フォールバック」の骨格を整え、ルールプロバイダーで詳細を埋めれば、精密で保守しやすい振り分けが実現します。各ルールタイプの完全な説明は、ドキュメント · ルールタイプ早見表 を参照してください。

ルールは原理を理解すればそれほど難しくありません。本当に難しいのは、自分の使用習慣に合わせて丁寧に磨き込むことです。成熟したテンプレートルールから始め、「プロキシすべきなのに直結した」「直結すべきなのにプロキシを回った」といった日常のケースに応じて少しずつ調整していけば、数回の後にはルールがだんだん使いやすく、自分に合ったものになります。ルールは Clash で最も時間をかける価値のある部分です。一度整理すれば、長期的に恩恵を受けられます。


続きを読む