type
status
date
slug
summary
tags
category
icon
password
之前介绍了不少关于MosDNS的内容,里面绕不开的一个部分就是用来解析国外域名的DNS服务器应该选择哪家,或者说有哪些无污染的公共DNS服务器可以选择。
📝 主旨内容
DNS服务器的主要作用是将域名转换为IP地址,同时支持负载均衡、高可用性、反向解析、缓存加速等功能。DNS是互联网的基础设施之一,几乎所有的网络通信都依赖于DNS服务。所以选择一个稳定、高速且无污染的DNS的重要性不言而喻。在使用DNS分流的情况下,对国内域名与国外域名分别配置DNS可以有效提升解析速度与准确性。
国内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 DNS、NextDNS、以及AdGuard DNS作为主要无污染DNS使用,NextDNS的免费额度足够家庭使用,当免费额度用完就切换到AdGuard DNS。在Google DNS存在国内访问问题的时候,会选择Quad9或者OpenDNS。Cloudflare DNS在我这里的稳定性和速度并不好,所以很少选择。大多数的国外公共DNS均可以返回无污染的DNS解析结果,这些公共DNS服务基本都支持DNSSEC。
在衡量与选择国外公共DNS服务时,延迟与丢包一般是我首先考虑的因素,其次就是DOH和DOT的支持,如果能够支持H3(http3)或者pipeline的话,那么一般就会是首选的DNS服务。其他次级考虑的因素还包括是否支持ECS,如果可以支持ECS,我会选择代理出口位置附近的IP。通过MosDNS的ECS功能,可以自定义ECS地址,使解析的CDN结果更靠近所配置的IP地址,从而提高解析结果的访问速度,例如我喜欢配置国外的ECS地址为代理的出口地址,这样通过代理访问时,可以获得最佳速度及可用性。
同时在使用DOT或DOH使,可使用
dial_addr
替代域名,可免去每次建立连接时解析服务器域名。dial_addr
一般为标准DNS的IPv4和IPv6地址。由于一些公共DNS使用DNSCRYPT,需要使用DNS服务器公钥,存在局限性,所以暂时未列入表单内,也不作为DNS选择与衡量的指标。
同时大部分公共解析服务均为IPv4和IPv6双栈,即使用IPv4的DNS公共解析服务也可以解析IPv6地址,所以列表内不再进行IPv4和IPv6的区分。
在设备支持的情况下,非常建议选用支持DoH与DoT的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服务器
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 | 不支持 | 不支持 | 否 | 不支持 |
DNS延迟测试脚本
需要
ping3
依赖。保存为*.py
文件,通过命令行运行,可替换IP地址为自己想要进行测速的DNS的IP地址,每个DNS的IP地址Ping次数为4,可根据自己需要在脚本中修改。非公共DNS服务(增强型DNS服务)
这里的非公共DNS是指提供具有用户唯一标识的DNS服务,允许用户自定义DNS过滤与隐私保护,提供访问控制,提供查询日志,提供部分路由优化等。相当于免费的公共DNS服务,这种DNS服务在部分情况下访问速度可能会更好一些。基础的DOH、DOT、DNSSEC、ECS基本都支持。
- XNS.One提供非公共DNS使用,属于付费服务,需要邀请码,可以在他们的Telegram频道蹲一下。付费不支持支付宝与微信,只能信用卡付款。
- NextDNS,我目前主要使用的DNS服务,免费版每个月提供30万次查询,基本够日常使用。可定制拦截列表。
- AdGuard DNS,与NextDNS类似,免费版每个月提供30万次查询,允许配置5个接入点,2个服务器,支持配置100条自定义规则。
📝 参考信息
enable_pipeline
: TCP/DoT 使用 RFC 7766 新的 query pipelining 连接复用模式。
- 启用后可大幅提高连接利用率,减少建立连接/握手的次数,进而降低响应延时。
- 并非所有服务器都支持。必须确定服务器支持后再启用该选项。
- Tips: 已知 Google 和 Cloudflare 的 TCP/DoT 是支持该模式的。知名的公共 DNS 服务商大多数都支持该模式。可以使用
mosdns probe pipeline {tcp|tls}://server_ip[:port]
测试命令测试服务器是否支持。比如mosdns probe pipeline tls://8.8.8.8
。
什么是ECS?
ECS(EDNS Client Subnet)是扩展DNS查询的一种机制,旨在提升内容分发网络(CDN)和地理位置相关的服务的效率。通常DNS服务器只看到客户端的 IP 地址,但通过ECS,DNS请求会包含客户端IP的一部分(子网信息)。这样,内容分发网络可以根据客户端的地理位置,返回更接近用户的服务器,减少延迟,提升性能。ECS主要用于优化网络和加速服务的访问,但也可能带来一定的隐私泄露风险。
什么是DOH?
DoH(DNS over HTTPS)是一种技术,用来加密你的 DNS 查询。通常情况下,DNS 查询是明文的,容易被别人看到和监控。而 DoH 会通过 HTTPS 协议加密这些查询,确保你的请求内容是安全的,不会被别人偷看。就像你在发送加密的信息一样,DoH 保护了你上网时的隐私,并在一定程度上避免劫持。
什么是ECH?
ECH(加密客户端你好,Encrypted Client Hello)是一种技术,用来加密你访问网站时的 SNI(服务器名称指示)信息。通常情况下,当你想访问某个网站时,这个请求是明文的,运营商或其他第三方可以轻易看到你在访问什么网站,并可能进行拦截或阻断(例如 SNI 阻断)。这也是为什么有时你在国内访问 GitHub 会遇到问题的原因之一。有了 ECH,这些 SNI 信息就被加密了,外面的人就看不到你要访问哪个网站,从而提高了你的隐私和安全性。简单来说,ECH 就像是在发送加密的信息,让你的浏览行为更加私密。
什么是DNSSEC?
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
有关DNS上的问题,欢迎您在底部评论区留言,一起交流~