域名系统(DNS)是互联网的一项核心服务,它把以“.com”、“.net”、“.org”等为后缀的域名转换成易于理解的IP地址,使得用户在浏览器中输入域名时,能够被指引到对应的网站。DNS服务器则是实现这一转换的服务器,它们构成了互联网的基础设施,对于全球的互联网用户来说,DNS服务器的重要性不言而喻。
为什么需要公共 DNS
大部分上网方式互联网服务提供商(ISP)都会下发两个 DNS 给你。在 DNS 的解析过程中,用户向递归 DNS 发起请求,递归 DNS 向权威 DNS 请求解析结果,可以说递归 DNS 起到一种转发的作用。运营商的 ISP DNS 就是递归 DNS;同时一些个人或互联网服务提供商也会架设自己的递归 DNS 开放给所有人使用,称为公共 DNS。 对于绝大部分人来说,运营商下发的 ISP DNS 应该是最准确的和最合适的,响应时间短、CDN 解析结果也会最准确。
但是运营商不是做公益的。运营商经常使用 DNS 投毒来引导用户去使用他们的缓存服务器,从而降低运营商带宽负载;或者劫持解析将用户引导去他们已经插入了广告的镜像站点,从而获利;或者为了国家相关法律政策要求或者运营商自己的需求屏蔽一些网站的访问;或者自行篡改 TTL(DNS 结果缓存时间)降低 DNS 的负载,结果就是解析结果不能尽快更新;当前互联网上CDN很多都是根据Local DNS的地址来调度。有些ISP的DNS并不直接去递归解析,而是转发到其他 DNS上,可能导致CDN调度不准确,使用户不能访问到最快的站点;或者对于不正确的域名给你返回一个满是广告的页面,等等。即使运营商非常良心不使用 DNS 做坏事,也有可能因为设备没有及时扩容或者维护不善而导致不佳的体验。
解决方案
使用公共 DNS可能解决上述问题,并为你带来不错的上网体验。公共 DNS 服务总之有很多,有大公司搭建的,有非盈利组织搭建的,还有个人搭建的。根据博主查阅资料可知选择公共 DNS 时我们需要考虑以下方面:
- SLA 服务在线率 DNS 是上网冲浪事时非常重要的一个环节,DNS 的可靠性直接影响到上网的体验;如果 DNS 宕机,那么很大一部分网站将无法访问
- 响应速度 在访问一个新的网站时,DNS 对这个网站的响应速度会直接影响到当前网站的直观加载速度
- 准确性 即使不考虑 DNS 污染和投毒,DNS 对网站访问的结果是否准确是非常重要的
- CDN 友好性 也被叫做 ECS 或是 EDNS,简单地说,EDNS(正确的简称应该是 ECS)有助于帮助你获取最准确的 CDN 解析结果
- DNS 出口 在没有 ECS 的情况下,CDN 的权威 DNS 会根据公共 DNS 使用的请求 IP(也就是 DNS 出口)来判定你的运营商、你所在的位置,从而返回距离你最近的节点 IP。在有 ECS 的情况下,返回结果的所需要的时间会更低,CDN 判断会更准确。。
国内一些公共 DNS 服务
腾讯 DNSPod
DoT、DoH:支持。域名 dns.pub 和 doh.pub,同时支持 DoH 和 DoT。
ECS:不完整支持
阿里云公共 DNS
DoT、DoH:均支持。除了可以直接通过 IP 使用,还可以使用域名 dns.alidns.com。
ECS:部分支持(DNS JSON API 支持 edns_client_subnet)
字节跳动 TrafficRoute DNS
字节跳动旗下火山引擎也提供了公共 DNS 服务 —— TrafficRoute DNS,目前只支持IPv4
180.184.1.1
180.184.2.2
18Bit
- DoT、DoH:均支持。
https://www.18bit.cn/index.html
待更新…