简介
本项目每两天自动生成 GeoIP 文件,同时提供命令行界面(CLI)供用户自行定制 GeoIP 文件,包括但不限于 V2Ray dat 格式路由规则文件 geoip.dat
和 MaxMind mmdb 格式文件 Country.mmdb
。
与官方版 GeoIP 的区别
- **大陆 IPv4/IPv6 地址数据使用第三方数据。
- 新增类别(方便有特殊需求的用户使用):
geoip:cloudflare
(GEOIP,CLOUDFLARE
)geoip:cloudfront
(GEOIP,CLOUDFRONT
)geoip:facebook
(GEOIP,FACEBOOK
)geoip:fastly
(GEOIP,FASTLY
)geoip:google
(GEOIP,GOOGLE
)geoip:netflix
(GEOIP,NETFLIX
)geoip:telegram
(GEOIP,TELEGRAM
)geoip:twitter
(GEOIP,TWITTER
)
参考配置
在 V2Ray 中使用本项目 .dat
格式文件的参考配置:
"routing": {
"rules": [
{
"type": "field",
"outboundTag": "Direct",
"ip": [
"geoip:cn",
"geoip:private",
"ext:cn.dat:cn",
"ext:private.dat:private",
"ext:geoip-only-cn-private.dat:cn",
"ext:geoip-only-cn-private.dat:private"
]
},
{
"type": "field",
"outboundTag": "Proxy",
"ip": [
"geoip:us",
"geoip:jp",
"geoip:facebook",
"geoip:telegram",
"ext:geoip-asn.dat:facebook",
"ext:geoip-asn.dat:telegram"
]
}
]
}
在 Clash 中使用本项目 .mmdb
格式文件的参考配置:
rules:
- GEOIP,PRIVATE,policy,no-resolve
- GEOIP,FACEBOOK,policy
- GEOIP,CN,policy,no-resolve
在 Leaf 中使用本项目 .mmdb
格式文件的参考配置,查看官方 README。
下载地址
如果无法访问域名
raw.githubusercontent.com
,可以使用第二个地址cdn.jsdelivr.net
。
V2Ray dat 格式路由规则文件
- geoip.dat:
- geoip-only-cn-private.dat(精简版 GeoIP,只包含
geoip:cn
和geoip:private
): - geoip-asn.dat(精简版 GeoIP,只包含上述新增类别):
- cn.dat(精简版 GeoIP,只包含
geoip:cn
): - private.dat(精简版 GeoIP,只包含
geoip:private
):
MaxMind mmdb 格式文件
- Country.mmdb:
- Country-only-cn-private.mmdb(精简版 GeoIP,只包含
GEOIP,CN
和GEOIP,PRIVATE
):
定制 GeoIP 文件
可通过以下几种方式定制 GeoIP 文件:
- 在线生成:Fork 本仓库后,修改自己仓库内的配置文件
config.json
和 GitHub Workflow.github/workflows/build.yml
- 本地生成:
特别说明:
- 在线生成:Fork 本项目后,如果需要使用 MaxMind GeoLite2 Country CSV 数据文件,需要在自己仓库的 [Settings] 选项卡的 [Secrets] 页面中添加一个名为 MAXMIND_GEOLITE2_LICENSE 的 secret,否则 GitHub Actions 会运行失败。这个 secret 的值为 MAXMIND 账号的 LICENSE KEY,需要注册 MAXMIND 账号后,在个人账号管理页面左侧边栏的 [Services] 项下的 [My License Key] 里生成。
- 本地生成:如果需要使用 MaxMind GeoLite2 Country CSV 数据文件(
GeoLite2-Country-CSV.zip
),需要提前从 MaxMind 下载,或从本项目 release 分支下载,并解压缩到名为geolite2
的目录。
概念解析
本项目有两个概念:input
和 output
。input
指数据源(data source)及其输入格式,output
指数据的去向(data destination)及其输出格式。CLI 的作用就是通过读取配置文件中的选项,聚合用户提供的所有数据源,去重,将其转换为目标格式,并输出到文件。
支持的格式
关于每种格式所支持的配置选项,查看本项目 config-example.json
文件。
支持的 input
输入格式:
- text:纯文本 IP 和 CIDR(例如:
1.1.1.1
或1.0.0.0/24
) - private:局域网和私有网络 CIDR(例如:
192.168.0.0/16
和127.0.0.0/8
) - cutter:用于裁剪前置步骤中的数据
- v2rayGeoIPDat:V2Ray GeoIP dat 格式(
geoip.dat
) - maxmindGeoLite2CountryCSV:MaxMind GeoLite2 country CSV 数据(
GeoLite2-Country-CSV.zip
) - clashRuleSetClassical:classical 类型的 Clash RuleSet
- clashRuleSet:ipcidr 类型的 Clash RuleSet
- surgeRuleSet:Surge RuleSet
支持的 output
输出格式:
- text:纯文本 CIDR(例如:
1.0.0.0/24
) - v2rayGeoIPDat:V2Ray GeoIP dat 格式(
geoip.dat
,适用于 V2Ray、Xray-core 和 Trojan-Go) - maxmindMMDB:MaxMind mmdb 数据格式(
GeoLite2-Country.mmdb
,适用于 Clash 和 Leaf) - clashRuleSetClassical:classical 类型的 Clash RuleSet
- clashRuleSet:ipcidr 类型的 Clash RuleSet
- surgeRuleSet:Surge RuleSet
CLI 功能展示
可通过 go install -v github.com/xOS/GeoIPs@latest
直接安装 CLI。
$ ./geoip -h
Usage of ./geoip:
-c string
URI of the JSON format config file, support both local file path and remote HTTP(S) URL (default "config.json")
-l List all available input and output formats
$ ./geoip -c config.json
2021/08/29 12:11:35 ✅ [v2rayGeoIPDat] geoip.dat --> output/dat
2021/08/29 12:11:35 ✅ [v2rayGeoIPDat] geoip-only-cn-private.dat --> output/dat
2021/08/29 12:11:35 ✅ [v2rayGeoIPDat] geoip-asn.dat --> output/dat
2021/08/29 12:11:35 ✅ [v2rayGeoIPDat] cn.dat --> output/dat
2021/08/29 12:11:35 ✅ [v2rayGeoIPDat] private.dat --> output/dat
2021/08/29 12:11:39 ✅ [maxmindMMDB] Country.mmdb --> output/maxmind
2021/08/29 12:11:39 ✅ [maxmindMMDB] Country-only-cn-private.mmdb --> output/maxmind
2021/08/29 12:11:39 ✅ [text] netflix.txt --> output/text
2021/08/29 12:11:39 ✅ [text] telegram.txt --> output/text
2021/08/29 12:11:39 ✅ [text] cn.txt --> output/text
2021/08/29 12:11:39 ✅ [text] cloudflare.txt --> output/text
2021/08/29 12:11:39 ✅ [text] cloudfront.txt --> output/text
2021/08/29 12:11:39 ✅ [text] facebook.txt --> output/text
2021/08/29 12:11:39 ✅ [text] fastly.txt --> output/text
$ ./geoip -l
All available input formats:
- v2rayGeoIPDat (Convert V2Ray GeoIP dat to other formats)
- maxmindGeoLite2CountryCSV (Convert MaxMind GeoLite2 country CSV data to other formats)
- private (Convert LAN and private network CIDR to other formats)
- text (Convert plaintext IP & CIDR to other formats)
- clashRuleSetClassical (Convert classical type of Clash RuleSet to other formats (just processing IP & CIDR lines))
- clashRuleSet (Convert ipcidr type of Clash RuleSet to other formats)
- surgeRuleSet (Convert Surge RuleSet to other formats (just processing IP & CIDR lines))
- cutter (Remove data from previous steps)
- test (Convert specific CIDR to other formats (for test only))
All available output formats:
- v2rayGeoIPDat (Convert data to V2Ray GeoIP dat format)
- maxmindMMDB (Convert data to MaxMind mmdb database format)
- clashRuleSetClassical (Convert data to classical type of Clash RuleSet)
- clashRuleSet (Convert data to ipcidr type of Clash RuleSet)
- surgeRuleSet (Convert data to Surge RuleSet)
- text (Convert data to plaintext CIDR format)
License
This product includes GeoLite2 data created by MaxMind, available from MaxMind.