china-operator-ip/README.md
Yifan Gao 8c2bce5511
Some checks failed
Build / build (push) Has been cancelled
Update README.md: add related projects
2025-04-12 14:15:56 +00:00

87 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 中国运营商IP地址库
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fgaoyifan%2Fchina-operator-ip.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fgaoyifan%2Fchina-operator-ip?ref=badge_shield)
依据中国网络运营商分类的IP地址库
## 为什么创造这个项目
在国内BGP/ASN数据分析的商业服务只有一个[ipip.net](https://www.ipip.net)是目前运营商IP库准确度最高的服务商我认为没有之一。
随着互联网规模的增加为了处理大批量的路由数据边界网关协议即BGP下同应运而生是互联网的基础协议之一。为了保证了全球网络路由的可达性但凡需要在互联网中注册一个IP都需要借助BGP协议对外宣告这样互联网中的其他自治域才能学习到这段地址的路由信息其它主机才能成功访问这个IP。因此可以说BGP数据是最适合分析运营商IP地址的数据来源之一。
但是目前国内绝大多数IP库都由[WHOIS数据库](https://ftp.apnic.net/apnic/whois/apnic.db.inetnum.gz)作为基础数据来源。WHOIS数据仅表示某个IP被哪个机构注册但无从知晓该IP被用在何处这就导致许多非运营商自己注册的IP地址无法被正确分类。ipip.net是最早开始做BGP/ASN数据分析的公司之一数据准确性甩其它库几条街。但很可惜是ipip.net作为商业公司绝大多数高质量的IP数据都是收费的且价格不菲。
由于在做其他课题时需要处理BGP数据本着开源精神我将这部分代码重新封装创造了这个项目。至于如何使用大家可以自己发挥想象力。如[@ustclug](https://github.com/ustclug)将其用在权威DNS服务器上做分域解析我则借助这个IP库做了一个多出口的网关访问不同的运营商时走不同的线路如果都不匹配则走国外vps原因你懂的
但由于个人精力有限IP库的覆盖率并不及ipip.net尤其是一些骨干网节点的地址这些地址往往是核心路由设备或企业托管给运营商的地址对普通用户影响不大。
如果大家有任何建议或疑问欢迎提交issue。
## 收录的运营商
* 中国电信(chinanet)
* 中国移动(cmcc)
* 中国联通(unicom)
* ~~中国铁通(tietong)~~<即将废弃>
* 教育网(cernet)
* 科技网(cstnet)
* 鹏博士(drpeng) <试验阶段>
* 谷歌中国(googlecn) <试验阶段>
*P.S. 由于移动与铁通已合并,铁通集合即将废弃,详见[issue #10](https://github.com/gaoyifan/china-operator-ip/issues/10)。处于兼容性考虑,当前铁通的预生成数据同中国移动,未来将择机移除铁通。*
*P.S. 鹏博士集团包括鹏博士数据、北京电信通、长城宽带、宽带通的IP地址并非全都由独立的自治域做宣告目前大部分地址仍由电信、联通、科技网代为宣告。故[列表](https://github.com/gaoyifan/china-operator-ip/blob/ip-lists/drpeng.txt)中的地址仅为鹏博士拥有的部分IP地址且这些IP同时具有电信、联通两个上级出口。详见[issue #2](https://github.com/gaoyifan/china-operator-ip/issues/2).*
*P.S. 如果需要国内所有地址的集合,请参考 [chnroutes2](https://github.com/misakaio/chnroutes2) 项目*
## 如何获取数据
### 使用预生成结果
IP列表CIDR格式保存在仓库的[ip-lists分支](https://gaoyifan.github.io/china-operator-ip/index.html)中GitHub Actions每日自动更新。
```sh
git clone -b ip-lists https://github.com/gaoyifan/china-operator-ip.git
```
P.S. [stat文件](https://github.com/gaoyifan/china-operator-ip/blob/ip-lists/stat)记录了各运营商的IP数量的统计信息。
### 从BGP数据生成
#### 安装依赖
* [bgptools](https://github.com/gaoyifan/bgptools) (`cargo install bgptools --version 0.0.3`)
* [bgpdump](https://bitbucket.org/ripencc/bgpdump-hg/wiki/Home) (`apt install bgpdump`)
* [cidr-merger](https://github.com/zhanhb/cidr-merger) (`go get github.com/zhanhb/cidr-merger`)
#### 生成IP列表
```shell
./generate.sh
```
#### 统计IP数量
```shell
./stat.sh
```
## 社区关联项目
- [OneOhCloud/One-GeoIP](https://github.com/OneOhCloud/one-geoip): 每日更新的适用于 sing-box 的规则集
- [fcshark-org/route-list](https://github.com/fcshark-org/route-list): 每日更新的适用于 dnsmasq 的规则集
- [zxlhhyccc/smartdns-list-scripts](https://github.com/zxlhhyccc/smartdns-list-scripts): smartdns 使用的规则集
## 致谢
* 感谢[boj](https://ring0.me)师兄提出的[设计建议](https://github.com/ustclug/discussions/issues/79#issuecomment-267958775)
* 感谢[University of Oregon Route Views Archive Project](http://archive.routeviews.org)项目提供BGP数据源
* 感谢[Travis CI](https://travis-ci.org)提供优秀的持续集成平台
* 感谢[GitHub](https://github.com/features/actions)提供计算资源
* 感谢[cidr-merger](https://github.com/zhanhb/cidr-merger)项目提供高效的IP地址合并工具
* 感谢[bgpdump](https://bitbucket.org/ripencc/bgpdump/wiki/Home)项目提供rib数据的读取工具
## 协议
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fgaoyifan%2Fchina-operator-ip.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fgaoyifan%2Fchina-operator-ip?ref=badge_large)