网域名称系统(英語:Domain Name System,縮寫:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
是否需要使用公共 DNS 服务器?
在考虑使用哪个公共 DNS 之前,你应该考虑一下你是否需要使用公共 DNS 。
当我们通过 PPPoE 拨号上网,还是 DHCP 连接光猫上网,我们都会获得一个 ISP 下发的 DNS ,那为何我们还需要使用公共 DNS 呢?
一般来说,使用公共 DNS 的原因无非就是“本地 ISP 劫持了你的DNS”,或是“从 ISP 获取到的 DNS 无法正确解析一些域名”。
首先,如何判断自己是否遭到了 DNS 劫持?
114DNS 给出了这样的一个办法:
命令行输入 nslookup whether.114dns.com 114.114.114.114
,如果返回的结果有127.0.0.X,说明您的ISP劫持了114DNS,导致您无法使用114DNS的服务。
如果你已经确定“本地 ISP 劫持了你的DNS”那么即使你更换了其他传统 DNS 也是没有用的,你应该考虑使用加密 DNS 。
不过,对绝大多数人来说,ISP 下发的 DNS 应该是最快,并且最合适的 DNS。
在选择公共 DNS 之前,你还需要了解以下问题
在看完之后,如果你还是为了更快的解析,或是更准确的解决结果想用公共 DNS 的话,那你可以继续阅读下去啦。
如何选择公共 DNS ?
这里就直接引用 Sukka 博客中的原文了
公共 DNS 服务有很多,有大公司搭建的,有非盈利组织搭建的,还有个人搭建的,令人眼花缭乱。在选择的时候我们需要考虑很多方面才能选出适合我们需求的 DNS。通常在选择对于我们上网起非常重要作用的 DNS 时,我们需要考虑以下方面:
- SLA 服务在线率。DNS 是上网冲浪事时非常重要的一个环节,DNS 的可靠性直接影响到上网的体验;如果 DNS 宕机,那么很大一部分网站将无法访问
- 响应速度 在访问一个新的网站时,DNS 对这个网站的响应速度会直接影响到当前网站的直观加载速度
- 准确性 即使不考虑 DNS 污染和投毒,DNS 对网站访问的结果是否准确是非常重要的 EDNS 简单地说,EDNS(正确的简称应该是 ECS)有助于帮助你获取最准确的 CDN 解析结果
- 其它特性 一些个人搭建的 DNS 会提供一些去广告或者爱国上网的功能
- DNS 出口 通常情况下,公共 DNS 的入口和出口不同。你可以通过 dig 查看你的 DNS 出口 IP:
dig whoami.akamai.net
DNS 出口对于 CDN 非常重要。公共 DNS 的本质上就是把你的查询请求转发给上游 DNS;在没有 EDNS 的情况下,CDN 的权威 DNS 会根据公共 DNS 使用的请求 IP(也就是 DNS 出口)来判定你的运营商、你所在的位置,从而返回距离你最近的节点 IP。
所以说,理论上 ISP 给你分配的 DNS 应该是最快的、也是 CDN 友好的。本文接下来提到的 CDN 优化、CDN 友好,也是指的 DNS 出口的 IP 能否让你访问到最快的 CDN 节点。
一些公共 DNS 服务推荐
由于 IPv6 在全球范围内尚未完全普及,因此本推荐并不会标注服务对于 IPv6 网络的支持性。
由于大多数知名的海外 DNS,在国内并不好用,因此也不做推荐。
注意:国内的公共递归 DNS 普遍存在篡改 TTL 的行为,这可能是出于降低服务负载的考量。(2024/04/07 注)
注意:国内的公共递归 DNS 普遍不支持 DNSSEC,因此我没有逐一进行测试,但不代表以下所有的服务都不支持该特性。(2024/05/16 注)
阿里云公共 DNS
223.5.5.5
223.6.6.6
- Anycast 节点:包括电信、移动、联通、鹏博士、广电网、教育网及海外150个国家或地域(官网描述)
- DoH、DoT:均支持。可通过 IP 或域名使用,且提供私人 DoH、DoT 服务。
- ECS:部分支持
- 官网:https://www.alidns.com/
由阿里建立的公共 DNS ,解析结果较为准确,绝大部分地区响应速度都不错,SLA 十分优秀,推荐使用。
注意:使用阿里的 DNS 可能会导致苹果的一些服务无法连接的问题,我测试过后确实存在这个问题,详见 https://www.v2ex.com/t/990830(2024/04/07 注)
注意:2024 年 9 月 30 日 24 时起,免费版服务有“单IP访问量20QPS,UDP/TCP流量2000bps”的限制,详见 https://help.aliyun.com/dns/public-dns-free-version-access-speed-limit-notification(2024/07/19 更新)
腾讯 DNSPod
119.29.29.29
119.28.28.28
- Anycast 节点:深圳、上海、天津、中国香港和北美(官网描述)
- DoH、DoT:均支持。可通过 IP 或域名使用,且提供私人 DoH、DoT 服务。
- ECS:支持
- 官网:https://www.dnspod.cn/Products/publicdns
由 DNSPod 建立的公共 DNS,解析结果准确,响应速度一般,并且经常受到 DDoS 攻击(被打了会绕路),一般推荐。
注意:加密 DNS 有“域名解析频率限制20QPS”的限制,详见 https://docs.dnspod.cn/public-dns/dot-doh/(2024/04/20 更新)
南京信风公共 DNS
114.114.114.114
114.114.115.115
- Anycast 节点:截止到2014年5月,114DNS的公众DNS服务将中国除港澳台之外的地区划分为58个逻辑片区,中国电信19个,中国联通16个,中国移动20个,铁通、教育科研网、美国各1个(官网描述)
- DoH、DoT:不支持
- ECS:不支持
- 官网:https://www.114dns.com/
国内最知名的公共 DNS 之一,因此也是最多被 ISP 劫持的公共 DNS,解析结果较为准确,还提供了钓鱼病毒木马网站和色情网站拦截的 DNS,单从服务角度来说还是推荐使用的(如果官网的节点列表中存在你的城市),使用前记得先测试一下是否被 ISP 劫持。
清华 TUNA DNS666
101.6.6.6
节点:北京DoT、DoH:均支持。公网均为非标准端口。ECS:不支持官网:https://tuna.moe/help/dns/
清华大学 TUNA 协会提供的 DNS,解析结果准确、无污染,教育网用户可直接使用,非教育网用户需要通过非标准端口(例如:5353、8853、8443)使用,推荐使用(如果你在北方)。
CNNIC 公共 DNS
1.2.4.8
210.2.4.8
- Anycast 节点:北京、杭州、中国香港
- DoH、DoT:不支持
- ECS:不支持
- 官网:https://www.sdns.cn/
CNNIC 提供的 DNS,解析结果较为准确,SLA一般,解析请求经常会超时,不推荐使用。
百度公共 DNS
180.76.76.76
- Anycast 节点:北京、南京、深圳、中国香港
- DoH、DoT:不支持
- ECS:不支持
- 官网:https://dudns.baidu.com/
百度提供的 DNS,较为冷门,较少受到 DDoS 攻击,可以尝试(或许对于抗劫持有奇效?)。
Neustar UltraDNS Public
64.6.64.6
64.6.65.6
- Anycast 节点:上海、中国香港、澳大利亚、美国、荷兰、巴西、南非、西班牙等。
- DoH、DoT:仅向企业用户提供
- ECS:不支持
- 官网:https://vercara.com/ultra-dns-public
威瑞信提供的 DNS,在国内较为冷门的 DNS,解析准确,几乎无污染,同时也提供钓鱼病毒木马网站和色情网站拦截的 DNS,华东地区推荐使用。
64.6.65.0/24
和电信进行了 Peer,出口为上海电信,如果你的 ISP 是上海电信的话,我很推荐使用这个 DNS,解析结果准确,且不会篡改 TTL 值。(2024/04/07 注)
以下是一些个人或团队提供的 DNS,可用性和安全性不一定有保证,因此不做推荐,请酌情使用(叠甲)
iQDNS
节点:北京、上海、广州、江西、海南、中国香港DoH、DoT:支持ECS:支持官网:https://iqdns.xyz/all.html
V2EX用户 johnsonwil 提供的 DNS,旗下所有节点均无污染,无拦截,无日志记录,主打隐私保护,有时候会返回空解析。
GeekDNS
节点:上海、中国香港、美国DoH、DoT:支持ECS:支持官网:https://www.nextrt.com/s/dns
华夏梦客提供的 DNS 无污染、主打隐私保护。
EasyMosdns
- 节点:陕西、福建、辽宁、Cloudflare
- DoH、DoT:支持DoH。
- ECS:支持
- 官网:https://apad.pro/dns-doh/
由 EasyMosdns 项目的作者 PMkol 提供的 DNS。
结语
选择一个好的 DNS 确实可以对上网体验有很大的优化,如果以上的公共 DNS 都无法满足需求的话,可以期待一下我的下一篇文章,我会讲讲我自用的 DNS 方案。