スプリットトンネリングとは?
スプリットトンネリング(ルールベースルーティング)は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.com、api.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の値を短くして自動更新頻度を上げましょう。