国内外 DNS DoH 速度实测
最近发现上网速度变慢,发现是 101 被运营商阻断了…
之前用的 Cloudflare 也被阻断过…
所以能用的越来越少了,测一下速度,看看哪家能用。
DNS(域名解析系统)设置的合适与否,对上网体验影响很大。
而国内域名服务商会劫持 DNS 查询结果,
所以一般要在某工具上设置分流查询 DNS 达到最佳速度和准确性,
将国内服务分流到国内服务商,国外服务分流到国外服务商。
DNS 有三种协议:
协议 | 描述 |
---|---|
UDP | 明文传输,被劫持,仅在特殊情况使用 ![]() |
DoT(DNS over TLS) | TLS 加密,相对安全,但固定使用 853 端口很容易被识别和拦截。此地无银三百两,虽然能用但不推荐使用 ![]() |
DoH(DNS over HTTPS) | 普通网页协议加密,相对安全,推荐使用 ![]() |
测试环境
使用开源 DNS 测速工具 dnspyre 测速
模拟日常真实情况:
- 使用 Wi-Fi 网络连接
- 关闭所有代理工具直连运营商网关
- 1000 个 Alexa 热门域名随机选择
- 包含 IPv4 和 IPv6 类型
- 限时 30 秒
注:
- 坐标中部地区,运营商是电信,光猫拨号,测试时间
2024-10-18 18:00-22:00
- 中部电信非常严格,有强中强,许多其他省份能使用的服务商,这里都无法稳定使用,下面列出 IP 均被阻断的服务商,不能使用不参与测试:
Google
TW Quad 101
CleanBrowsing
DNS.SB
PowerDNS
- 等等(所以测试能用的服务商挺稀少的,而且能用的过段时间可能就又不能用了)
- 部分服务商的域名默认解析到 IPv6 地址会导致测试失败,如:
IBM Quad9
的dns.quad9.net
,使用dig @1.0.0.1
到的 IPv4 地址测试,如有多个 IPv4 地址,仅列出测试平均延迟值最小的一个
测试命令示例:
dnspyre --duration 30s -c 10 -t A -t AAAA https://mirror.ghproxy.com/https://raw.githubusercontent.com/Tantalor93/dnspyre/master/data/1000-domains --probability 0.33 --server https://doh.pub/dns-query
结果数据
原始数据太长不在此处列出
国内服务商
参赛选手
服务商 | DoH | 备注 |
---|---|---|
基准测试 | 192.168.1.1 | 运营商的 DNS 非 DoH |
阿里 | https://223.5.5.5/dns-query | |
腾讯 | https://doh.pub/dns-query |
测试结果(由好到差)
服务商 | 总响应数 | 成功响应数 | QPS | 平均响应时间 | 标准差 | p50 | p90 |
---|---|---|---|---|---|---|---|
基准测试 | 2343 | 1946 | 68.8 | 71.79ms | 269.33ms | 16.78ms | 46.14ms |
阿里 | 2175 | 1795 | 63.8 | 135.2ms | 294.87ms | 37.75ms | 301.99ms |
腾讯 | 1545 | 1335 | 47.0 | 193.04ms | 307.75ms | 83.89ms | 469.76ms |
国外服务商
参赛选手
服务商 | DoH | 备注 |
---|---|---|
IBM Quad9 | https://9.9.9.9/dns-query | 域名无法使用 |
EasyMosdns | https://doh.apad.pro/dns-query | 是智能分流服务,详见 apad.pro |
OpenDNS | https://208.67.222.222/dns-query | 域名无法使用 |
CIRA Canadian Shield | https://private.canadianshield.cira.ca/dns-query | |
0ms | https://0ms.dev/dns-query | |
Comss.one | https://dns.controld.com/comss | |
DeCloudUs | https://dns.decloudus.com/dns-query | |
Cloudflare | https://1.0.0.1/dns-query | 域名无法使用 |
dnswarden | https://dns.dnswarden.com/uncensored |
测试结果(综合性能由好到差)
服务商 | 总响应数 | 成功响应数 | QPS | 平均响应时间 | 标准差 | p50 | p90 |
---|---|---|---|---|---|---|---|
IBM Quad9 | 1027 | 872 | 31.3 | 279.2ms | 240.41ms | 201.33ms | 452.98ms |
EasyMosdns | 1188 | 496 | 39.5 | 210.56ms | 285.89ms | 96.47ms | 419.43ms |
OpenDNS | 897 | 754 | 29.9 | 332.06ms | 254.68ms | 226.49ms | 637.53ms |
CIRA Canadian Shield | 858 | 733 | 28.5 | 326.49ms | 312.04ms | 234.88ms | 452.98ms |
0ms | 851 | 733 | 28.3 | 334.34ms | 228.12ms | 260.05ms | 671.09ms |
Comss.one | 552 | 461 | 17.4 | 383.25ms | 410.57ms | 167.77ms | 872.42ms |
DeCloudUs | 427 | 353 | 14.2 | 469.83ms | 310.31ms | 369.1ms | 838.86ms |
Cloudflare | 387 | 334 | 12.9 | 738.93ms | 353.97ms | 704.64ms | 1.14s |
dnswarden | 167 | 70 | 5.6 | 1.25s | 856.12ms | 1.21s | 2.68s |
注:所有时间数据均已四舍五入到小数点后两位。
- QPS 代表每秒查询数(Questions per second)。
- 标准差(Standard Deviation)表示响应时间的波动情况,值越大表示响应时间越不稳定。
- p50 表示响应时间的中位数,即有一半的请求响应时间小于或等于该值。
- p90 表示 90% 的请求响应时间小于或等于该值。
结论
最后我选择了 阿里
、腾讯
作为国内服务商,IBM Quad9
、EasyMosdns
作为国外服务商。
当然如果你的位置和我不同,每个服务的优劣也可能不同,有兴趣的可以自己测试。
神秘代码
# Mihomo
dns:
enable: true
listen: 0.0.0.0:1053
prefer-h3: true
ipv6: true
default-nameserver:
- https://223.5.5.5/dns-query
nameserver-policy:
"geosite:tld-cn,private,cn":
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
"geosite:tld-!cn,gfw,geolocation-!cn":
- https://9.9.9.9/dns-query
- https://doh.apad.pro/dns-query
nameserver:
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
fallback:
- https://9.9.9.9/dns-query
- https://doh.apad.pro/dns-query
先别开香槟
我很疑惑为什么之前被阻断的 Cloudflare 现在测试居然又能用了,
是 DoH 现在也能被 GFW 精准识别了吗?
随后 Google 到了这篇 2024-03-01
的文章:中国互联网络防火墙已经可以精确识别与境外 DNS over HTTPS(DoH) 服务器的连接
前几天我位于中国大陆的监控服务器突然报异常状态,显示与五台位于中国大陆境外的 DoH 服务器丢失连接,状态为 ERROR_CONNECTION_RESET(连接已重置),通过技术手段排查,发现连接在中国大陆的网络出口处被重置,这无疑是域名被封锁的现象。
继续进行后续排查,发现有且仅有这五个 DoH 所在的域名被封锁,甚至于其中一个位于中国香港的服务器绑定的域名也未能幸免于难,但其余所有子域名,包括位于中国大陆的 DoH 域名都没有受到任何影响。
为了验证该判断,我选择了一个用作蜜罐域名,并在其上搭建了完整的 DoH 服务,并使用位于中国大陆的一台服务器持续不断地向其发送 DoH 请求。大概 4 个小时后,我的监控服务器又报出了异常状态,正是该蜜罐域名丢失连接,这证实了我的假设:“中国互联网络防火墙已经可以精确识别与境外 DNS over HTTPS(DoH) 服务器的连接并加以封锁”。
鉴于以上情况,结合之前 Google(8.8.8.8)、Cloudflare(1.1.1.1) 等大型公开 DNS 服务器被 DNS 抢答的现状分析,说明如今中国互联网络防火墙不仅不允许在大陆内架设 DNS 服务器,也不允许位于大陆的网民访问外部的 DNS 服务器,更别提在境外架设公开 DNS 服务器用于国内访问了。
我已经关闭位于中国大陆境外的五台 DoH 服务器的公共访问,在研究出更为合规的直接 DNS 请求方式、或该封锁被证实不再存在之前,不再提供位于境外的任何直接 DNS 解析服务。
看来想要使用国外 DoH 可能需要将 DNS 查询也通过代理工具转发,缺点是会增加延迟、降低速度…
当然这和我需求的速度快、准确性高也就是本文的主题关系不大,只能有时间再写一写 Tunnel、Cache 了。
参考文档
下列文档内列出的所有国外服务商均已测试,本文内没写说明是无法使用的…
- 国内目前可用的DoH(2024-9-21)
- 国内可用的 IPv4 公共加密 DNS:DoH/DoT/DoQ
- dnspyre 测速工具文档
- 中国互联网络防火墙已经可以精确识别与境外 DNS over HTTPS(DoH) 服务器的连接
更新日志
欢迎继续补充服务商以测试