スプリットトンネリングとは?

スプリットトンネリング(ルールベースルーティング)はClashの最も強力な機能のひとつです。一言で言えば、あらかじめ定義されたルールに基づき、各ネットワークリクエストを直接接続するかプロキシノードを経由するかを自動的に判断する仕組みです。

典型的な使用例:ローカルイントラネット、地域コンテンツを含むストリーミングサービス、遅延に敏感なゲームサーバーは直接接続して最高速度を確保し、その他のトラフィックはプロキシ経由にする——これらすべてがバックグラウンドでシームレスに行われます。プロキシのオン・オフを手動で切り替える必要はありません。

ルールベースルーティングの基盤はClash設定ファイルのrulesフィールドです。その仕組みを理解することで、自分のユースケースに合わせたトラフィックルーティングを自由にカスタマイズできます。

ルールファイルの構造

ClashはYAML形式の設定ファイルを使用し、すべてのルールはrules:フィールドに記述します。各ルールは以下のフォーマットに従います:

- TYPE,VALUE,POLICY

3つの部分の意味:

  • TYPE:マッチング方法——トラフィックをどのように識別するかを決定します。
  • VALUE:ドメイン名、IPアドレス範囲、国コードなど、具体的なマッチング対象。
  • POLICY:ルールがマッチした場合のアクション。主要なポリシー:PROXY(プロキシ経由)、DIRECT(直接接続)、REJECT(ブロック、広告フィルタリングに有効)。

主要なルールタイプ

ドメインルール(最もよく使われる)

ドメインルールは最も広く使用されるルールタイプで、3段階の精度でマッチングできます:

  • DOMAIN,www.example.com,PROXY — 完全一致:www.example.comのみに適用(サブドメインは対象外)。
  • DOMAIN-SUFFIX,example.com,PROXY — サフィックス一致:example.comおよびすべてのサブドメイン(mail.example.comapi.example.comなど)にマッチ。最もよく使われるドメインルールタイプ。
  • DOMAIN-KEYWORD,googleapis,PROXY — キーワード一致:googleapisを含むすべてのドメインにマッチ。柔軟ですが誤検知が起きやすいため注意が必要。

IPアドレスルール

ドメインルールでは対応できない場合、IPアドレス範囲でトラフィックをルーティングできます:

  • IP-CIDR,192.168.0.0/16,DIRECT — 指定したIPアドレス範囲にマッチ。ローカル/プライベートネットワークを直接接続に保つためによく使われます。
  • GEOIP,JP,DIRECT — GeoIPデータベースを使って国・地域別にトラフィックをマッチ。特定の国のトラフィックをまとめて処理するキャッチオールとして有効。

プロセスルール(Mihomo拡張)

Mihomoコアはプロセス名に基づくルールをサポートしており、アプリケーション単位でルーティングを制御できます:

  • PROCESS-NAME,curl,DIRECT — curlのすべてのリクエストを直接接続。
  • PROCESS-NAME,steam.exe,PROXY — Steamのすべてのトラフィックをプロキシ経由に。

キャッチオールルール(必須)

リストの最後のルールは必ずMATCHルールにする必要があります。前のルールにマッチしなかったすべてのリクエストをキャッチし、デフォルトのポリシーとして機能します:

- MATCH,PROXY

ルールセットの活用(推奨)

数千ものドメインルールを手動で管理するのは非効率で、最新の状態を維持するのも困難です。Clashはrule-providersフィールドを使って外部のルールセットファイルを参照できます。コミュニティは広告ブロック、ドメイン分類、ストリーミング解除などをカバーする高品質なルールセットを公開しています。

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,PROXY
  - GEOIP,JP,DIRECT
  - MATCH,PROXY

interval: 86400はルールセットファイルを86,400秒(24時間)ごとに更新することを意味し、ルールを自動的に最新の状態に保ちます。

プロキシプロバイダーのサブスクリプション設定には通常、包括的なルールセットが組み込まれています。ほとんどのユーザーはルールを手動で記述する必要はありません。このガイドは、ルーティングをカスタマイズしたい上級ユーザー向けです。

ルールのマッチング順序と優先度

Clashはルールを上から下へ評価します。ルールがマッチした時点でそのポリシーが即座に適用され、評価は停止します。つまり、ルールの順序が非常に重要です:

  • 広告ブロック(REJECT)ルールは最初に配置し、広告リクエストを早い段階でインターセプト。
  • より具体的なルール(完全一致)をより汎用的なルール(サフィックス一致)より前に配置。
  • MATCHルールは常に最後——前のルールでマッチしなかったすべてのトラフィックのデフォルトポリシーとして機能します。

デバッグとトラブルシューティング

ルール設定後にトラフィックが期待通りにルーティングされない場合は、次の手順で確認できます:

  • 「接続」タブを確認:Clash Verge Revの「接続(Connections)」ページでは、各リクエストに適用されたルールとポリシーをリアルタイムで確認できます。特定のドメインやIPを検索してマッチしたルールを確認しましょう。
  • ルールの順序を確認:特定のドメインに誤ったルールが適用されている場合、より具体的なルールを上位に移動することで解決できます。
  • ルールセットの更新:外部のルールセットが古くなっている場合、サブスクリプション画面から手動で更新するか、intervalの値を短くして自動更新頻度を上げましょう。

その他のClash設定については、ヘルプセンター詳細チュートリアルをご覧ください。