一、DNS 是什么

当今互联网流量中, 以 HTTP/ HTTPS 为主的web 服务产生的流量占据了绝大部分, web 服务发展的如火如荼, 这背后离不开一个默默无闻的大功臣就是 域名解析系统
image.png

如果没有 DNS , 我们上网需要记忆每个网站的 IP 地址而不是他们的域名, 这简直就是灾难, 好在 DNS 默默在背后做了一切, 我们只需要记住一个域名, 剩下的交给 DNS 来完成
也正是因为其重要性, 别有用心的人自然是不会放过它, DNS 劫持被发明了出来

二、DNS 劫持

DNS 提供服务用来将域名转换成 IP 地址, 然而在早期协议的设计中并没有太多考虑其安全性, 对于查询方来说:

  • 我去请求的真的是一个 DNS 服务器吗? 是不是别人冒充的
  • 查询的结果有没有被人篡改过? 这个 IP 真是这个网站吗

image.png
DNS 协议中没有机制去保证能回答这些问题, 因此 DNS 劫持现象非常泛滥, 从用户在地址栏输入一个域名的那一刻起, 一路上的凶险防不胜防:

  • 本地计算机中的木马修改 hosts 文件
  • 本地计算机中国呢的木马修改 DNS 数据包中的应答
  • 网络中的节点(如路由器) 修改DNS 数据包中的应答
  • 网络中的节点(如运行商)修改DNS 数据包中的应答
  • ….

image.png

三、如何解决的

为了在客户端收到DNS 应答进行校验, 出现了DNSSEC 技术, 一定程度上可以解决上面的部分问题。 但限于一些方面的原因, 这项技术并没有大规模使用起来, 尤其在国内,鲜有部署应用
再后来, 以阿里、腾讯等头部互联网厂商开始推出了httpDNS 服务, 通过这项技术让 DNS 变成了在 http 协议之上的一个应用服务。