alecthw / mmdb_china_ip_list

Geoip MaxMind Database for china ip list! This is also an example of generating MaxMind Database!
MIT License
1.05k stars 78 forks source link
china clash geoip geoip2 maxmind mmdb openclash

mmdb_china_ip_list

README | English Document

Daily Build

china_ip_list纯真CNClang.CNali AS37963ios_rule_script cloudcn发布的中国IP列表叠加到MaxMind官方社区版数据库中。

同时,这也是一个如何生成MaxMind数据库的示例。

适合在网络分流工具中使用,对中国IP的匹配分流更为友好,兼容MaxMind DB的客户端!

每周自动拉取新的MaxMind、china_ip_list、纯真CN和Clang.cn数据库,并发布一个新的Release版本。

包含的社区 CN IP数据库

完整版和Lite版区别

版本 官方非 CN IPv4 官方非CN IPv6 社区 CN IPv4 社区 CN IPv6 元数据
完整版 All
Lite 版 - - iso_codegeoname_id

固定下载连接

文件 release分支 CDN
Country.mmdb 链接 链接
Country.mmdb lite 链接 链接
version 链接 链接

不好意思,阿里云到期了续不起,国内镜像暂时先下了,优先用CDN吧!

简介

在网络分流工具(例如Clash)中使用MaxMindGeoLite2-Country对中国IP的匹配不是很友好,实际使用中出现不少问题。

此项目,在MaxMind数据库的基础上,加入了china_ip_list纯真CNClang.CN的数据。ipv6使用Clang.cn的数据,使得对中国IP匹配得更为友好。

由于构建mmdb,后者覆盖前者的特性,ip列表的插入顺序如下:

  1. Clang.CN
  2. 纯真CN数据库
  3. china_ip_list

使用

下载生成的Country.mmdb

使用方式同MaxMind官方API,可参考指导文档

OpenClash中使用

下载生成的Country.mmdb,然后替换掉/etc/openclash/Country.mmdb,最后重启下clash即可。

Perl版本构建指导

需要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 chunzhen_cn.txt "https://raw.githubusercontent.com/metowolf/iplist/master/data/special/china.txt"

# 生成mmdb
perl china_ip_list.pl

生成的文件为china_ip_list.mmdb

MaxMind GeoIP 格式

官方对自己的数据库中的内容说明很少,都是自己一点点跟代码找出来的格式,然后据此生成的数据库。

下面列出所有字段示例供参考。

{
    "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
    }
}

感谢

其他

摸索不易,引用整合或者二次发布还望留个名......