排除列表怎么配:国内网站不走代理

开了代理,国外网站快了,国内网站反而变慢;更麻烦的是银行 App、政务网站直接打不开——这不是线路问题,是分流规则没配对。

多数客户端默认走"全局",也就是所有流量都绕一圈。国内站点被带到境外再回来,延迟翻几倍,部分站点还会因为 IP 归属异常直接拒绝。

三种排除方式,用法完全不同

方式写法适用优先级
按域名DOMAIN,example.com 或 DOMAIN-SUFFIX,example.com网站、App 接口最高
按网段IP-CIDR,10.0.0.0/8局域网、公司内网中
按进程PROCESS-NAME,WeChat.exe桌面端特定程序看实现

优先用域名。IP 会因为 CDN 变化而失效,域名相对稳定。

最小可用的排除清单

不需要维护几千条规则。下面这几类覆盖了绝大多数问题:

  • 银行与支付:各大行域名、支付宝、微信支付
  • 政务与实名:gov.cn 后缀、社保、税务、运营商营业厅
  • 局域网:192.168.0.0/16、10.0.0.0/8、172.16.0.0/12
  • 本地回环:127.0.0.0/8、::1
  • 常用国内服务:地图、外卖、网盘、音乐(如果不介意速度)

剩下的交给规则集,不要自己一条条手写。

为什么配了规则还是没用

三个原因,按出现频率排序:

1. DNS 先于规则解析了。 域名在匹配规则之前已经被解析成 IP,如果 DNS 走了境外,解析结果可能是个海外节点,规则匹配到的域名虽然命中,但连接已经指向错误地址。解决:让国内域名用国内 DNS 解析。

2. 规则顺序错了。 分流规则是自上而下匹配,第一条命中就结束。MATCH(兜底)必须放最后,否则后面的规则永远不生效。

3. 客户端缓存了旧规则。 改完规则没重启客户端,或者只重载了配置没重建连接,老连接还走着旧策略。改完先断开再连。

怎么验证某条规则生效了

最直接的方法:看这个域名实际走的出口。

# 国内站
curl -s -o /dev/null -w "%{remote_ip}\n" https://www.baidu.com

# 国外站
curl -s -o /dev/null -w "%{remote_ip}\n" https://www.google.com

如果两个的 remote_ip 都在境外,说明国内站没走直连,规则没生效。

更严谨的做法是看出口 IP:

curl -s https://api.ipify.org

访问国内站前后各跑一次,出口 IP 变化说明走了代理,没变化说明直连。

什么时候该用全局

不是所有情况都适合分流。以下场景建议直接开全局:

  • 临时排查问题,需要排除规则干扰
  • 访问的站点域名不在任何规则集里
  • 用命令行工具、Docker、虚拟机,程序自己不走规则

分流是为了"日常顺畅",全局是为了"确定能通",两者不冲突,可以按场景切。

💡 一个经验:规则不是越多越好。规则表越大,匹配越慢,出错概率越高。维护 20 条核心规则 + 一个规则集,比手写 500 条更稳。

延伸阅读:全局模式和分流模式、端口被占用怎么排查、DNS 泄露怎么自测。