为什么 DNS 配置值得单独关注

DNS 相关的问题通常有两种表现:DNS 污染(域名解析结果被篡改,导致访问异常或跳转到错误页面)和 DNS 泄露(代理已经开启,但 DNS 请求仍然经本地运营商解析而没有走代理,暴露了真实的访问意图)。两者的解决思路不同,但都可以通过合理配置 dns 部分解决。

Fake-IP 模式:省掉一次不必要的往返

标准 DNS 解析流程是:应用请求域名 → 走 DNS 服务器解析出真实 IP → 再发起连接,这个过程有一次额外的网络往返,如果 DNS 服务器本身还不可靠,还可能被污染。

Fake-IP 模式的做法是:解析请求发生时,先返回一个属于保留地址段的"假 IP",客户端记住这个假 IP 对应哪个域名;等真正发起连接时,再按需做实际解析或直接走代理转发。效果是省去了大部分场景下的往返查询,同时因为大部分流量最终判断要走代理,代理节点那一端解析出的 IP 更不容易被污染。

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "+.local"
    - "time.*.com"
    - "dns.msftncsi.com"

fake-ip-filter:哪些域名需要排除

Fake-IP 对绝大多数场景都没问题,但有几类域名必须排除在外,否则会出现"设备互相发现不了""游戏加速器失效""内网服务访问异常"等情况:

大多数主流客户端的默认配置已经预置了一份相对完整的排除名单,一般不需要自己从零写,遇到具体某个局域网服务连不上时,把它的域名加进 fake-ip-filter 通常就能解决。

DoH / DoT:给 DNS 查询本身加密

Fake-IP 解决的是"要不要走真实解析"的问题,而 DoH(DNS over HTTPS)/ DoT(DNS over TLS)解决的是"解析过程本身是否会被窃听或篡改"的问题——把原本明文的 DNS 请求封装进加密通道再发出去,运营商或中间节点无法看到你在查询哪个域名,也没办法篡改返回结果。

dns:
  enable: true
  nameserver:
    - "https://doh.pub/dns-query"
    - "https://dns.alidns.com/dns-query"
  fallback:
    - "https://1.1.1.1/dns-query"
    - "https://8.8.8.8/dns-query"

nameserver 是默认解析上游,fallback 是国内解析结果不理想时的备用上游,客户端会根据解析结果自动判断是否需要走 fallback。

分流解析:国内外域名走不同的上游

更进一步的做法是用 nameserver-policy 给国内域名指定国内 DNS、国外域名指定国外加密 DNS,兼顾解析速度和抗污染能力:

dns:
  nameserver-policy:
    "geosite:cn":
      - "https://doh.pub/dns-query"
    "geosite:geolocation-!cn":
      - "https://1.1.1.1/dns-query"

这样国内网站解析走本地线路更快,国外网站解析走加密上游更安全,两边互不影响。

怎么判断自己是不是遇到了 DNS 问题

如果代理已经显示连接正常(出口 IP 已经切换),但某些网站加载异常缓慢或者内容跳转到了不该出现的页面,大概率是 DNS 层面的问题,而不是代理线路的问题。可以在客户端的「连接 / Connections」面板观察具体是哪个域名解析异常,再对照上面的配置逐项排查;如果是内网设备连不上,先检查 fake-ip-filter 有没有漏掉对应域名。

写在最后

DNS 配置这一块属于"配好了就不用再管"的类型,大多数订阅服务商的默认配置已经足够日常使用。真正需要动手调整的场景通常是内网设备访问异常或者对 DNS 隐私有更高要求,按上面的思路调整对应字段即可。