GeoIP

概述

参考:

在 IT 中,Internet geolocation(互联网地理定位,简称 GeoIP) 是能够推断连接到互联网的设备的地理位置的软件。例如,设备的 IP 地址可用于确定国家、城市或邮政编码,从而确定其地理位置。其他方法包括检查 Wi-Fi 热点、

IP 地址分配机制

参考:

IPv4 和 IPv6 地址通常以分层方式分配。ISP(互联网服务提供商) 为用户分配 IP 地址。ISP 从 LIR(本地互联网注册机构)NIR(国家互联网注册机构)RIR(相应的区域互联网注册机构) 获取 IP 地址分配

500

登记处覆盖面积
AFRINICAfrica Region(非洲地区)
APNICAsia/Pacific Region(亚洲/太平洋地区,亚太地区)
ARINCanada, USA, and some Caribbean Islands(加拿大、美国、一些加勒比岛屿)
LACNICLatin America and some Caribbean Islands(拉丁美洲、一些加勒比岛屿)
RIPE NCCEurope, the Middle East, and Central Asia(欧洲、中东、中亚)

对 IP 地址的主要作用是根据全球政策所述的需求将未分配地址池分配给 RIR,并记录 IETF 所做的协议分配。当 RIR 需要在其区域内分配或分配更多 IP 地址时,我们会向 RIR 进行额外分配。我们不会直接向 ISP 或最终用户进行分配,除非在特定情况下,例如分配多播地址或其他协议特定需求。

APNIC 是全球 5 个地区级的 Internet 注册机构(RIR)之一,负责亚太地区的以下事务:

  1. 分配 IPv4 和 IPv6 地址空间,AS 号;
  2. 为亚太地区维护 Whois 数据库;
  3. 反向 DNS 指派;
  4. 在全球范围内作为亚太地区的 Internet 社区的代表。

所以,中国大陆境内的地址都会登记在 APNIC 的地址库内。地址库获取方式: http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

例如在 Linux 系统中,使用 wget 命令可以拉取 delegated-apnic-latest 文件。

~]# wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
--2024-10-08 15:27:32--  http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
Resolving ftp.apnic.net (ftp.apnic.net)... 203.119.102.40, 2001:dd8:8:701::40
Connecting to ftp.apnic.net (ftp.apnic.net)|203.119.102.40|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3875233 (3.7M) [text/plain]
Saving to: ‘delegated-apnic-latest’

delegated-apnic-latest             100%[===============================================================>]   3.70M   550KB/s    in 8.5s

2024-10-08 15:27:42 (448 KB/s) - ‘delegated-apnic-latest’ saved [3875233/3875233]

~]# ls -lh
total 3788
-rw-r--r-- 1 root root 3.7M Oct  7 23:17 delegated-apnic-latest

文件内容条目参考如下:

apnic|JP|asn|173|1|20020801|allocated
apnic|ID|ipv4|43.240.228.0|1024|20140818|allocated
apnic|HK|ipv6|2001:df5:b800::|48|20140514|assigned

条目格式如下:

注册机构|国家代码|类型|起始位|长度|分配日期|状态

  • 注册机构:亚太地区一般为 apnic
  • 国家代码:ISO-3166 定义的两位国家或地区代码,如中国为 CN
  • 类型:asn(Autonomous System Number,自治系统编号),也就是 BGP 的 AS 编号;ipv4,IPv4 地址;ipv6,IPv6 地址
  • 起始位:第一个 ASN 编号或 IP 地址
  • 长度:从第一个起始位开始,申请分配多少的编号或地址
  • 分配日期:国家或地区向 APNIC 申请的日期
  • 状态:allocated 和 assigned,都是已分配

所以,需要将 delegated-apnic-latest 文件中所有国家为 CN、且类型为 ipv4 的条目导出,并转换为静态路由格式。

例如使用命令将符合条件的条目导入到 china 文件中。

~]# cat delegated-apnic-latest | grep CN > chinaCN
~]# cat chinaCN | grep ipv4 > china
~]# tail china
apnic|CN|ipv4|223.223.176.0|2048|20100813|allocated
apnic|CN|ipv4|223.223.184.0|2048|20100813|allocated
apnic|CN|ipv4|223.223.192.0|4096|20100806|allocated
apnic|CN|ipv4|223.240.0.0|524288|20100803|allocated
apnic|CN|ipv4|223.248.0.0|262144|20100713|allocated
apnic|CN|ipv4|223.252.128.0|32768|20110131|allocated
apnic|CN|ipv4|223.254.0.0|65536|20100723|allocated
apnic|CN|ipv4|223.255.0.0|32768|20100810|allocated
apnic|CN|ipv4|223.255.236.0|1024|20110311|allocated
apnic|CN|ipv4|223.255.252.0|512|20110414|allocated

可以查看文件行数,代表有多少条明细条目

~]# wc -l china
8657 china

然后根据起始位和长度,转换出静态路由所需的目的地址和掩码即可。在 excel 中通过对长度进行函数运算,可以得到掩码长度,如:=32-LOG(E2,2),代入 2048 的话,可得到掩码长度为 21。操作后得到类似下图的表格:

image.png

先将表格内容复制到记事本中,再从记事本粘贴到 Word 中,即可得到带有内容字段、tab 制表符和段落标记的内容。如下:

  • 1.0.1.0 CN 24 apnic
  • 1.0.2.0 CN 23 apnic
  • 1.0.8.0 CN 21 apnic

这就简单了,使用 Word 的替换功能,对对应字段进行替换就可以得到形如下文的配置:

  • int loop 1
  • ip add 1.12.0.1 14
  • int loop 2
  • ip add 1.24.0.1 13
  • int loop 3
  • ip add 1.48.0.1 15
  • int loop 4
  • ip add 1.56.0.1 13
  • int loop 5
  • ip add 1.68.0.1 14

再把配置分别刷入到 11 台设备当中,配置好 OSPF 和 BGP 就可以了。

image.png

IP 应用场景

标记中文描述
ANY任播网络属于数据中心的一部分,任播网络;如:8.8.8.8
CDN内容分发属于数据中心的一部分,内容分发网络
COM商业公司以盈利为目的的公司
DNS域名解析用户提供域名解析服务的 IP;如:8.8.8.8,114.114.114.114
EDU教育机构学校/教育机构使用的 IP
GTW企业专线固定 IP,中大型公司专线上网的 IP
GOV政府机构政府单位使用的 IP
DYN动态 IP家庭住宅用户使用的 IP
IDC数据中心机房/云服务商使用的 IP
IXP交换中心网络交换中心使用的 IP
MOB移动网络基站出口 IP(2G/3G/4G/5G)
NET基础设施网络设备骨干路由使用的 IP
ORG组织机构非营利性组织机构
SAT卫星通信通过卫星上网的出口 IP
VPN代理网络属于数据中心的一部分,专门做 VPN 业务的

最佳实践

参考:

GitHub 项目,lionsoul2014/ip2region # 一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。

https://github.com/Loyalsoldier/geoip # GeoIP 规则文件加强版,支持自行定制 V2Ray dat 格式文件 geoip.dat、MaxMind mmdb 格式文件、sing-box SRS 格式文件、mihomo MRS 格式文件、Clash ruleset、Surge ruleset 等。


最后修改 October 12, 2024: devops change dir, QUIC (5119fbe6)