/mmdb_china_ip_list

Geoip MaxMind Database for china ip list! This is also an example of generating MaxMind Database!

Primary LanguageGoMIT LicenseMIT

mmdb_china_ip_list

README | English Document

Daily Build

china_ip_list纯真CNClang.CNali 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纯真CNClang.CN,并非从零构建
  • Lite版本是直接从零构建,包含**IPv4数据和CN的IPv6数据**,读取官方CSV文件并且跳过了CN的记录,然后再写入china_ip_list纯真CNClang.CN,并且仅写入了iso_codegeoname_id以达到缩小体积的目的
文件 release分支 CDN 阿里云
Country.mmdb 链接 链接 链接
Country.mmdb lite 链接 链接 链接
version 链接 链接 链接

简介

在网络分流工具(例如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 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
    }
}

感谢

其他

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