09-05 客户端分流与 DNS:国内直连、国外代理

用途

节点搭好了,客户端(Clash/Shadowrocket)怎么决定哪些走代理、哪些直连?这篇讲分流规则、fake-ip 机制,以及一个真实拖慢速度的坑:被墙的国外 DoH。 关联:05-01 DNS03-02 子网掩码与CIDR09-04 域名_DNS与换IP流程


一、订阅、节点、规则是三件事

容易混的三个东西:

  • 节点:一台出口服务器的连接信息(地址、协议、密钥)。
  • 订阅链接:一个网址,里面是一串节点(常是 base64 编码的 vless 列表)。它只有节点,不含分流规则
  • 规则:决定每个连接走代理还是直连,由客户端配置(Clash 看配置里的 rules,Shadowrocket 看 App 的路由模式)。

一个常见报错

把订阅链接(base64/V2Ray 格式)导进 Clash 会报 invalid yaml——因为 Clash 要 YAML 格式,订阅给的是 base64。所以:电脑 Clash 用 YAML 配置文件,手机 Shadowrocket/v2rayNG 用订阅链接,别搞混。

二、分流规则:从上往下匹配

规则从上到下逐条匹配,命中即生效。典型「国内直连、国外代理」:

rules:
  - IP-CIDR,127.0.0.0/8,DIRECT        # 本地/局域网直连(CIDR 见 [[03-02 子网掩码与CIDR]])
  - IP-CIDR,192.168.0.0/16,DIRECT
  - GEOSITE,category-ads-all,REJECT   # 广告域名拦截
  - GEOSITE,cn,DIRECT                 # 中国网站清单 → 直连
  - GEOIP,CN,DIRECT,no-resolve        # 中国 IP 清单 → 直连
  - MATCH,节点选择                     # 其余(国外)→ 走代理
  • GEOSITE,cn / GEOIP,CN持续维护的「中国网站/IP 大库」,这就是所谓「现成通用规则」,不用自己手写几千条。
  • 决定走代理还是直连的是规则(清单),不是 DNS。DNS 只负责「报号码」,规则才是「调度员」。
  • 手机 Shadowrocket:全局路由选「配置」,它内置的默认规则就是国内直连/国外代理,开箱即用(浏览器流量也一起按规则走)。

三、fake-ip:假号码是「对照牌」不是被忽略

现代客户端常用 fake-ip 模式。访问国外域名时,客户端不去真查它的 IP,而是立刻返回一个「假 IP」(如 198.18.x.x):

  1. 浏览器拿假 IP 发起连接。
  2. 所有流量都经客户端这道关,它一看是假 IP,就查出这是哪个域名(如 youtube.com)。
  3. 按规则把这个连接送进代理,真正的域名解析在海外服务器上做(海外查 = 又快又准)。

比喻

假 IP 像寄存柜号码牌 🎫:柜员(客户端)记下「5 号 = 你的外套(youtube.com)」。号码牌本身不是真地址,但你拿它回来,柜员一看就知道要取什么。所以假号码不是被丢掉,是客户端用来翻回真域名的线索

四、DNS 配置与一个拖慢速度的坑

最终的 DNS 配置(已优化):只用国内 DNS,没有国外的

nameserver: [223.5.5.5, 119.29.29.29]          # 阿里 + 腾讯,一主一备
proxy-server-nameserver: [223.5.5.5, 119.29.29.29]  # 专门解析"节点服务器域名",拿真实 IP
fake-ip-filter: ["+.自己的域名"]                # 节点域名不走 fake-ip

真实踩坑:被墙的 DoH 拖慢一切

早期配置里有国外的加密 DNS(DoH)https://1.1.1.1/dns-querydns.google。它们在国内被墙,客户端每次解析都先去问、等到超时才换——网页就卡在「正在打开」。去掉它们、改用国内 DNS 后秒开。

不影响隐私:国外网站的查号在海外服务器上做(fake-ip 机制),根本不经过国内 DNS,国内 DNS 只查国内站。

为什么国内查号这么快?靠就近(anycast)+ 多级缓存 + 查询本身是超轻量的小包问答——慢的从来不是查号,是「等被墙的查号台超时」。

五、加域名解析方向(速记)

  • 国外站(YouTube):规则判「走代理」→ 给假 IP → 交海外服务器查真实地址。
  • 国内站(百度):规则判「直连」→ 用国内 DNS 查真实地址 → 直接连,不绕海外。

一句话总结

走代理还是直连由「规则清单(GEOSITE/GEOIP)」决定,不是 DNS。fake-ip 给国外域名发「对照牌」、真解析在海外做。DNS 只用国内的(去掉被墙的国外 DoH),又快又不泄露隐私。


关联笔记