为什么 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 对绝大多数场景都没问题,但有几类域名必须排除在外,否则会出现"设备互相发现不了""游戏加速器失效""内网服务访问异常"等情况:
- 局域网设备发现相关域名(如
*.lan、路由器管理页面域名)——这些需要拿到真实局域网 IP 才能正常通信。 - 网络质量检测域名(如
dns.msftncsi.com)——Windows 用它判断网络连通性,用假 IP 会导致系统误判断网状态。 - NAS / 群晖等本地设备的域名转发服务——同理需要真实 IP 才能建立本地直连。
- 部分游戏与实时通信应用——对 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 隐私有更高要求,按上面的思路调整对应字段即可。