从 Surge iOS 4.3.0 / Mac 3.5.1 版本开始,Surge DOH 的行为进行了修改:
- DOH 使用了独立的配置字段 doh-server
- 当 DOH 配置后,传统 DNS 仅用作连通性测试和 DOH URL 的域名解析
- 可配置 doh-follow-outbound-mode = true 使 DOH 请求通过代理策略执行
DNS-over-HTTPS 的意义
使用 DOH 的核心作用有两个:
- 避免 DNS 劫持:查询过程受 TLS 保护,可以避免 DNS 结果被链路所有者的篡改。
- 隐私保护:传统 DNS 使用明文进行查询,链路所有者可以知道用户访问的域名。
先前版本中如果同时配置了 DOH 和传统 DNS,会并发使用两种 DNS 进行请求,但是这样的行为是不合理的:
- 使得 DOH 的两项核心作用失效。
- 传统 DNS 的响应速度在一般情况下都会优于 DOH,DOH 的查询完全被浪费了。
所以在新版中,改为了配置 DOH 后不再进行传统 DNS 查询。
一般配置指导
如果没有发现自己的网络有出现 DNS 劫持的问题(如被插入网页广告),不需要配置 DOH,DOH 的查询效率低于传统 DNS,且复杂度高更容易出现问题。
如果需要配置 DOH,请尽量避免使用 Cloudflare/1.1.1.1 的 DOH 服务,Cloudflare 处于隐私保护考虑不支持 EDNS-Client-Subnet,会出现严重的 CDN 缓慢问题。同理,避免使用代理进行 DOH 查询。
FAQ
Q:有时 DOH 服务不可用,可否改为 DOH 失败时回退至传统 DNS?
A:那么链路所有者只要阻断 DOH 访问即可继续 DNS 劫持和统计,DOH 失去了其意义。
Q:可否配置多个 DOH 服务?
A:可以但是不推荐,DOH 查询的开销远大于传统 DNS,配置过多 DOH 会使得 Surge 消耗更多的内存。