GeoIP是什么意思?
一句话结论
把 IP 地址对应到国家或地区的数据库,规则里常用它判断一个地址是否属于国内。
Clash 系规则里的 GEOIP 条目会拿地址去这份库里查归属,再按结果直连或走代理。库由第三方维护,数据过旧或归属有误,就会出现国内站被送进代理的现象。
GeoIP 本质上是一张对照表:给一段 IP 地址,告诉你它登记在哪个国家或地区。代理客户端借这张表做粗粒度分流,比逐个写域名省事得多。
它在规则里怎么用
规则写成“GEOIP,国家代码,去向”的形式,例如把归属为国内的地址直连。要比对地址,请求就得先有地址:域名请求会被解析一次再查表,这也是 IP 类规则后面常见 no-resolve 的原因,细节看 Clash 规则怎么写。
在哪里会看到它
- 配置的 rules 段里的 GEOIP 条目。
- 客户端更新页里的“地理库”“GeoIP 数据”之类的更新按钮。
- 路由规则的预设选项里,如“国内地址直连”。
常见误解
- 库是完全准确的。 地址归属会变化,库也有滞后;它给出的是登记信息,不是用户的实际位置。
- GEOIP 和规则集是一回事。 前者按地址归属查表,后者是你或他人整理的域名、地址清单,见 规则集。
- 更新一次就一劳永逸。 数据需要持续更新,是否自动更新取决于客户端设置。
怎么判断它是否出了问题
国内网站变慢时,到连接记录里看这个站点命中的是哪条规则。若落在兜底规则上,说明它没被库判成国内,先更新地理库,再复测。分层排查见 开了梯子后国内网站变慢,整体概念见 分流。库的格式与更新方式随内核而异,以官方文档为准。
路由类客户端也有同样的思路:v2rayN 之类的客户端把“国内地址直连”做成了预设选项,背后依赖的同样是一份地址归属库,思路见 v2rayN 路由规则怎么设置。库里查不到的地址会怎么处理,各客户端行为不一,遇到时去看当前文档,不要凭印象判断。