不久前,字节跳动旗下的火山引擎正式上线 TrafficRoute 解析调度套件,让国内用户又有了一个新的公共 DNS 可选。根据火山引擎方面的说法,这一新的套件提供了从公网到私网、从递归到权威的全链路 DNS 服务,以及基于 DNS 的流量调度服务,其中包含云解析(DNS)、云调度(GTM)、私网解析(PrivateZone)、移动解析(HTTPDNS)、公共解析(PublicDNS)。
目前,字节跳动的公共 DNS 仅支持 IPv4 协议,主 DNS 的 IP 为 180.184.1.1、备用 DNS 的 IP 为 180.184.2.2 ,当前仅提供基本的 DNS 解析功能。但是根据官方公布的信息显示,后续该 DNS 将支持 DoH、DoT 和 DoQ 加密 DNS 查询协议,至于 IPv6 版本则暂未有详情透露。
在产品介绍中表明,字节跳动所提供的公共 DNS 采用了 BGP Anycast 技术,具有高性能、可靠、安全等特点,并且其在全国提供了多个接入点,当用户发起请求时会转发至最近的节点。此外,该 DNS 还会缓存 DNS 记录,当用户请求命中缓存时,则无需向权威 DNS 服务器发送请求、即可快速返回解析结果,并且其还使用了流量清洗和 IP 黑名单等抗 DDoS 攻击的方案,字节跳动方面也强调绝不会利用公共 DNS 来劫持用户。
事实上,DNS 是 Domain Name System 的缩写,也是互联网中的一项核心服务,用于实现域名和 IP 地址相互映射的一个分布式数据库,它的核心工作是将域名翻译成可由计算机识别的 IP 地址,使得用户可以更快速、便捷的访问互联网。众所周知,互联网连通的是全球,所以单一的域名服务器显然不足以支撑全部的地址转换操作,这一点早在先驱们设计互联网底层架构时就有着清晰的认知。
由于互联网采用了层次树状结构的命名方式,所以任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构名字,也就是所谓的域名。但问题是域名作为互联网中的 " 门牌号码 ",它是人类可读名称、也就是给人看的,计算机看的却是 IP 地址。比如说通过在浏览器地址栏输入网站的网址或其所对应的 IP 地址,访问的都是同一个网站。
那么 IP 地址和域名是怎么对应上的呢?靠的就是电脑里的 Hosts 文件。这玩意主要是将一些常用的网址域名与其对应的 IP 地址建立一个关联数据库,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts 文件中寻找对应的 IP 地址,一旦找到就会立即打开对应的网页。
但遗憾的是,Hosts 文件毕竟是有限的,就好像微信里肯定加不满全世界每一位微信用户的好友一样,Hosts 文件只会存储类似于微软、谷歌、亚马逊等知名网站的域名和 IP,类似于我们三易生活这样的肯定不在其中。所以这时候 DNS 服务器就出场了,一旦用户的浏览器在系统的 Hosts 文件里找不到域名所对应的 IP,就会将网址提交 DNS 服务器来进行 IP 地址的解析。
通常来说,DNS 服务器是由宽带运营商负责提供,那为什么字节跳动会 " 重复造轮子 " 呢?当然是因为用户有需求。许多朋友大概率都碰到过这样的情况,那就是 QQ 明明可以登录、游戏也能正常玩,可网页就是打不开。去搜索解决方案时会发现需要修改 DNS 服务器的地址,比如改成大名鼎鼎的 8.8.8.8、国内知名的 114.114.114.114,乃至如今字节跳动提供的 180.184.1.1。
更为重要的是,有一些 DNS 服务提供商是会作恶的。因为 DNS 服务器是负责告诉你的电脑,A 网站的 IP 地址是 AAA、B 网站的 IP 地址是 BBB,可如果 DNS 服务器告诉你 A 网站的地址是 BBB 呢?此时用户明明想要访问 A 网站,结果却被导向了 B 网站。又或者说 DNS 服务器在返回用户浏览器的信息中,用写入 JavaScript 等方式 " 附赠 " 一段额外的信息,来让浏览器显示广告,这就是所谓的 DNS 劫持。
毫无疑问,DNS 劫持对于网络访问的影响和体验是非常严重的,所以这时候大家势必就会下意识的寻找替代品,此时字节跳动提供的公共 DNS 就成为了一个可选项。当然,字节跳动也不是做慈善的,因为公共 DNS 服务其实是分析互联网流量构成的重要工具之一,它的原理就决定了字节跳动借助公共 DNS 可以知道哪些 IP 地址被经常访问,而这则是极其有价值的数据。