オープンソースプロジェクト
v2fly/domain-list-community avatar
v2fly/domain-list-community

domain-list-community の geosite 生成をルールの出所から検証する

コミュニティ管理ドメインのリスト。 V2Ray の geosite.dat を生成します。ドメイン リスト コミュニティ このプロジェクトは、プロジェクト V でルーティング目的のジオサイトとして使用されるドメインのリストを管理します。

スター 9,495フォーク 1,425GoMIT

ひと目でわかる

これは何?
Project V のルーティングに使うドメイン集合を、属性・包含・所属関係から dlc.dat へ変換するコミュニティ管理の仕組み。
誰に向いている?
Project V で用途別のドメイン集合を管理したい人、独自の data を dlc.dat に変換したい人に適しています。プロジェクトは遮断やプロキシを推奨するものではなく、規則の意味を利用者が決める設計です。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

リストは判断を代行しない

README はこのプロジェクトを Project V の routing に使う geosite 用ドメインリストとして説明しています。同時に、どのドメインを block または proxy すべきかを endorse、claim、imply しないと明記します。つまり data のファイル名は技術的な集合名であり、利用側の outboundTag やポリシーを決める根拠そのものではありません。dlc.dat、平文 YAML、そのチェックサムが release から配布され、消費側は取得版とハッシュを保存できます。

4種類のルールは一致範囲が異なる

data 内では domain、full、keyword、regexp の4種を記述できます。domain:google.com はサブドメイン用、full:analytics.google.com は完全一致用、keyword:google は文字列を含むドメイン用、regexp: は Go 標準の正規表現を使います。生成時にはそれぞれ sub-domain、full domain、plain domain、regex domain の routing rule へ変換されます。README は keyword と regexp の追加を誤用しやすく、proxy software が効率よく照合できないとして慎重な扱いを求めています。

includeと所属は管理用の関係

include:another-file は別のリストの規則を取り込みます。include:list2 @attr1 @-attr2 のように属性を付けると、属性を持つ規則だけを選び、別の属性を除外できます。これは最終出力での目印ではなく、選択的な包含です。行末の &target は所属先リストにも追加するためのデータ管理情報で、最終リストや dlc.dat には残りません。この差を理解せずに平文ファイルだけを編集すると、期待するカテゴリへの波及を見落とします。

属性は生成後にも残る

ドメイン規則には @attr の属性を0個以上付けられ、属性は最終リストと dlc.dat に保持されます。一方、& affiliation は管理のためだけに使われ、include と同様に解決処理の中で実体化します。@!cn を持つ規則は cn lists から除外され、geosite:geolocation-cn@!cn は利用できないという Notice もあります。広告リストは xxx-ads ではなく xxx@ads を使う変更が案内されていますが、category-ads[-xx] は影響を受けません。

手動生成はGoの実データを使う

手動生成では Go と git を用意し、git clone https://github.com/v2fly/domain-list-community.git、cd domain-list-community、go mod download の順に進めます。go run ./ は現在の data を使って dlc.dat を生成し、--datapath=/path/to/your/custom/data/directory なら別のデータディレクトリを指定できます。--help で利用可能な引数を確認し、生成前後でファイル数とルール件数を比較します。README は独自 dat の作り方として discussion #3370 も案内しています。

変更時に見るべきファイルとライセンス

コメントは # から始まり、空行とともに本番処理から無視されます。domain 名の妥当性、include の循環、属性の正負を小さな data ファイルで確認してから本体へ変更を入れるのが現実的です。配布版を使う場合は dlc.dat と dlc.dat.sha256sum、平文を読む場合は dlc.dat_plain.yml とそのチェックサムを対にして保存します。素材では MIT ライセンス、公式サイトは v2fly.org、release は 20260827152101 などが確認できます。確認用の小さなdataディレクトリには、domain:example.com、full:api.example.com、keyword:sample、regexp:^a[0-9]+\.example\.org$を置き、includeと@属性を含む別ファイルも作ります。go run ./ --datapath=/tmp/domain-data を実行した後、平文出力で各規則の一致範囲と属性が期待どおりかを確認します。includeの&所属が最終出力にそのまま残らないこと、コメントと空行が影響しないことも比較します。生成したdlc.datは Project V 側で geosite:filename として読み込み、RejectやProxy-1のoutboundTagを自分のポリシーとして明示します。配布版を使う場合はdlc.datとsha256sumを同じreleaseから取得し、cn除外や広告属性の変更を更新前後で差分確認します。正規表現とkeywordを増やす前には照合負荷と誤一致を測定し、単に便利だからという理由で採用しません。このリストを利用する側は、ファイル名をルールの意味と取り違えないことが重要です。category-ads-allをRejectへ送るか、cnをDirectへ送るか、anticensorshipをProxyへ送るかは、Project Vの利用者が決める routing policy です。dataの一行は生成前の管理情報であり、includeと所属を解決した後の平文やdatとは表現が違います。domainとfullの差はサブドメインを含むかどうかに現れ、keywordとregexpは広い一致を生みやすいため、実際のドメイン一覧で誤一致を探します。@adsと旧来の広告リスト名を混ぜず、@!cnの除外結果を更新前後で確認します。Goの版、gitのコミット、datapathを保存すると、手動生成の差分を追えます。配布ファイルはsha256sumを検証してから routing に読み込み、問題がある場合はissueへ最小のファイル例と生成版を添えます。これにより、コミュニティの分類と自分の通信方針を分離したまま保守できます。実施記録には対象版と入力条件を残し、成功した結果だけでなく失敗した場合の出力も保存します。設定を変更した前後で同じ確認を繰り返せるようにし、READMEに書かれた機能と自分の環境で確認できた事実を分けます。採用判断では、導入できたかだけでなく、更新、障害、切り戻し、権限、ライセンスを同じ担当者が追跡できるかを確かめます。この確認では版、設定、入力、出力、エラーを同じ記録に残します。再実行して結果が変わった場合は、対象データと依存部品の差分を先に調べます。運用へ移す前に、失敗時に元へ戻せる手順と担当者を決めます。

編集部の結論

Project V で用途別のドメイン集合を管理したい人、独自の data を dlc.dat に変換したい人に適しています。プロジェクトは遮断やプロキシを推奨するものではなく、規則の意味を利用者が決める設計です。採用前に dlc.dat_plain.yml と対応する sha256sum を取得し、対象ファイルの include、@属性、生成後の geosite 名が想定どおりかを go run ./ --datapath で確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート