「特定カテゴリのサイトはすべてこのルールで処理する」「広告ドメインはすべて統一して処理する」といったことをしたい場合、DOMAIN-SUFFIX を何十行も手書きするのは現実的ではありません。すでにコミュニティにはこうしたルールセットを継続的にメンテナンスしている人たちがいます。Rule Providerは、こうしたリモートのルールセットを設定ファイルから「参照」する仕組みで、ローカルには参照用の1行を書くだけで、内容はリモートファイルから自動的に更新されます。
01基本的な書き方
Rule Providerは2段階で構成されます。まず rule-providers でルールセットの参照元を宣言し、次に rules の中で RULE-SET を使ってそれを参照します。
rule-providers:
reject:
type: http
behavior: domain
url: "https://example.com/rules/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
rules:
- RULE-SET,reject,REJECT
- GEOIP,CN,DIRECT
- MATCH,PROXY02behaviorフィールドの3種類
behavior はこのルールセットの内容をどう解釈するかを決めるフィールドで、誤って設定するとルールセット全体が機能しなくなる、最もミスしやすい項目です。
| behavior | ルールセットの内容形式 | 典型的な用途 |
|---|---|---|
| domain | ドメイン名だけのリスト。1行に1つのドメインまたはドメインサフィックス | 広告ドメインのブロックリスト、特定サイトの分流リスト |
| ipcidr | IPレンジだけのリスト。1行に1つのCIDR | 国・地域単位のIPレンジ、特定クラウド事業者のIPレンジ |
| classical | 最終アクションを含まない完全なルール文。例:DOMAIN-SUFFIX,x.com | 複数のルールタイプの混在、より柔軟なカスタムルールセット |
typeフィールド:httpかfileか
type: http はリモートURLから定期的に更新を取得する、最も一般的な使い方です。type: file はローカルに既にあるルールセットファイルを直接使う方式で、自分で管理していてネット経由の更新が不要な場合に向いています。
03よく使われるルールセットの提供元
コミュニティで知られているルールセットプロジェクトには、ドメインを分類整理したGeoSiteシリーズや、各種「ACL4SSR」系のルール集などがあります。これらは通常 domain と classical の両形式のファイルを提供しているので、具体的なリンクは各プロジェクトの公式リポジトリで確認し、使用するファイル形式と behavior の設定が一致しているか必ず確認してください。
04ルールセットが機能しない理由
- behaviorとファイル形式が一致していない:例えばリモートファイルが実際には単純なドメインリストなのに behavior: classical と書いてしまうと、コアがエラーを出すか、そのルールセットを無視します。
- pathが指すローカルキャッシュが古い:url を変更しても、既にキャッシュされた古いファイルが残っている場合、一部のクライアントは自動的に上書きしません。path が指すローカルファイルを手動で削除して再取得させる必要があります。
- intervalが長すぎる:更新間隔(単位:秒)を長く設定しすぎると、ルールセットが長期間古いバージョンのままになります。日常使用では43200〜86400(12〜24時間)程度が妥当です。
05Rule Providerと通常のルールは混在できるか
できますし、これが最も一般的な使い方です。rules リスト内では RULE-SET の参照と通常のルール(DOMAIN-SUFFIX や GEOIP など)を自由に混在させて記述できます。コアはルールの出所に関わらず「上から順に照合し、マッチしたら処理を止める」という順序で処理します。実際の運用では、よく使うルールセット(広告ブロック、地域ごとの振り分けなど)を上部に、その間に自分で書いた特定ドメイン用のルールをいくつか挟み、最後に最終ルールで締める、という組み合わせが最も手間のかからないやり方になることが多いです。
06自分でルールセットファイルを管理する必要はあるか
ほとんどのユーザーには不要です。コミュニティが管理しているルールセットは広告ブロックや地域別のサイト分類など主要なニーズをすでにカバーしており、継続的に更新もされているため、そのまま参照すれば十分です。type: file とローカルファイルで自分だけのルールセットを管理する価値があるのは、社内限定のドメインや長期的に自分で管理している特定サイトのリストなど、公開共有に向かない非常に特殊な分流ニーズがある場合だけです。通常はいくつかの手書きルールや rules 内の通常ルールで十分間に合います。