Clash ルールシステムの全体像
Clash(Mihomo / Clash Meta 内核)の最大の強みは、ルールベースの分流(スプリットルーティング)です。設定ファイル(YAML)の rules: セクションに、通信ごとに「どのプロキシグループへ送るか」「DIRECT で直結するか」を定義します。ルールの判定結果は proxy-groups(策略组)に渡され、最終的な出口ノードが決まります。
本記事では、日常設定で最も頻出する DOMAIN 系ルール、GEOIP による地域判定、兜底用の MATCH に焦点を当て、構文・優先順位・proxy-groups との連携を YAML 例付きで解説します。Global モードですべてを PROXY に流すより、Rule モードでルールを理解した方が、国内サービスの速度を保ちながら必要な通信だけをプロキシ経由にできます。
ルール構文の基本形式
Clash の各ルールは、英字大文字のルールタイプ、マッチ条件(ペイロード)、ターゲット策略の3要素で構成され、カンマ , で区切ります。
ルールタイプ, マッチ条件, ターゲット策略
具体例:
- DOMAIN-SUFFIX,google.com,🚀 节点选择
- GEOIP,JP,DIRECT
- MATCH,🚀 节点选择
ターゲット策略には、proxy-groups で定義したグループ名(例:🚀 节点选择、♻️ 自动选择)のほか、組み込みキーワード DIRECT(直結)、PROXY(デフォルトプロキシ)、REJECT(拒否)が使えます。
| 組み込み策略 | 意味 | 典型的な用途 |
|---|---|---|
DIRECT |
プロキシを経由せず直結 | 国内サイト、LAN、プライベート IP |
PROXY |
デフォルトのプロキシノードへ | シンプルな全プロキシ設定 |
REJECT |
接続を拒否 | 広告ドメイン、トラッキング遮断 |
- MATCH,"🚀 节点选择"
DOMAIN 系ルール完全解説
ドメインベースのルールは、HTTP の Host ヘッダーや TLS SNI から取得したホスト名をもとに判定します。DNS 解決後の IP ではなく名前で振り分けるため、CDN やサービス単位の制御に適しています。
| ルールタイプ | 構文例 | 一致条件 |
|---|---|---|
DOMAIN |
DOMAIN,www.google.com,PROXY |
ホスト名が完全一致(大文字小文字を区別) |
DOMAIN-SUFFIX |
DOMAIN-SUFFIX,google.com,PROXY |
指定サフィックスで終わるホスト名(最もよく使う) |
DOMAIN-KEYWORD |
DOMAIN-KEYWORD,googleapis,PROXY |
ホスト名の任意の位置にキーワードを含む |
DOMAIN-REGEX |
DOMAIN-REGEX,^.*\.google\.com$,PROXY |
正規表現でマッチ(上級者向け) |
DOMAIN-SUFFIX が主流である理由
DOMAIN-SUFFIX,google.com,PROXY は www.google.com、mail.google.com、accounts.google.com など、google.com で終わるすべてのサブドメインに一致します。一方 DOMAIN,www.google.com,PROXY は www ホストのみです。サブスクリプションのルールセットでは、サービス単位で DOMAIN-SUFFIX が大量に使われます。
DOMAIN-KEYWORD の注意点
キーワード google は google.com だけでなく notgoogle.com にも部分一致する可能性があります。意図しない広いマッチを避けるため、可能なら DOMAIN-SUFFIX か GEOSITE(後述)を優先し、KEYWORD はルールリストの上段(GEOIP より前)に置いてください。
rules:
- DOMAIN-SUFFIX,youtube.com,📺 YouTube
- DOMAIN-SUFFIX,googlevideo.com,📺 YouTube
- DOMAIN-KEYWORD,github,💻 GitHub
- DOMAIN-SUFFIX,github.com,💻 GitHub
- DOMAIN-SUFFIX,githubusercontent.com,💻 GitHub
DOMAIN-SUFFIX と DOMAIN-KEYWORD を重複配置し、意図と異なるグループへ振り分けられることがあります。ルールは上から評価されるため、先に書いた行が優先されます。
GEOIP / GEOSITE ルール
GEOIP は、通信先 IP アドレスの地理的所属(GeoIP データベース)に基づいて判定します。DNS で名前が解決されたあと、実際の接続先 IP がどの国に属するかで DIRECT / PROXY を切り替える典型的なパターンです。
- GEOIP,JP,DIRECT
- GEOIP,CN,DIRECT
- GEOIP,US,🚀 节点选择
第2引数は ISO 3166-1 alpha-2 の国コード(日本 = JP、中国 = CN、アメリカ = US など)です。日本在住ユーザーが国内サービスを DIRECT にしたい場合は GEOIP,JP,DIRECT が基本形です。中国向けサブスクリプションでよく見る GEOIP,CN,DIRECT は、中国国内 IP への通信を直結させる設定であり、国コードは利用環境に合わせて読み替えてください。
GEOSITE との使い分け
Mihomo 内核では GEOSITE ルールも利用できます。v2ray-rules-dat 等のドメイン分類データベースに基づき、cn(中国向けサイト)、google、category-ads-all などのカテゴリで一括マッチします。
- GEOSITE,cn,DIRECT
- GEOSITE,google,🚀 节点选择
- GEOSITE,category-ads-all,REJECT
GEOSITE,cn,DIRECT は多数の国内ドメインを個別に DOMAIN ルールで列挙する代わりに使える便利な手段です。一方、GEOIP は IP ベースなので、同じドメインでも CDN エッジの所在地によって結果が変わることがあります。ストリーミングやゲームでは、サービス固有の DOMAIN ルールを GEOIP より上に置くのが定石です。
192.168.0.0/16)や Docker(172.16.0.0/12)は IP-CIDR,192.168.0.0/16,DIRECT,no-resolve のように IP 段で DIRECT にします。no-resolve を付けると DNS ルックアップをスキップし、ルール評価が速くなります。
MATCH:兜底ルールの書き方
MATCH は「それ以外すべて」を捕捉する特殊ルールで、ペイロード(第2引数)を取りません。構文は2要素のみです。
- MATCH,🚀 节点选择
上記は「上記のどのルールにも一致しなかった通信」を 🚀 节点选择 グループへ送る、という意味です。ルールリストの最終行に必ず1つ置いてください。MATCH がないと、未一致トラフィックの行き先が未定義になり、接続エラーや意図しない DIRECT が発生します。
サブスクリプションによっては MATCH,DIRECT(残りすべて直結)や MATCH,PROXY(残りすべてプロキシ)も見られます。セキュリティと利便性のバランスでは、海外向けデフォルトに MATCH,🚀 节点选择 を置く構成が一般的です。
proxy-groups(策略组)の設計
ルールの第3引数は、多くの場合 proxy-groups で定義した策略组名を指します。グループはノードの集合体であり、ルールエンジンと UI の橋渡し役です。
| type | 動作 | 用途 |
|---|---|---|
select |
ユーザーが手動でノードまたは子グループを選択 | 🚀 节点选择、サービス別グループ |
url-test |
定期的に遅延テストし、最速ノードを自動選択 | ♻️ 自动选择 |
fallback |
上から順に可用性を確認し、最初に応答したノードを使用 | 障害時の自動切り替え |
load-balance |
複数ノードへ負荷分散 | 高帯域・冗長化 |
設定例:
proxy-groups:
- name: 🚀 节点选择
type: select
proxies:
- ♻️ 自动选择
- DIRECT
- 香港 01
- 日本 02
- 美国 03
- name: ♻️ 自动选择
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- 香港 01
- 日本 02
- 美国 03
- name: 📺 YouTube
type: select
proxies:
- 🚀 节点选择
- 香港 01
- 日本 02
ルール DOMAIN-SUFFIX,youtube.com,📺 YouTube は、YouTube 関連ドメインを 📺 YouTube グループへ誘導します。グループ内で別ノードを選べるため、動画視聴だけ低遅延の日本ノード、一般ブラウジングは自動選択、といった使い分けが可能です。
優先順位と記述順序の鉄則
Clash は rules: を上から順に評価し、最初に一致したルールで処理を終了します(ファーストマッチ)。そのため、次の順序が実務上の定石です。
- ローカル / LAN / プライベート IP —
IP-CIDRで DIRECT - 広告・トラッキング拒否 —
GEOSITE,category-ads-all,REJECT等 - サービス固有の DOMAIN / GEOSITE — YouTube、GitHub、Steam など
- GEOIP 地域判定 —
GEOIP,JP,DIRECTなど - MATCH 兜底 — リスト最終行
順序を誤った例:
# ✗ 誤り:GEOIP を DOMAIN より前に置く
- GEOIP,JP,DIRECT
- DOMAIN-SUFFIX,netflix.com,🎬 Netflix
# ✓ 正しい:サービス固有ルールを GEOIP より上に
- DOMAIN-SUFFIX,netflix.com,🎬 Netflix
- GEOIP,JP,DIRECT
- MATCH,🚀 节点选择
誤った順序では、Netflix の日本 CDN IP が GEOIP,JP,DIRECT に先に一致し、プロキシを経由せずに視聴制限や画質問題が起きることがあります。
実践 YAML テンプレート
以下は、日本在住ユーザーを想定したミニマム構成です。サブスクリプションのノード名は実際の名称に置き換えてください。
rules:
# 1. LAN / ローカル
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
# 2. 広告ブロック(任意)
- GEOSITE,category-ads-all,REJECT
# 3. サービス別 DOMAIN
- GEOSITE,youtube,📺 YouTube
- GEOSITE,google,🚀 节点选择
- DOMAIN-SUFFIX,github.com,💻 GitHub
# 4. 国内・地域判定
- GEOSITE,cn,DIRECT
- GEOIP,JP,DIRECT
# 5. 兜底
- MATCH,🚀 节点选择
Clash Verge Rev では Merge 設定で上記の rules: 断片だけを追記し、サブスクリプション本体を上書きせずにカスタマイズできます。編集後は Rule モードで Connections(接続ログ)を開き、対象サイトアクセス時に期待どおりのルール名とグループが表示されるか確認してください。
rule 列に表示されるのが実際にヒットしたルールです。「なぜ DIRECT になったのか」を調べるときは、該当ドメインより上にある GEOIP / GEOSITE ルールを疑ってください。
よくある質問
DOMAIN-SUFFIX と DOMAIN-KEYWORD の違いは?
SUFFIX は末尾一致、KEYWORD は部分一致です。精度とカバー範囲のトレードオフがあり、通常は SUFFIX を優先し、KEYWORD はレガシールールセットの互換目的で使われます。
GEOIP,CN,DIRECT をそのまま使ってよい?
中国向けサブスクリプションの文脈では有効です。日本ユーザーは GEOIP,JP,DIRECT に置き換え、不要なら GEOSITE,cn,DIRECT 行を削除または DIRECT のまま残しても問題ありません(中国向けサイトを直結したい場合のみ意味があります)。
ルールを追加したのに反映されない
プロファイルの再読み込み、MATCH より後ろに書いてしまっていないか、YAML のインデント(スペース2つ)ミスを確認してください。Clash Verge Rev では設定保存後に「Profiles → 更新」が必要な場合があります。
RULE-SET とは?
外部の .yaml / .list ファイルやリモート URL からルール集合を読み込む方式です。大規模な GFW リスト等は RULE-SET で管理され、本体 YAML を短く保てます。構文は RULE-SET,gfw,PROXY のように、rule-providers で定義した名前を参照します。
ブラウザ拡張のプロキシ切替や、単一サーバーへ全トラフィックを送る VPN アプリと比べ、Clash はDOMAIN / GEOIP / MATCH を組み合わせたルール設計により、サービス単位・地域単位の精密な分流が可能です。初期設定はやや学習コストがありますが、一度テンプレートを理解すれば、サブスクリプション更新後も Merge で安定運用できます。Rule モードと接続ログを併用し、自分の環境に合わせてルール順序を微調整していくのが、長期利用では最も効果的です。