关于前端:DNS-黑魔法传送门

37次阅读

共计 5612 个字符,预计需要花费 15 分钟才能阅读完成。

目录

  1. 前言
  2. 第一步:浏览器对 DNS 解析
  3. 第二步:本地 hosts 文件 DNS 解析
  4. 第三步:本地域名解析服务器 DNS 解析
  5. 第四步:根域名解析服务器 DNS 解析
  6. 第五步:gTLD 服务器 DNS 解析
  7. 第六步:权威域名服务器 DNS 解析
  8. 第七步:返回缓存
  9. DNS 解析原理
  10. DNS 解析优化
  11. DNS 劫持
  12. DNS 劫持应答策略
  13. 结束语
  14. 题外话
  15. 参考

前言

在上一篇文章中,介绍浏览器解析 URL 的黑魔法,这篇文章来介绍一下 DNS 黑魔法。

概念

DNS 的全称是 Domain Name System 或者 Domain Name Service,它次要的作用就是将人们所相熟的网址 (域名)“翻译”成电脑能够了解的 IP 地址,这个过程叫做 DNS 域名解析。

为什么须要 DNS 解析

网络通讯大部分是基于 TCP/IP 的,而 TCP/IP 是基于 IP 地址的,所以计算机在网络上进行通信时只能辨认如“192.168.0.0.1”之类的 IP 地址,而不能意识域名。而对于人类的心智模型来说,很难记住 10 个以上 IP 地址的网站,所以咱们拜访网站时,更多的是在浏览器地址栏中输出域名,就能看到所须要的页面,这是因为有一个叫“DNS 服务器”的计算机主动把咱们的域名“翻译”成了相应的 IP 地址,而后调出 IP 地址所对应的网页。

大厂常常问

DNS 解析在面试中是一个常见的问题。常常会存在这样的题目「在浏览器输出一个 URL 之后产生了什么?」,这个问题扩大开来就囊括了 DNS 的解析过程。当然还有的面试官会把 DNS 的解析过程独自拿进去问。这篇文章就具体来讲讲 DNS 怎么解析的。

第一步:浏览器 DNS 解析

查看浏览器缓存中是否缓存过该域名对应的 IP 地址

用户通过浏览器浏览过某网站之后,浏览器就会主动缓存该网站域名对应的地址,当用户再次拜访的时候,浏览器就会从缓存中查找该域名对应的 IP 地址,因为缓存不仅是有大小限度,而且还有工夫限度(域名被缓存的工夫通过属性来设置),所以存在域名对应的找不到的状况。

当浏览器从缓存中找到了该网站域名对应的地址,那么整个解析过程完结,如果没有找到,将进行下一步骤。对于的缓存工夫问题,不宜设置太长的缓存工夫,工夫太长,如果域名对应的发生变化,那么用户将在一段时间内无奈失常拜访到网站,如果太短,那么又造成频繁解析域名。

浏览器缓存 DNS 工夫

浏览器为了进步响应的工夫,会对 DNS 记录缓存,然而不同的浏览器缓存的工夫不一样。

chrome

chrome://net-internals/#dns 这里能够看各域名的 DNS 缓存工夫。Chrome 对每个域名会默认缓存 60s。然而有可能 chrome://net-internals 显示不进去 dns 缓存。只有一个革除缓存的按钮。


当遇到这样的状况时,你能够依照如下的流程操作来查看 DNS 缓存,这个不能查看 DNS 缓存是因为 chrome://net-internals/ 的一些性能曾经在 Chrome 71 之后被移除了。

  1. chrome://net-export 导出日志
  2. https://netlog-viewer.appspot… 下导入日志查看

Firefox

Firefox 有 DNS 缓存性能,默认缓存工夫只有 1 分钟。

IE

IE 将 DNS 缓存 30min。

Safari

Safari DNS 缓存工夫约为 10s

浏览器对 DNS 解析后果的解决

如果一个域名的 DNS 解析后果会有多个的话,浏览器是如何解决的呢?Chrome 浏览器会优先向第一个 IP 发动 HTTP 申请,如果不通,再向前面的 IP 发动 HTTP 申请。DNS 域名查问网址

第二步:本地 hosts 文件 DNS 解析

如果第一个步骤没有实现对域名的解析过程,那么浏览器会去零碎缓存中查找零碎是否缓存过这个域名对应的地址,也能够了解为零碎本人也具备域名解析的根本能力。在零碎中,能够通过设置文件来将域名手动的绑定到 某个 IP 上。如果应用过代理软件(如 fiddler)的同学可能对这个比较清楚一点,在零碎的 hosts 文件,能够用来设置域名和 IP 的对于关系。对于普通用户,并不举荐本人手动绑定域名和,对于开发者来说,通过绑定域名和,能够轻松切换环境,能够从测试环境切换到开发环境,不便开发和测试。

hosts 文件

hosts 文件是一个用于贮存计算机网络中各节点信息的计算机文件。这个文件负责将主机域名映射到相应的 IP 地址。hosts 文件通常用于补充或取代网络中 DNS 的性能。和 DNS 不同的是,计算机的用户能够间接对 hosts 文件进行管制。hosts 文件的作用十分大,能够自在解析域名。

hosts 文件地位

  • Windows NT/2000/XP/Vista/win7(即微软 NT 系列操作系统):默认地位为 %SystemRoot%\system32\drivers\etc\,但也能够扭转。
  • 典型的 XP 零碎 hosts 文件地位:C:\windows\system32\drivers\etc
  • Windows 95/98/Me:%WinDir%\Linux 及其他类 Unix 操作系统:/etc 苹果系:
  • Mac OS 9 及更早的零碎:System Folder: Preferences 或 System folder(文件格式可能与 Windows 和 Linux 所对应的文件不同)
  • Mac OS X:/private/etc(应用 BSD 格调的 hosts 文件)
  • iPhone OS:/etc
  • iPad OS:/private/etcSymbian 第 1 / 2 版手机:C:\system\data\hosts
  • Symbian 第 3 版手机:C:\private\10000882\hosts,只能应用兼容 AllFiles 的文件浏览器拜访,大部分都不行。

地位如果有问题请告知,谢谢!

hosts 文件的一些用处

  • 将广告域名重定向到本地 IP 地址:127.0.0.1 上来过滤广告。
  • hosts 文件可用于拦挡一些歹意网站的申请,从而避免拜访欺诈网站或感化一些病毒或恶意软件。
  • 应用 hosts 文件来强制将网站指定到正确的 IP 上。

第三步:本地域名解析服务器 DNS 解析

如果在本机上无奈实现域名的解析,那么零碎只能申请本地域名解析服务零碎进行解析,本地域名零碎个别都是本地区的域名服务器,比方你连贯的校园网,那么域名解析零碎就在你的校园机房里,如果你连贯的是电信、挪动或者联通的网络,那么本地域名解析服务器就在本地区,由各自的运营商来提供服务。对于本地服务器地址,零碎应用命令就能够查看,在和零碎下,间接应用命令来查看服务地址。个别都缓存了大部分的域名解析的后果,当然缓存工夫也受域名生效工夫管制,大部分的解析工作到这里就差不多曾经完结了,负责了大部分的解析工作。

第四步:根域名解析服务器 DNS 解析

本地域名解析器还没有实现解析的话,那么本地域名解析服务器将向根域名服务器发动解析申请。本地域名解析向根域名服务器发动解析申请,根域名服务器返回的是所查域的通用顶级域 xxx 地址。

根域名解析服务器

因为晚期的 DNS 查问后果是一个 512 字节的 UDP 数据包。这个包最多能够包容 13 个服务器的地址,因而就规定全世界有 13 个根域名服务器,编号从 a.root-servers.net 始终到 m.root-servers.net。
这 13 台根域名服务器由 12 个组织独立经营。其中,Verisign 公司治理两台根域名服务器:A 和 J。每家公司为了保障根域名服务器的可用性,会部署多个节点,比方单单 Verisign 一家公司就部署了 104 台根域名服务器(2016 年 1 月数据)。
所以,根域名服务器其实不止 13 台。据统计,截止 2016 年 1 月,全世界共有 517 台根域名服务器。你能够在 http://root-servers.org 这个网站查到所有根域名服务器的信息。

第五步:gTLD 服务器 DNS 解析

本地域名解析服务器向 gTLD 服务器发动申请。gLTD 服务器查问并返回域名对应的 Name Server 域名服务器的地址,通常是你注册的域名服务器,例如你在某个域名服务器提供商申请的域名,那么这个域名解析工作就由这个域名服务提供商来实现。

第六步:权威域名服务器 DNS 解析

权威域名服务器会查问存储的域名和 ip 的映射关系表,将 ip 连同一个 TTL 值返回给 DNS 本地域名服务器。

第七步:返回,而后缓存

本地域名服务器拿到 ip 和 TTL 会缓存起来。返回给浏览器。

DNS 解析原理

  • 本地 DNS 解析是递归过程。
  • 其余服务器 DNS 解析是迭代过程。

每一次 DNS 解析须要 20~120ms,第一次解析实现后,会把解析信息缓存到本地 下一次再次发送这个域名申请,间接从本地缓存中进行解析了
一个页面中域名很多那么须要解析的就很多服务器。缩小域名解析(页面中尽可能少用不同的服务器),然而真实情况要做一个取舍:为了节约服务器资源,大型网站个别都是服务器分布式 或者 服务器拆散 WEB 资源服务器 图片服务器 数据服务器 …..

DNS 解析优化

DNS 解析会有 20ms~120ms 的耗时,哪缩小这个耗时是有必要的,通常是做饭是缩小 DNS 的申请次数,尽可能不要申请太多的服务器解析。然而当初很多的公司为了做负载平衡或者服务器的拆散独立部署,都是更可能多申请服务器。哪还有一种做法就是 DNS 预解析,DNS 预解析其实就是缩小域名解析成 IP 的工夫。

<link rel="dns-prefetch" href="xxx"></link>
<meta http-equiv="x-dns-prefetch-control" content="on"/>

DNS 劫持

概念

DNS 劫持即通过某种技术手段,篡改正确域名和 IP 地址的映射关系,使得域名映射到了谬误的 IP 地址,因而能够认为 DNS 劫持是一种 DNS 重定向攻打。DNS 劫持通常可被用作域名欺诈,如在用户拜访网页时显示额定的信息来赚取支出等;也可被用作网络钓鱼,如显示用户拜访的虚伪网站版本并非法窃取用户的个人信息。

DNS 劫持大事记

《AWS route53 BGP 路由透露事件》

事件产生在 2018 年 4 月 24 日。黑客针对四段调配给 AWS,本应作为 AWS route53 DNS 服务器服务地址的 IP 空间 (205.251.192.0/23, 205.251.194.0/23, 205.251.196.0/23, 205.251.198.0/23) 公布了虚伪的 BGP 路由,导致在 BGP 透露的两个小时期间,本应该 AWS route53 DNS 服务器的 DNS 查问都被重定向到了黑客的歹意 DNS 服务器。且黑客 DNS 劫持的指标十分明确,歹意 DNS 服务器只响应对 http://myetherwallet.com 的查问,其余域名的查问均返回 SERVFAIL。一旦用户没有留神“网站不平安”的提醒而拜访 http://myetherwallet.com 登录本人的以太坊钱包,黑客就能够轻易获取用户的私钥进而窃取用户的数字货币资产。
据不齐全统计,DNS 劫持导致两个小时内有多个用户的以太坊钱包被转账清空,共计至多 13000 美元的资产被黑客盗取。

《巴西银行钓鱼事件》

事件产生在 2018 年。黑客利用 D -Link 路由器的破绽,入侵了至多 500 个家用路由器。黑客入侵后更改受害者路由器上的 DNS 配置,将受害者的 DNS 申请重定向到黑客本人搭建的歹意 DNS 服务器上。黑客入侵后更改受害者路由器上的 DNS 配置,将受害者的 DNS 申请重定向到黑客本人搭建的歹意 DNS 服务器上,最终诱导本来想拜访失常银行网站的受害者拜访到钓鱼网站,并歹意窃取受害者的银行账目明码信息。
黑客诱导本来想拜访失常银行网站的受害者拜访到钓鱼网站,并歹意窃取受害者的银行账目明码信息。

DNS 劫持分类

本地 DNS 劫持

  • 篡改本地的 hosts 文件。黑客通过木马病毒或者恶意程序入侵 PC,篡改 DNS 配置(hosts 文件,DNS 服务器地址,DNS 缓存等)。
  • 攻打路由器或者利用路由器的破绽篡改 DNS 配置。

    DNS 解析门路劫持

  • 通过技术手段 (两头盒子,软件等) 将 DNS 流量重定向到其余 DNS 服务器。
  • 利用分光等设施将 DNS 查问复制到网络设备,并先于失常应答返回 DNS 劫持的后果。
  • 网络设备或者软件间接代替 DNS 服务器对 DNS 查问进行应答。

    篡改 DNS 权威记录

  • 篡改 DNS 权威记录 咱们这里指的黑客非法入侵 DNS 权威记录治理账号,间接批改 DNS 记录的行为。

DNS 劫持应答策略

DNS 劫持在互联网中仿佛曾经变成了粗茶淡饭,那么该如何应答各种层出不穷的 DNS 劫持呢?如果狐疑本人遇到了 DNS 劫持,首先要做的事件就是要确认问题。

如何确认 DNS 劫持

阿里云的能够检测域名是否被劫持(留神我不是阿里云的拖,哈哈哈哈),地址。

DNS 劫持防备

  • 装置杀毒软件,进攻木马病毒和恶意软件;定期批改路由器治理账号密码和更新固件。
  • 抉择平安技术实力过硬的域名注册商,并且给本人的域名权威数据上锁,避免域名权威数据被篡改。
  • 抉择反对 DNSSEC 的域名解析服务商,并且给本人的域名施行 DNSSEC。DNSSEC 可能保障递归 DNS 服务器和权威 DNS 服务器之间的通信不被篡改。阿里云 DNS 作为一家业余的 DNS 解析服务厂商,始终在不断完善打磨产品性能,DNSSEC 性能曾经在开发中,不日就会上线公布。
  • 在客户端和递归 DNS 服务器通信的最初一英里应用 DNS 加密技术,如 DNS-over-TLS,DNS-over-HTTPS 等。

结束语

如果文章中什么不对或者写的不好的中央,请大家多多斧正,谢谢!码字不易,点个赞加个关注吧!

题外话

笔者在「深圳虾皮」,一家口碑还不错的东南亚电商公司,2021 大量招人,机会多多!快来退出咱们吧!

当初有想法,还是当前有想法的同学,都能够加我微信[stone—999]!内推你退出咱们的小家庭!

参考

  • https://www.zhihu.com/questio…
  • https://cloud.tencent.com/dev…
  • https://www.ruanyifeng.com/bl…
  • https://www.ruanyifeng.com/bl…
  • https://zhuanlan.zhihu.com/p/…

正文完
 0