很多代理客户端都支持规则分流:国内网站直连,国外网站走代理,广告或恶意域名阻断。但实际使用时,经常出现“规则写了但没生效”“明明设置代理却直连”“某个 App 总是走错线路”的情况。问题通常不在一个开关,而在匹配链路。
快速答案
代理规则是否生效,取决于客户端先看域名、还是先解析成 IP,再按 IP 或 GeoIP 判断。规则顺序、DNS 所在位置、最终策略组和兜底规则都会影响结果。技术排查要看日志里的真实命中规则,而不是只看配置文件表面。
常见规则类型
- DOMAIN:精确匹配某个域名。
- DOMAIN-SUFFIX:匹配某个后缀,例如
example.com及其子域。 - DOMAIN-KEYWORD:按关键词匹配,方便但容易误伤。
- IP-CIDR:匹配 IPv4 网段。
- IP-CIDR6:匹配 IPv6 网段。
- GeoIP:根据 IP 数据库判断地区。
- MATCH:兜底规则,前面都没命中时使用。
为什么域名规则没有命中
有些应用不会把原始域名交给代理客户端,而是先自己解析成 IP 后再连接。这样客户端只能看到 IP,看不到域名,域名规则自然不会命中。浏览器、系统组件、内置 DNS 的 App、QUIC 连接都可能让排查变复杂。
为什么 GeoIP 会判断错
GeoIP 依赖本地数据库,数据库过旧或 IP 地址归属变化后,规则结果会不准确。CDN、云服务和 Anycast 网络也会让一个服务在不同地区返回不同 IP。因此,GeoIP 适合作为大范围规则,不适合作为精确业务判断。
规则顺序怎么设计
推荐顺序是:先放需要精确处理的私有域名和业务域名,再放广告/风险域名,再放常用服务分组,然后是 GeoIP 或国家地区规则,最后用 MATCH 做兜底。不要把过宽的关键词规则放在前面,否则后面的精确规则可能永远不会执行。
排查方法
- 打开客户端连接日志,找到目标域名或 IP 的命中规则。
- 检查 DNS 是本地解析、远程解析还是 Fake DNS。
- 确认命中策略组里当前选择的是哪个节点或出口。
- 临时把目标域名写成最高优先级精确规则,验证是否能改变出口。
- 分别测试 IPv4 和 IPv6,避免只改了 IPv4 规则。
和“VPN 连接成功但 IP 没变”的关系
如果规则把浏览器、检测网站或目标域名分到了直连,用户会误以为 VPN 没连上。可以结合 VPN 连接成功但 IP 没变的排查方法 检查代理模式和浏览器缓存,再用本文确认规则命中。
FAQ
规则越多越好吗?
不是。规则越多,维护成本越高,误匹配概率也越高。关键是精确、顺序清晰、兜底明确。
DOMAIN-SUFFIX 和 DOMAIN 该怎么选?
只处理一个具体域名时用 DOMAIN;处理整个站点和子域名时用 DOMAIN-SUFFIX。
MATCH 应该走代理还是直连?
取决于你的使用目标。重视隐私和一致出口时可走代理,重视本地服务兼容时可直连。