
GEOIP规则的核心判断依据
依赖内置的IP归属地数据库文件
GEOIP规则本身不进行实时网络查询,其判断依据完全依赖于Clash客户端内置的一个离线数据库文件,名为Country.mmdb或geoip.dat。这个数据库本质上是一张庞大的“IP地址段与所属国家/地区”的对照表,包含了全球数十亿个IP地址段的归属地信息。当Clash处理一个网络请求时,会提取目标服务器的IP地址,在这个数据库中进行快速索引查找,得出该IP地址归属于哪个国家或地区,以标准的两位国家代码形式返回(如CN代表中国、US代表美国、JP代表日本)。GEOIP规则就是根据这个查找到的国家代码来决定流量走向的。
GEOIP规则的标准格式与执行逻辑
GEOIP,CN,DIRECT是分流配置中最基础也最常用的GEOIP规则,其执行逻辑是“如果目标IP地址归属于中国,则直连放行”。该规则首先从请求中获取目标服务器的IP地址,在Country.mmdb数据库中查找该IP对应的国家代码,将查找到的国家代码与规则中指定的代码(CN)进行比较。若两者匹配,则执行规则指定的动作(DIRECT、PROXY或REJECT),若不匹配则继续匹配后续规则。这种基于IP归属地的分流方式适用于处理那些域名无法直接判断归属地的连接请求,也是实现“国内IP直连”目标的核心手段。
GEOIP规则与IP地址分配的动态变化
全球IP地址段的分配并非一成不变,区域互联网注册机构会定期将新的IP地址段分配给不同国家和地区的运营商和机构。当某个原本属于中国的IP地址段被重新分配给海外服务商时,若Country.mmdb数据库未及时更新,Clash就会错误地将其判断为中国IP,导致该流量走DIRECT直连而非代理通道。反之,若某个海外IP段被分配给中国境内的公司,Clash则可能错误地将其判断为境外IP而走代理。因此定期更新GEOIP数据库是维持分流准确性的必要维护操作。
GEOIP数据库的更新与维护
客户端内置的数据库更新功能
Clash Verge Rev等图形界面客户端提供了内置的GEOIP数据库更新功能,用户只需点击即可完成数据库的下载和替换。在Clash Verge Rev的「设置」页面中找到“更新GeoIP数据库”或“更新GeoData”按钮,点击后客户端会自动从官方源或配置的镜像地址下载最新的数据库文件并替换本地旧文件。更新完成后,需在「配置」页面重新加载当前配置使新的数据库生效,此后GEOIP规则的判断将基于最新的IP归属地数据进行。建议每1至2个月执行一次数据库更新,或在发现特定网站分流异常时立即更新。
手动下载并替换Country.mmdb文件
在网络环境无法访问GitHub或客户端内置更新功能失败的情况下,用户可手动下载GEOIP数据库文件并替换到Clash配置目录中。访问V2Ray官方或社区维护的GEOIP数据库发布页面(如Loyalsoldier/geoip),下载适用于Clash格式的Country.mmdb或geoip.dat文件。将下载的文件复制到Clash的配置目录(Windows下通常为%USERPROFILE%\.config\clash\,macOS/Linux为~/.config/clash/),替换原有的同名文件。替换完成后重新加载Clash配置,使新的数据库生效。
社区维护版数据库的优势与选择
除了官方提供的GEOIP数据库外,社区维护的优化版本(如Loyalsoldier/geoip)在IP归属地准确性上进行了大量人工修正和补充。官方数据库在处理中国运营商和境内公司海外业务IP时可能存在分类错误,而社区版数据库综合了多个权威数据源,对国内IP段的识别更加细致和准确。社区版还对某些特殊IP段(如CDN节点IP)进行了额外分类,避免因归属地判断错误导致的分流异常。高级用户可考虑使用社区维护版数据库替换官方版本,提升GEOIP规则的匹配准确性。
GEOIP与GEOSITE的配合使用
GEOSITE基于域名分类的匹配机制
GEOSITE是Mihomo内核提供的另一个规则类型,与GEOIP基于IP地址判断归属地不同,GEOSITE基于预编译的域名分类数据库geosite.dat进行匹配。该数据库包含了大量域名的分类标签,例如cn分类覆盖了国内常用网站(如百度、淘宝、微信),google分类覆盖了Google旗下的所有服务域名,ads分类则包含常见的广告和追踪域名。GEOSITE,cn,DIRECT规则的含义是“如果请求的域名属于国内常用网站分类,则直连放行”,这种基于域名的判断比GEOIP基于IP的判断更加精细和快速。
两者配合实现国内直连国外代理的标准分流
在实际分流配置中,GEOSITE与GEOIP搭配使用是构建“国内直连、国外代理”标准分流逻辑的最佳实践。规则顺序通常为:先配置GEOSITE,cn,DIRECT让所有已被分类为国内常用网站的域名流量直连,再配置GEOIP,CN,DIRECT让剩余未匹配的国内IP流量直连,最后配置MATCH,PROXY让所有未匹配的流量走代理。GEOSITE的域名匹配可以在DNS解析之前完成,避免了不必要的DNS查询;GEOIP的IP匹配作为兜底,确保那些域名不在GEOSITE数据库中但IP归属地为国内的请求也能被直连放行。
将GEOSITE ads用于广告拦截
GEOSITE数据库中的ads分类是广告拦截的得力工具,通过一条规则即可阻挡大量已知的广告和追踪域名。在规则列表的靠前位置添加GEOSITE,ads,REJECT,让所有属于广告分类的域名请求被直接拒绝,既不消耗带宽也不占用代理连接数。社区维护的GEOSITE数据库定期更新,持续收录新增的广告域名,用户只需定期更新数据库即可维持广告拦截的有效性。相比浏览器插件形式的广告拦截,GEOSITE规则在代理层进行拦截,覆盖范围更广,不受浏览器限制。
规则系统与策略组的协同工作
流量从规则到策略组的完整路径
当Clash处理一个网络请求时,流量依次经过规则匹配和策略组选择两个阶段,最终确定出口节点。请求首先进入rules字段,按照顺序逐条匹配,当命中某条规则时获取其指定的动作去向(如策略组名称、DIRECT或REJECT)。若去向指向一个策略组(如GEOIP,CN,🚀 节点选择),流量随后进入该策略组,由策略组根据其类型(select、url-test、fallback等)从组内的节点列表中选择一个具体的出口节点,完成最终的代理转发。这一“规则定去向、策略组选节点”的双层设计,实现了分流逻辑与节点选择的解耦。
为特定GEOIP规则配置专属策略组
用户可以为不同国家的GEOIP规则配置专属的策略组,实现“不同国家的流量走不同的节点组”。例如创建“🇺🇸 美国节点”、“🇯🇵 日本节点”等策略组,在规则中配置GEOIP,US,🇺🇸 美国节点和GEOIP,JP,🇯🇵 日本节点,让美国IP的流量固定走美国节点组,日本IP的流量固定走日本节点组。这种配置方式适合需要访问特定地区内容且对节点所在地有明确要求的场景(如Netflix区域解锁、本地化服务访问)。但需注意这种配置会增加规则列表的复杂度,且需要确保对应策略组中有可用的节点。
GEOIP规则在分流中的优先级考量
在规则列表中,GEOIP规则的位置决定了其对流量控制的有效范围,放置不当可能导致其他精细规则失效。如果将GEOIP,CN,DIRECT放在规则列表的最前面,那么所有国内IP的流量(包括某些用户希望强制走代理的特定服务)都会被直连放行,后续的精细规则无法生效。建议将GEOIP规则放在特定的域名规则(如DOMAIN-SUFFIX)和GEOSITE规则之后,让域名级别的精细规则优先匹配,GEOIP作为兜底的IP级分流手段。规则列表的顺序安排体现了流量分流的精细化程度,日常使用中若发现某特定网站分流异常,在「连接」面板中查看其命中的规则即可定位顺序问题。
规则配置的常见问题与优化
GEOIP误判导致特定网站无法访问
当特定境外网站无法访问而其他网站正常时,GEOIP数据库过旧可能是根本原因。若该网站的IP地址段在数据库中被错误地标记为CN(中国),GEOIP,CN,DIRECT规则会将其流量直连放行而非走代理通道,导致访问失败。解决方法是在Clash Verge Rev中更新GEOIP数据库,更新后重新加载配置并再次访问该网站。若更新后问题依然存在,可在规则列表顶部为该网站添加DOMAIN-SUFFIX,问题域名.com,PROXY的精确代理规则,覆盖GEOIP的误判结果。
数据库更新后的配置重载操作
更新GEOIP数据库后,需要执行配置重载操作才能使新的数据库数据被Clash内核加载使用。在Clash Verge Rev中,更新数据库后点击「配置」页面的当前配置名称旁的刷新或重新加载按钮,客户端会重新读取配置文件并加载新的数据库文件。若使用命令行版本,需重启Clash进程或向其发送SIGHUP信号触发配置重载。重载完成后,可通过GEOIP规则的匹配结果间接验证数据库是否已生效。
规则集与GEOIP数据库的版本匹配
当同时使用rule-providers外部规则集和GEOIP数据库时,需注意两者的版本匹配和更新一致性。规则集中引用的域名可能依赖于特定版本的GEOIP数据库才能正确匹配,若GEOIP数据库版本过旧,部分GEOIP规则可能无法正确识别规则集中涉及的IP段。建议将GEOIP数据库和规则集保持在同一维护周期内更新,避免因部分组件更新滞后导致的规则不一致。使用社区维护的规则集时,通常有推荐的GEOIP数据库版本配套使用,遵循社区建议可减少兼容性问题。
常见问题FAQ
GEOIP规则是根据什么来判断IP归属地的?
GEOIP规则依赖于Clash内置的Country.mmdb离线数据库,该数据库包含了全球IP地址段与所属国家/地区的映射关系。当规则匹配时,Clash提取目标IP并在数据库中查找对应的国家代码,然后与规则中指定的代码比较判断是否匹配。该数据库需要定期更新以保持准确。
更新GEOIP数据库后,为什么GEOIP规则还是判断错误?
更新数据库后需要重新加载Clash配置才能使新数据生效。在Clash Verge Rev中点击「配置」页面的重新加载按钮,或重启Clash内核后,新的GEOIP数据库才会被加载到内存中使用。若重载后仍然判断错误,可能是社区版数据库的分类逻辑与预期不同,可尝试更换其他版本或使用精确的域名规则覆盖GEOIP判断。
GEOIP和GEOSITE有什么区别?哪个更准确?
GEOIP基于IP地址归属地进行判断,适用于处理已完成DNS解析的请求;GEOSITE基于预编译的域名分类数据库进行判断,适用于域名级别的精确分流。在准确性方面,GEOSITE的域名分类通常比GEOIP的IP归属判断更精细,尤其在处理CDN和多地域部署的服务时,域名级别的规则比IP级别更可靠。两者搭配使用是最佳实践。
GEOIP,private,DIRECT这条规则的作用是什么?
GEOIP,private,DIRECT用于匹配内网私有IP地址(如192.168.x.x、10.x.x.x、172.16-31.x.x),并将这些IP的流量直连放行。该规则通常放在规则列表的最前面,确保本地网络设备(如路由器、NAS)的访问请求不会被送入代理通道。因为GEOIP数据库中包含了私有IP段的分类标记,这条规则能够准确识别和放行局域网流量。