将china_ip_list
、纯真CN
、Clang.CN
和ali AS37963
发布的**IP列表叠加到MaxMind
官方社区版数据库中。
同时,这也是一个如何生成MaxMind数据库的示例。
适合在网络分流工具中使用,对**IP的匹配分流更为友好,兼容MaxMind DB的客户端!
每周自动拉取新的MaxMind、china_ip_list、纯真CN和Clang.cn数据库,并发布一个新的Release版本。
- Release 和 Daily 均切换到使用 golang 版本的 mmdb writer 构建
- 完整版本是加载官方
GeoLite2-Country.mmdb
的基础上,覆盖写入china_ip_list
、纯真CN
和Clang.CN
,并非从零构建 - Lite版本是直接从零构建,包含**IPv4数据和CN的IPv6数据**,读取官方CSV文件并且跳过了CN的记录,然后再写入
china_ip_list
、纯真CN
和Clang.CN
,并且仅写入了iso_code
和geoname_id
以达到缩小体积的目的
文件 | release分支 | CDN | 阿里云 |
---|---|---|---|
Country.mmdb | 链接 | 链接 | 链接 |
Country.mmdb lite | 链接 | 链接 | 链接 |
version | 链接 | 链接 | 链接 |
在网络分流工具(例如Clash)中使用MaxMind的GeoLite2-Country
对**IP的匹配不是很友好,实际使用中出现不少问题。
此项目,在MaxMind数据库的基础上,加入了china_ip_list
、纯真CN
和Clang.CN
的数据。ipv6使用Clang.cn
的数据,使得对**IP匹配得更为友好。
由于构建mmdb,后者覆盖前者的特性,ip列表的插入顺序如下:
下载生成的Country.mmdb
。
使用方式同MaxMind官方API,可参考指导文档。
下载生成的Country.mmdb
,然后替换掉/etc/openclash/Country.mmdb
,最后重启下clash即可。
需要perl
环境,MaxMind-DB-Writer-perl
的依赖和使用可以参考官方文档。
# 下载mmdb writer
git clone https://github.com/maxmind/MaxMind-DB-Writer-perl.git writer
cd writer
# 安装依赖
curl -LO http://xrl.us/cpanm
perl cpanm –installdeps .
# 构建
./Build manifest
perl Build.PL
./Build install
# 返回上级目录
cd ..
# 下载本项目
git clone https://github.com/alecthw/mmdb_china_ip_list.git
cd mmdb_china_ip_list
# 下载GeoLite2-Country-CSV
curl -LR -o GeoLite2-Country-CSV.zip "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=JvbzLLx7qBZT&suffix=zip"
unzip GeoLite2-Country-CSV.zip
rm -f GeoLite2-Country-CSV.zip
mv GeoLite2* mindmax
# 下载china_ip_list
curl -LR -o china_ip_list.txt "https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt"
# 下载纯真数据库的CN
curl -LR -o CN.txt "https://raw.githubusercontent.com/metowolf/iplist/master/data/special/china.txt"
# 生成mmdb
perl china_ip_list.pl
生成的文件为china_ip_list.mmdb
。
官方对自己的数据库中的内容说明很少,都是自己一点点跟代码找出来的格式,然后据此生成的数据库。
下面列出所有字段示例供参考。
头
{
"database_type": "GeoLite2-Country",
"binary_format_major_version": 2,
"build_epoch": 1589304057,
"ip_version": 6,
"languages": [
"de",
"en",
"es",
"fr",
"ja",
"pt-BR",
"ru",
"zh-CN"
],
"description": {
"en": "GeoLite2 Country database"
},
"record_size": 24,
"node_count": 616946,
"binary_format_minor_version": 0
}
network->字段
{
"continent": {
"code": "AS",
"names": {
"de": "Asien",
"ru": "Азия",
"pt-BR": "Ásia",
"ja": "アジア",
"en": "Asia",
"fr": "Asie",
"zh-CN": "亚洲",
"es": "Asia"
},
"geoname_id": 6255147
},
"country": {
"names": {
"de": "China",
"ru": "Китай",
"pt-BR": "China",
"ja": "**",
"en": "China",
"fr": "Chine",
"zh-CN": "**",
"es": "China"
},
"iso_code": "CN",
"geoname_id": 1814991,
"is_in_european_union": false,
},
"registered_country": {
"names": {
"de": "China",
"ru": "Китай",
"pt-BR": "China",
"ja": "**",
"en": "China",
"fr": "Chine",
"zh-CN": "**",
"es": "China"
},
"iso_code": "CN",
"geoname_id": 1814991
},
"represented_country": {
"names": {
"de": "China",
"ru": "Китай",
"pt-BR": "China",
"ja": "**",
"en": "China",
"fr": "Chine",
"zh-CN": "**",
"es": "China"
},
"iso_code": "CN",
"geoname_id": 1814991
},
"traits": {
"is_anonymous_proxy": true,
"is_satellite_provider": true
}
}
摸索不易,引用整合或者二次发布还望留个名......