网页走错出口,不一定是节点失效。本文适合已经能连接、但想调整国内直连和局域网访问的用户:先区分域名库与 IP 库,再更新客户端实际使用的资源,最后用一组可读的 JSON 规则核对命中顺序。重点是让规则、资源文件与运行中的内核对应起来,而不是反复更新订阅。
两个 dat 文件分别匹配什么
geosite.dat 保存按标签组织的域名集合,geoip.dat 保存按标签组织的 IP 地址段集合。它们是路由查询用的数据文件,不是节点订阅,也不负责提供服务器地址、账号或传输参数。更新数据库不会自动增加节点,也不会替你新建一条分流规则。
| 项目 | geosite.dat | geoip.dat |
|---|---|---|
| 匹配对象 | 请求中的域名 | 目标 IP 地址 |
| 常用表达式 | geosite:cn | geoip:cn、geoip:private |
| 规则字段 | domain | ip |
| 容易误解的点 | cn 是集合标签,不是只匹配 .cn 后缀 | IP 归属不等于网站所属地区 |
geosite:cn 的具体内容由资源维护方决定。某个域名是否收录、是否包含某些子域名,要看该集合的数据,不能仅靠域名后缀猜测。同样叫 geosite.dat 的两个文件,也可能来自不同数据源,包含不同的标签。
geoip:private 常用于让局域网等非公网目标直接连接。常见私有 IPv4 地址段如下;这只是常用范围举例,不是对该标签全部内容的展开。
结论:先确认请求带的是域名还是 IP
访问路由器的 192.168.1.1 时先检查 IP 规则;某个网站走错出口时先检查域名规则。不要用更新域名库的方式修复一个写错的局域网 IP 规则。
v2rayN:更新 Geo 资源并确认生效
桌面端先确认当前配置使用的内核和资源格式。以下针对使用 Xray 或 V2Fly 内核、读取 dat 资源的配置。若当前配置使用的是其他资源格式,更新 dat 文件不会改变那套规则。菜单名称会随客户端版本调整,先以当前界面为准,不要在安装目录里批量替换同名文件。
-
保留当前规则
进入主界面「设置」→「路由设置」,记录当前启用的路由方案及规则顺序。使用自定义配置时,另外保留原 JSON 文件,避免后面无法对照。
-
执行资源更新
在带有该入口的版本中,打开「检查更新」→「更新 Geo files」。等待更新任务结束,不要把「更新订阅」当作这一步的替代操作。
-
核对更新日志
查看主界面日志中的下载结果,分别确认 geoip 和 geosite 的处理状态。只有一个文件成功时,应先处理另一个失败项,而不是直接宣布分流已经恢复。
-
重启当前服务
更新完成后重启核心服务,或退出客户端后重新启动。重新发起网页连接,再看新的路由日志;原有长连接不适合作为规则更新的验证对象。
下载失败通常要分成两类:请求资源时超时,说明更新通路需要排查;下载完成后启动报错,则要检查文件格式与集合标签。若客户端提供通过代理更新资源的选项,可在已有可用连接时尝试。切换了数据源以后,尤其要留意自定义规则引用的标签是否仍然存在。
v2rayNG:从资源文件入口更新
安卓上的 v2rayNG 使用 Xray 内核。支持资源管理的版本可从左上角菜单进入「资源文件」,查看资源条目,并通过页面提供的更新操作获取新文件。不同版本可能使用文字按钮或更新图标;操作前先读清当前条目的文件名,避免只更新了 geoip 而漏掉 geosite。
-
确认现用路由
从左上角菜单进入「路由设置」,记录当前选择的模式与自定义规则。若使用完整自定义 JSON,还要检查其中是否引用了额外的数据文件。
-
打开资源文件
返回菜单,进入「资源文件」,检查 geoip.dat、geosite.dat 对应的资源条目。旧版没有该入口时,不要把文件随意复制进系统下载目录后就认为已经导入。
-
更新并看结果
执行页面上的更新操作,等待每个资源返回结果。失败时记录提示文字;网络超时、资源地址不可用和文件无法加载,需要分别处理。
-
重新连接测试
停止连接后重新启动,再进入「日志」观察启动与访问记录。用一次新的浏览器访问验证,而不是只看主界面连接按钮是否处于开启状态。
Android 的应用私有目录与普通下载目录不是一回事。手动下载文件后,必须通过客户端支持的导入或资源管理流程交给内核读取。另一个容易漏掉的前提是分应用代理:如果浏览器被排除在 VPN 接管范围之外,修改内核路由不会改变这个浏览器的出口。
- 更新订阅:更新节点信息及订阅内容,通常不等于更新内核的 Geo 资源。
- 更新资源:替换集合数据,不会自动启用一个路由模式。
- 切换路由:决定哪些规则参与匹配,不会自动修复损坏或缺失的资源文件。
路由 JSON:字段、出口标签与匹配顺序
下面是供 Xray/V2Fly 风格配置参考的 routing 片段,不是可以独立启动的完整配置。它假定已有名为 direct 和 proxy 的出站:前者指向直连出站,后者指向已有节点。标签只是引用名称,写成 direct 并不会自动创建直连功能。
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
规则按顺序检查,首先命中的规则决定出口。最后一条覆盖普通 TCP、UDP 流量,所以必须放在这些具体规则后面。若提前放到第一条,后面的国内直连规则就没有机会处理这些连接。
| 字段或写法 | 含义 | 检查重点 |
|---|---|---|
domain | 对域名进行匹配 | geosite:cn 应放在这里 |
ip | 对目标 IP 进行匹配 | geoip:private 应放在这里 |
outboundTag | 引用已有出站的 tag | 拼写、大小写必须对应 |
AsIs | 不为路由匹配额外解析域名 | 域名未命中时,不会主动查 IP 集合 |
这里选择 AsIs,是为了把行为讲清楚:如果传给路由的是域名,而域名不在 geosite:cn 中,内核不会仅为命中 geoip:cn 再解析一次地址,最终会落到代理规则。请求已经带着 IP 时,才可直接检查这里的 IP 条件。
同一条规则中,domain、ip、port 等不同条件通常需要同时满足;同一字段数组中的多项则表示该字段的多个候选。想表达“域名属于国内,或者 IP 属于国内”,应像示例一样分成两条,而不是把两个字段塞进同一个对象。
自动更新还是手动替换:按维护方式选择
日常使用更需要稳定的数据源和明确的更新结果,而不是每次都换一套标签。只有当内置资源确实缺少所需集合、或者需要定位某次更新带来的变化时,手动管理才更有意义。
客户端内置更新
推荐从客户端的 Geo 更新或资源文件入口执行,资源位置由客户端管理。更新后仍要重启服务,并核对日志是否成功加载。
适合:使用常见集合、希望减少路径错误的日常配置
手动替换资源
先确认内核实际资源目录,再保留旧文件并替换。还要确认新文件包含规则引用的标签,不能只看文件名是否相同。
适合:自定义数据源、需要固定资源或回退对照的配置
结论:一次只改变一层
先只更新资源并重启,验证后再调整规则。若同时换节点、改 DNS、换数据库和重排路由,即使问题消失,也很难知道是哪一步起了作用。
更新后仍然走错出口:按日志逐项排查
验证时选三类目标即可:一个确实可访问的局域网服务、一个需要直连的网站、一个预期走代理的网站。记录测试目标、预期出口和实际日志。不必追求一张复杂测速表,先确认每类连接是否进入了正确出站。
- 启动阶段:查找资源文件不存在、无法加载集合、找不到出站标签等提示。启动失败时,先不要讨论网页命中了哪条规则。
- 访问阶段:在日志级别允许显示访问记录时,观察目标与出站标签。没有记录,先检查系统代理、VPN 接管或分应用设置。
- 命中阶段:若显示代理出口,核对前面的域名集合是否包含目标,以及是否有更早的宽泛规则。
- 连接阶段:若已经命中直连但仍打不开,继续查本地 DNS、目标服务和直连网络,不要把所有失败都归因于数据库。
更新完成,为什么还提示找不到 cn 集合?
先确认更新的是内核实际读取的文件,再看数据源是否提供 cn 标签。停止核心、恢复此前可用的资源后重新启动;若恢复后正常,再检查新数据源的集合说明,不要只重复点击更新。
国内网站还是走代理,应该把 geoip:cn 放最前面吗?
先查看请求是域名还是 IP。使用 AsIs 时,把 IP 规则提前并不会让一个未解析的域名自动变成 IP。先检查 geosite:cn 和更早的规则,再决定是否调整域名解析策略。
有 private 规则,怎么还打不开家里的设备?
先用设备的实际局域网 IP 测试。若只用主机名失败,要单独核对局域网名称解析;若 IP 也失败,检查客户端是否绕过局域网、VPN 是否接管该流量,以及目标服务是否监听在可访问的地址上。
把 domain 和 ip 写在一条里,为什么更难命中?
不同字段不是简单的“或”关系。把国内域名与国内 IP 拆成两个规则对象,按预期顺序排列,再重启核心。客户端路由编辑器若会自动生成配置,也要核对最终生成的规则,而不是只看输入框。
最后保留一份可工作的配置和资源来源记录。下一次出现分流异常时,先比较规则顺序与资源变化,再检查连接路径。这样能分清是集合内容改变、配置引用错误,还是流量根本没有进入内核。