DNS学习总结

参考文章

面试官:讲讲DNS的原理
如果美国把根域名服务器封了,中国会从网络上消失吗?
Linux下解析域名命令-dig 命令使用详解
DNS域名劫持,DNS域名劫持的6种方式及解决方法详解

简介

DNS就是将域名转换为IP的,因为我们人类的记忆力太差,根本记不住IP,而电脑通信又必须用IP,所以人类发明了域名,让我们可以记住baidu.com、taobao.com这种还算能记得住的域名。然后通过DNS,将这些域名转换为电脑需要的IP。

结构

主机名.次级域名.顶级域名.根域名

www.tmall.com对应的真正的域名为www.tmall.com. 。

末尾的.称为根域名,因为每个域名都有根域名,因此我们通常省略。

根域名的下一级,叫做"顶级域名"(top-level domain,缩写为TLD),比如.com、.net。

再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.tmall.com里面的.tmall,这一级域名是用户可以注册的。

再下一级是主机名(host),比如www.tmall.com里面的www,又称为"三级域名"。这一层由各个域的管理员自行建立,不需要通过管理域名的机构,是用户可以任意分配的。例如,可以在.toutiao.com这个域下再建立www.toutiao.com、m.toutiao.com等主机。

顶级域名:这一层的命名方式有争议。在美国以外的国家,大多数以ISO3Il6所定制的国码来区分。例如,.cn为中国,.jp为日本,hk为香港等。

但是在美国,虽然它也有us,但却很少用来当成顶级域名,是以组织性质来区分的。例如:.com代表商业组织,.edu代表教育机构,.org代表非营利组织,.net代表计算机网络组织,.gov代表美国政府组织,mil代表军事部门。

查询流程

浏览器缓存1
hosts文件1
本机设置的DNS-简称LDNS111
根DNS服务器1
顶级域名服务器11
次级域名服务器11

上面就是各种教科书中都会讲到的DNS查询过程,但实际上,没有这么麻烦,因为各个层面都是有缓存的。

举个例子,比如用户在浏览器中输入这个域名:123.abc.qq.com.cn

1、浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去hosts文件看,也没有,才会去问LDNS。

2、LDNS会去先看看自己有没有123.abc.qq.com.cn的A记录,要有就直接返回,要没有,就去看有没有abc.qq.com.cn的NS记录,如果有,就去问它要答案,如果没有,就去看有无qq.com.cn的NS的记录,如果有,就去问它,没有就去看有无com.cn的DNS,还没有就去看有无cn的DNS,如果连cn的NS记录都没有,才去问根。

所以,有了缓存以后,教科书上那种从根问起的情况,实际上很少发生。只有在各处都没有缓存的时候,我们才会问根。

常用DNS

114.114.114.114

是国内移动、电信bai和联通通用的DNS,解析成功率相对来说更高,国内用户使用的比较多,速度相对快、稳定,是国内用户上网常用的DNS

8.8.8.8

是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。

180.76.76.76 : 是百度提供DNS。

223.5.5.5 和 223.6.6.6 : 是阿里提供DNS。

DNS劫持

现象:劫持DNS的返回结果,把自己的IP替换正确的IP。其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。

防御手段:

  1. 手动修改电脑或路由器的DNS服务器地址为知名DNS服务器,如 114.114.114.114 (国内电信、移动和联通通用的DNS)或
    8.8.8.8(GOOGLE公司)。备注:如果有路由时,修改掉路由器的默认用户名和密码,防止黑客猜到后利用路由器攻击你的网络设备。
  2. 互联网公司准备两个以上的域名,一旦黑客进行DNS攻击,用户还可以访问另一个域名。

DNS污染

现象:某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。DNS污染是DNS劫持一种。

防御手段:同DNS劫持的防御手段。

常用linux命令

dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常

dig www.linuxidc.com

运行结果:
在这里插入图片描述
第一部分显示 dig 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
第三部分中的 “QUESTION SECTION” 显示我们要查询的域名。
第四部分的 “ANSWER SECTION” 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。

默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。

A 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。
AAAA 用来指定主机名(或域名)对应的 IPv6 地址记录。
CNAME 如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。
MX 如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。
NS 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。
SOA SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
TXT 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。

如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。它会输出从根域到最终结果的所有信息:

dig +trace www.linuxidc.com

详情请看: Linux下解析域名命令-dig 命令使用详解

ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包。ping 主要有两个作用:1,用来确认网络连接是畅通的。2,用来查看连接的速度信息。

ping www.linuxidc.com

面试问题

全世界有多少根DNS?

13个,其中10个在美国,英国和瑞典各1个,日本1个。

A.root-servers.net ,B.root-servers.net,C.root-servers.net … M.root-servers.net 。A开头那个简称A根,是主根,其他12个(B、C、D、E、F、G、H、I、J、K、L、M)是辅根。

但物理服务器不只13台。13个根,只是一个逻辑上的概念,每个根DNS,背后都有多台真正的物理服务器在工作!截至2020年8月12日,全球一共有1097个根服务器。每一个根都有若干个镜像,分布在全球不同的地方。含港澳台部分,我国一共有28个根镜像。

全球有一千多个根镜像,它们一起共享13个IP! 因为只有13个根。这是如何做到的?答案是任播(Anycast,又译泛播)技术。

任播是指在IP网络上通过一个IP地址标识一组提供特定服务的主机,服务访问方并不关心提供服务具体是哪一台主机提供的,访问该地址的报文可以被IP网络路由到“最近”的一个(最好也只是一个,别送到多个)服务器上。这里“最近”可以是指路由器跳数、服务器负载、服务器吞吐量、客户和服务器之间的往返时间( RTT,round trip time )、链路的可用带宽等特征值。

根镜像起什么作用?

根镜像承担起和根一样的功能。

根DNS中,最重要的文件就是根区文件(Root Zone file)。所有顶级域名记录都存在根区文件中。

辅根从主根同步数据,根镜像从根同步数据。最终,所有根和镜像都有着同样的根区文件。

而且最有意思的是,根镜像和根有着同样的IP。

如果美国把根域名服务器封了,中国会从网络上消失吗?

不会。我国一共有28个根镜像。根镜像承担起和根一样的功能。而且最有意思的是,根镜像和根有着同样的IP。它们一起共享13个IP! 对的。因为只有13个根。这是如何做到的?答案是任播(Anycast,又译泛播)技术。

任播是指在IP网络上通过一个IP地址标识一组提供特定服务的主机,服务访问方并不关心提供服务具体是哪一台主机提供的,访问该地址的报文可以被IP网络路由到“最近”的一个(最好也只是一个,别送到多个)服务器上。

对于中国用户来说,对根的请求,一般不会跑到美国去,而是通过任播技术路由到中国境内的根镜像上。

美国对根DNS做什么手脚,如删除cn记录,还能访问中国网站吗?

可以。正常情况:如果删除和cn相关的那些行,很快,就会同步到所有的根中。然后,在所有的缓存都过期之后,全球所有人都访问不了.cn后缀的网站。

但中国有自己的28个根镜像。我们可以不同步关于cn的修改。比如:可以简单写个程序,每次同步完立刻加上cn记录。用户就可以继续访问中国网站了。

那么,除了中国自己,其他国家的人都无法访问.cn网站。但是,这些国家很快就会有响应,凡是想访问.cn网站的国家,都会把cn记录加回去,并拒绝同步美国删去的这几行。最终,只有美国人,访问不了.cn网站。

权威域名服务器

负责对域名作出权威的回答:问我一个域名,我告诉你IP,如果我不知道,我告诉你谁可能知道,你再去问它。
负责对请求作出权威的回答。权威DNS中存储着记录,最常见的3种:

  1. A记录(记录某域名和其IP的对应)。
  2. NS记录(记录某域名和负责解析该域的权威DNS)。
  3. CNAME记录(负责记录某域名及其别名)。

权威能直接回答的,就回A记录;需要其他权威DNS回答的,就回NS记录,然后LDNS再去找其他权威DNS问;如果该记录是别名类型的,就回CNAME,LDNS就会再去解析别名。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值