DEV Community

Yawata Yahaha
Yawata Yahaha

Posted on • Originally published at deeprouter.org on

国内外DNS服务器推荐列表

😀
之前介绍了不少关于MosDNS、AdGuard Home和OpenClash的内容,里面绕不开的一个部分就是:用来解析国外域名,获取无污染解析结果的DNS服务器应该选择哪家,或者说有哪些无污染的公共DNS服务器可以选择。今天这篇文章,就对我使用过的DNS服务器进行一个整理,并进行无污染DNS服务器的推荐。

📝 个人对DNS服务器选择的看法

DNS服务器的主要作用是将域名解析转换为IP地址,同时支持负载均衡、高可用性、反向解析、缓存加速等功能。DNS是互联网的基础设施之一,几乎所有的网络通信都依赖于DNS服务。所以选择一个稳定、高速且无污染的DNS的重要性不言而喻。在使用DNS分流的情况下,对国内域名与国外域名分别配置DNS可以有效提升解析速度与准确性,例如我在使用的MosDNS和AdGuard Home。

📝 国内DNS服务器

国内的公共DNS服务选择不多,我认为国内DNS只有三个选择,阿里云公共DNS(阿里巴巴)、DNSPod(腾讯)以及各省市运营商下发的DNS。阿里云公共DNS和DNSPod均支持ECS(edns-client-subnet)协议,在一定程度上可以缓解整体解析速度不如运营商DNS的情况。其他例如114、360、百度等等,均有前科,不太推荐选择。

同时在国内DNS的选择及使用上,我个人更推荐使用DOH、DOT方式,避免DNS泄露给运营商,从而产生DNS劫持。在部分省份,运营商DNS劫持会将目标网站的解析结果返回为反诈页面,例如被运营商DNS劫持到www.js96110.com.cn

名称 标准DNS地址 DOH地址 DOT地址 是否支持H3 ECS
DNSPod 119.29.29.29 / 182.254.116.116 https://doh.pub/dns-query dot.pub 支持
AliDNS 223.5.5.5 / 223.6.6.6 https://dns.alidns.com/dns-query dns.alidns.com 支持

📝 国外DNS服务器

我个人一般会用Google DNSNextDNS、以及AdGuard DNS作为主要无污染DNS使用。NextDNS的免费额度足够家庭使用,当免费额度用完就切换到AdGuard DNS。在Google DNS存在国内访问问题的时候,会选择Quad9或者OpenDNS。Cloudflare DNS在我这里的稳定性和速度并不好,所以很少选择。大多数的国外公共DNS均可以返回无污染的DNS解析结果,这些公共DNS服务基本都支持DNSSEC。

在衡量与选择国外公共DNS服务时,延迟与丢包一般是我首先考虑的因素,其次就是DOH(DNS over HTTPS)和DOT(DNS over TLS)的支持,如果能够支持H3(http3)或者tls pipeline的话,那么一般就会是首选的DNS服务。其他次级考虑的因素还包括是否支持ECS,如果可以支持ECS,我会选择代理出口位置附近的IP。通过MosDNS的ECS功能,可以自定义ECS地址,使解析的CDN结果更靠近所配置的IP地址,从而提高解析结果的访问速度,例如我喜欢配置国外的ECS地址为代理的出口地址,这样通过代理访问时,可以获得最佳速度及可用性。

同时在使用DOT或DOH使,可使用dial_addr替代域名,可免去每次建立连接时需要Bootstrap DNS先解析DNS服务器域名。dial_addr一般为标准DNS的IPv4和IPv6地址。

由于一些公共DNS使用DNSCRYPT,需要使用DNS服务器公钥,存在局限性,所以暂时未列入表单内,也不作为DNS选择与衡量的指标。

同时大部分公共解析服务均为IPv4和IPv6双栈,即使用IPv4的DNS公共解析服务也可以解析IPv6地址,所以列表内不再进行IPv4和IPv6的区分。

在设备支持的情况下,非常建议选用支持DoH与DoT的DNS服务器。

推荐使用的DNS服务器

DNS服务名称 标准DNS地址 DoH地址 DoT地址 是否支持H3 ECS
Google DNS 8.8.8.8 / 8.8.4.4 https://dns.google/dns-query dns.google 支持
Cloudflare 1.1.1.1 / 1.0.0.1 https://cloudflare-dns.com/dns-query 1dot1dot1dot1.cloudflare-dns.com 支持
Quad9 9.9.9.9 / 149.112.112.112 https://dns.quad9.net/dns-query dns.quad9.net 支持
AdGuard Public DNS 94.140.14.14 / 94.140.15.15 https://dns.adguard.com/dns-query dns.adguard.com 支持
NextDNS 45.90.28.0 / 45.90.30.0 https://dns.nextdns.io 45.90.28.0 / 45.90.30.0 支持
OpenDNS 208.67.222.222 / 208.67.220.220 https://doh.opendns.com/dns-query 208.67.222.222 / 208.67.220.220 支持
Yandex DNS 77.88.8.8 / 77.88.8.1 https://doh.yandex.net/dns-query dns.yandex.net 不支持
CleanBrowsing 185.228.168.9 / 185.228.169.9 https://doh.cleanbrowsing.org/dns-query security-filter-dns.cleanbrowsing.org 不支持
jp.tiar.app 172.104.93.80 https://jp.tiarap.org/dns-query jp.tiar.app 不支持
Comodo Secure DNS 8.26.56.26 https://doh.comodo.com/dns-query dns.comodo.com 不支持
DNS.WATCH 84.200.69.80 https://dns.watch/dns-query 不支持
Blahdns(新加坡) 46.250.226.242 2407:3640:2205:1668::1 https://doh-sg.blahdns.com/dns-query dot-sg.blahdns.com 不支持
CleanBrowsing 185.228.168.9 185.228.169.9 https://doh.cleanbrowsing.org/doh/security-filter/ security-filter-dns.cleanbrowsing.org 不支持
Block malware 76.76.2.1 https://freedns.controld.com/p1 tls://p1.freedns.controld.com 不支持
DeCloudUs 78.47.212.211:9443 https://dns.decloudus.com/dns-query tls://dns.decloudus.com 不支持
Mullvad(新加坡) - https://dns.mullvad.net/dns-query tls://dns.mullvad.net 不支持

仅作测试使用的DNS服务器

以下DNS服务器是仅作测试使用的DNS服务器,不建议作为日常主力使用DNS解析服务,推荐仅在测试时进行使用,或作为落地区域的DNS使用。这些DNS服务大多不提供DOH或DOT选项,且在直连情况下存在延迟较高、丢包较多等不稳定因素。

DNS服务名称 标准DNS地址 DoH地址 DoT地址 是否支持H3 ECS
HKBN DNS 203.80.96.10 / 203.80.96.9 不支持 不支持 不支持
NTT Communications DNS 61.213.169.170 / 61.213.169.171 不支持 不支持 不支持
NEC BIGLOBE DNS 202.225.96.66 / 202.225.96.68 不支持 不支持 不支持
Yahoo Japan DNS 182.22.70.1 / 182.22.70.2 不支持 不支持 不支持
DNS.SB 45.11.45.11 https://doh.dns.sb/dns-query dot.sb 不支持
腾讯国际 162.14.21.178/ 162.14.21.56 不支持,可通过腾讯云套娃DOH 不支持,可通过腾讯云套娃DOT 不支持
Microsoft DNS / Level 3 Communications 4.2.2.2 / 4.2.2.1 不支持 不支持 不支持
HiNet/中華電信 168.95.1.1 / 168.95.192.1 不支持 不支持 不支持
TWNIC Quad101 Public DNS 101.101.101.101 / 101.102.103.104 不支持 不支持 不支持

DNS延迟测试脚本

这个Python脚本需要ping3依赖,复制以上代码并保存为*.py文件,通过命令行运行。可替换IP地址为自己想要进行测速的DNS的IP地址,每个DNS的IP地址Ping次数默认为4 。脚本的注释算是清晰,可根据自己需要在脚本中修改。

非公共DNS服务(增强型DNS服务

这里的非公共DNS是指提供具有用户唯一标识的DNS服务,允许用户自定义DNS过滤与隐私保护,提供访问控制,提供查询日志,提供部分路由优化等。相较于免费的公共DNS服务,这种DNS服务在部分情况下访问速度可能会更好一些。基础的DOH、DOT、DNSSEC、ECS基本都支持。

  • XNS.One(NovaXNS)提供可定制的DNS服务使用,属于付费的DNS服务,邀请制,目前需要邀请码才可以注册,可以在他们的Telegram频道蹲一下,也可以使用我的邀请:https://dash.xns.one/invite/41303c9a-9ae7-40a1-9f3b-e1e4f46d99e0(该XNS邀请已被使用)。付费不支持支付宝与微信,只能信用卡付款。已支持支付宝付款,Pro版本年付费$11.99,基础版本$5.99。DNS接入区域包括香港2个,日本1个,韩国一个,vxCDN以及CloudNexus各1,目前已经完全能够满足我的需要。相应速度与返回解析结果速度、精准度都不错。同时支持分区域的大陆优化,在处于CDN网络情况下尽可能的使用速度最快的解析结果。
  • NextDNS,我目前主要使用的DNS服务,免费版每个月提供30万次查询,基本够日常使用。可定制拦截列表。
  • AdGuard DNS,与NextDNS类似,免费版每个月提供30万次查询,允许配置5个接入点,2个服务器,支持配置100条自定义规则。

📝 其他关于DNS的参考信息

什么是Pipeline连接复用?

enable_pipeline: TCP/DoT使用RFC 7766新的query pipelining连接复用模式。
  • 启用后可大幅提高连接利用率,减少建立连接/握手的次数,进而降低响应延时。
  • 并非所有DNS服务器都支持。必须确定DNS服务器支持后再启用该选项。
  • Tips: 已知Google和Cloudflare的TCP/DoT是支持该模式的。知名的公共DNS服务商大多数都支持该模式。如果你使用MosDNS,可以使用 mosdns probe pipeline {tcp|tls}://server_ip[:port] 测试命令测试服务器是否支持。比如 mosdns probe pipeline tls://8.8.8.8

什么是ECS(EDNS Client Subnet)?

ECS(EDNS Client Subnet)是扩展DNS查询的一种机制,旨在提升内容分发网络(CDN)和地理位置相关的服务的效率。通常DNS服务器只看到客户端的IP地址,但通过ECS,DNS请求会包含客户端IP的一部分(子网信息)。这样,内容分发网络可以根据客户端的地理位置,返回更接近用户的服务器,减少延迟,提升性能。ECS主要用于优化网络和加速服务的访问,但也可能带来一定的隐私泄露风险。


测试了几家主流 DNS 的 ECS 功能 - V2EX
DNS - @baraja - 这几天折腾了一下自建 AdGuard Home 的上游 DNS ,发现某些号称支持 ECS 的 dns 比如 nextdns 、cloudflare-gateway 都不太适合作为 AGH 的上游。因

测试了几家主流 DNS 的 ECS 功能 - V2EX
https://www.v2ex.com/t/1086059

测试了几家主流 DNS 的 ECS 功能 - V2EX

什么是DOH(DNS over HTTPS)?

DoH(DNS over HTTPS)是一种技术,用来加密你的DNS查询。通常情况下(UDP及TCP协议情况下),DNS查询是明文的,容易被ISP运营商看到和监控。而DoH会通过HTTPS协议加密这些查询,确保你的请求内容是安全的,不会被ISP和运营商偷看。就像你在发送加密的信息一样,DoH保护了你上网时的隐私,并在一定程度上可以避免DNS劫持。

什么是ECH(Encrypted Client Hello)?

ECH(Encrypted Client Hello)是一种技术,用来加密你访问网站时的SNI(服务器名称指示)信息。通常情况下,当你想访问某个网站时,这个请求是明文的,运营商或其他第三方可以轻易看到你在访问什么网站,并可能进行拦截或阻断(例如SNI阻断)。这也是为什么有时你在国内访问GitHub和Linux.DO会遇到Time Out问题的原因之一。有了ECH,这些SNI信息就被加密了,外面的人就看不到你要访问哪个网站,从而提高了你的隐私和安全性。简单来说,ECH就像是在发送加密的信息,让你的浏览行为更加私密。

什么是DNSSEC(Domain Name System Security Extensions)?

DNSSEC(Domain Name System Security Extensions)是DNS系统的安全扩展协议,通过数字签名技术来确保DNS记录的真实性和完整性。它通过建立从根域名到下级域名的信任链,使用公私钥对对DNS记录进行签名和验证,能有效防止DNS欺骗和缓存污染。DNSSEC引入了几个关键记录类型:DNSKEY用于存储域名公钥,RRSIG包含数字签名信息,DS记录用于下级域委派签名,以及NSEC/NSEC3用于提供域名不存在的证明。虽然DNSSEC的配置较为复杂,可能增加DNS服务器负载并导致响应包变大,但它在防止DNS劫持和欺骗方面发挥着重要作用,目前已得到Google DNS (8.8.8.8)和Cloudflare (1.1.1.1)等主流公共DNS服务器的支持。

其他关于DNS选择的文章?

关于DNS选择,也可以参考:如何选择适合的公共DNS? [2020] - Sukka's Blog

NovaXNS邀请码

https://dash.xns.one/invite/41303c9a-9ae7-40a1-9f3b-e1e4f46d99e0(已使用)

https://dash.xns.one/invite/9ad20b1c-632e-41a9-a6ad-902db5cafcd8(已使用)

https://dash.xns.one/invite/74c3e656-77a7-4c6f-9f61-0ee80e505972(已使用)

https://dash.xns.one/invite/465fe1b2-e6a4-4b0f-a59f-8180a4c8a001

💡
有关DNS上的问题,欢迎您在底部评论区留言,一起交流~
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

Top comments (0)