前言

文中内容参考DNS 原理入门—阮一峰以及https://blog.csdn.net/a583929112/article/details/66499771内容。

DNS简介

DNS(Domain Name System) 即域名系统。 作用就是根据域名查出 IP 地址。

查询过程

我们使用dig(Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具)来显示wwww.baidu.com DNS的查询过程。

dig www.baidu.com

上面的命令会输出六段信息:

第一段是查询参数和统计:

; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17163
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 7

其中

; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd

是 dig版本(version 9.10.6)及输入参数信息
剩下的就是 DNS一些头部信息, status值为NOERROR代表本次查询成功


第二段是查询内容:

;; QUESTION SECTION:
;www.baidu.com.                 IN      A

上面结果表示,查询域名www.baidu.com的A记录,A是address的缩写
IN 是固定关键字。


第三段是DNS服务器的答复:

;; ANSWER SECTION:
www.baidu.com.          600     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       600     IN      A       14.215.177.38
www.a.shifen.com.       600     IN      A       14.215.177.39

上面结果显示,www.baidu.com有一个CNAME记录, CNAME 表示查询 www.baidu.com 的信息其实是 www.a.shifen.com 返回的 A 记录; 有两个A记录,即两个IP地址。600是TTL值(Time to live 的缩写),表示缓存时间,即600秒之内不用重新查询


第四段是显示www.baidu.com的NS记录(Name Server的缩写),即哪些服务器负责管理www.baidu.com的DNS记录:

;; AUTHORITY SECTION:
a.shifen.com.           714     IN      NS      ns1.a.shifen.com.
a.shifen.com.           714     IN      NS      ns5.a.shifen.com.
a.shifen.com.           714     IN      NS      ns2.a.shifen.com.
a.shifen.com.           714     IN      NS      ns4.a.shifen.com.
a.shifen.com.           714     IN      NS      ns3.a.shifen.com.

上面结果显示www.baidu.com共有5条NS记录,即5个域名服务器,向其中任一台查询就能知道www.baidu.com的IP地址是什么。

NS指的是服务器主机名,在AUTHORITY SECTION里面的服务器主机名,都会在ADDITIONAL SECTION里给出该主机的IP地址。


第五段是上面5个域名服务器的IP地址,这是随着前一段一起返回的:

;; ADDITIONAL SECTION:
ns1.a.shifen.com.       165     IN      A       110.242.68.42
ns2.a.shifen.com.       162     IN      A       220.181.33.32
ns3.a.shifen.com.       396     IN      A       112.80.255.253
ns4.a.shifen.com.       101     IN      A       14.215.177.229
ns5.a.shifen.com.       589     IN      A       180.76.76.95
ns5.a.shifen.com.       119     IN      AAAA    240e:940:603:a:0:ff:b08d:239d
ns5.a.shifen.com.       119     IN      AAAA    240e:bf:b801:1006:0:ff:b04f:346b

A (Address) 记录是用来指定域名对应的IP地址记录,同时也可以设置域名的子域名,A记录目标地址只能使用IP地址。
AAAA 用来指定主机名(或域名)对应的 IPv6 地址记录


第六段是DNS服务器的一些传输信息:

;; Query time: 5 msec
;; SERVER: 202.103.24.68#53(202.103.24.68)
;; WHEN: Thu Jun 23 10:48:49 CST 2022
;; MSG SIZE  rcvd: 316

上面结果显示,查询耗时5ms,本机的DNS服务器是202.103.24.68,查询端口是53(DNS服务器的默认端口),在2022-06-23 10:48:49时间进行的查询,以及回应长度是316字节


直接显示DNS寻址结果

使用+short参数 , 这样控制台直接返回该域名对应的 IP 地址

dig +short www.baidu.com
www.a.shifen.com.
14.215.177.39
14.215.177.38

上面命令只返回www.baidu.com对应的1个cname别名, 2个IP地址(即A记录)

向特定DNS服务器寻址

本机只向自己的DNS服务器查询,dig命令有一个@参数,显示向其他DNS服务器查询的结果, 我们使用Google的8.8.8.8公网的DNS服务器寻找 www.baidu.com 域名的 DNS 解析结果:

dig @8.8.8.8 www.baidu.com

执行结果(部分)如下:

;; ANSWER SECTION:
www.baidu.com.          14      IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       197     IN      CNAME   www.wshifen.com.
www.wshifen.com.        197     IN      A       103.235.46.40

从返回结果可以看到,当我们向 8.8.8.8 DNS 服务器寻址时,其返回了 2 个 CNAME, 1个 IP 地址。跟我们向本地 DNS 服务器寻址时返回结果不一样。这说明了不同 DNS 服务器所存储的解析记录不同,并不说某个 DNS 服务器是错误的。

如果只想显示 “ANSWER SECTION” 的内容, 可以使用+noall +answer

查询A记录

A (Address) 记录是用来指定域名对应的IPv4 地址记录,同时也可以设置域名的子域名,A记录目标地址只能使用IP地址。
当相同域名有多个A记录时,表示轮循,可以达到负载均衡的目的。

dig a www.baidu.com

执行结果(部分)如下:

;; QUESTION SECTION:
;www.baidu.com.                 IN      A;; ANSWER SECTION:
www.baidu.com.          600     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       600     IN      A       14.215.177.39
www.a.shifen.com.       600     IN      A       14.215.177.38

可以看到, 一个CNAME, 两个IP地址

查询AAAA记录

AAAA记录是用来将域名解析到IPv6地址的DNS记录,其它方面同A记录。

dig aaaa ns5.a.shifen.com.

执行结果(部分)如下:

; <<>> DiG 9.10.6 <<>> aaaa ns5.a.shifen.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28220
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 6;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns5.a.shifen.com.      IN  AAAA;; ANSWER SECTION:
ns5.a.shifen.com.   600 IN  AAAA    240e:940:603:a:0:ff:b08d:239d
ns5.a.shifen.com.   600 IN  AAAA    240e:bf:b801:1006:0:ff:b04f:346b

可以看到ns5.a.shifen.com.有两个AAAA记录

CNAME记录

CNAME记录用于将一个域名映射到另外一个域名,DNS遇到CNAME记录会以映射到的目标重新开始查询,CNAME记录的目标地址只能使用域名,不能使用IP地址,A记录优先于CNAME记录,如果一个域名同时存在A记录和CNAME记录,则CNAME记录不生效。

dig cname www.baidu.com

执行结果(部分)如下:

;; ANSWER SECTION:
www.baidu.com.          600     IN      CNAME   www.a.shifen.com.

可以看出CNAME 为 www.a.shifen.com.
也就是说,用户查询 www.baidu.com 的时候,实际上返回的是 www.a.shifen.com 的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改 www.a.shifen.com 这个域名就可以了,用户的 www.baidu.com 域名不用修改。

由于CNAME记录就是一个替换,所以域名一旦设置CNAME记录以后,就不能再设置其他记录了(比如A记录和MX记录),这是为了防止产生冲突。举例来说,foo.com指向bar.com,而两个域名各有自己的MX记录,如果两者不一致,就会产生问题。由于顶级域名通常要设置MX记录,所以一般不允许用户对顶级域名设置CNAME记录。

MX记录

MX记录用于指定负责处理发往收件人域名的邮件服务器,MX记录允许设置一个优先级,越小的数字代表越高的优先次序,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。MX记录的目标地址可以使用域名或IP地址。

MX记录中的域名必须能够映射到一个或者多个DNS中类型为A或者AAAA的地址记录, 且根据RFC2181,原则上禁止指向CNAME记录。

dig mx www.baidu.com

执行结果(部分)如下:

;; ANSWER SECTION:
www.baidu.com.      350 IN  CNAME   www.a.shifen.com.;; AUTHORITY SECTION:
a.shifen.com.       600 IN  SOA ns1.a.shifen.com. baidu_dns_master.baidu.com. 2206230007 5 5 2592000 3600

可以看到其返回了一条类型为 SOA 的记录,这表明 www.baidu.com 的 MX 记录不存在。

NS记录

NS记录用来指定域名由哪个服务器来解析,NS记录的目标地址可以使用域名或IP地址。

dig ns baidu.com

执行结果(部分)如下:

;; ANSWER SECTION:
baidu.com.      86400   IN  NS  ns7.baidu.com.
baidu.com.      86400   IN  NS  ns4.baidu.com.
baidu.com.      86400   IN  NS  ns2.baidu.com.
baidu.com.      86400   IN  NS  ns3.baidu.com.
baidu.com.      86400   IN  NS  dns.baidu.com.

可以看到 baidu.com 一共有 5 个 NS 解析结果,分别是ns7.baidu.com, ns4.baidu.com, ns2.baidu.com, ns3.baidu.com, dns.baidu.com

注意: 输入 dig ns www.baidu.com 是查询不出 NS 任何记录的,原因在于只有一级域名(或者顶级域名)才有 NS 记录

PTR记录

PTR记录用于从IP地址反查域名。dig命令的-x参数用于查询PTR记录

dig -x 192.30.252.153

执行结果(部分)如下:

;; ANSWER SECTION:
153.252.30.192.in-addr.arpa. 3315 IN    PTR lb-192-30-252-153-iad.github.com.

上面我们查询 192.30.252.153 对应的域名,其查询结果表明该 IP 对应的域名为:lb-192-30-252-153-iad.github.com.,其是一个 github 的二级域名

SOA记录

SOA(start of authority)授权机构记录,记录ns中哪个是主服务器
在之前的NS查询里,展示了5个可以解析baidu.com下子域名的服务器。通过SOA可以查询哪个是授权机构的主服务器。

dig soa baidu.com

执行结果(部分)如下:

;; ANSWER SECTION:
baidu.com.      7200    IN  SOA dns.baidu.com. sa.baidu.com. 2012145453 300 300 2592000 7200

查看DNS服务器的主从关系

在上面的dig命令我们可以看到,在解析一个域名的时候,往往会发现有多个DNS服务器提供解析服务,这是因为DNS服务器要求一般至少有两个,以防发生服务器宕机无法提供域名解析的情况。那么多个服务器,谁来响应这个DNS请求呢?这就要看服务器管理者怎么设置各个服务器的主从关系(Master-Slave)了,通过dig命令也可以查看DNS服务器的主从关系

dig -t soa www.baidu.com

执行结果如下:

SOA(start of authority)提供了DNS主服务器的相关信息,在soa之后我们可以看到7个参数,依次是:

  1. DNS主服务器名;
  2. 管理员的E-mail,这里是baidu.dns.master@baidu.com,由于@在数据库文件里有特殊作用,所以这里是用.代替的;
  3. 更新序号。表示数据库文件的新旧,一般是用时间来表示,这里2206230007表示的是2022年6月23日进行了一次更新,当天更新编号0007;
  4. 更新频率。 表示每5秒,slave服务器就要向master服务器索取更新信息;
  5. 失败重试时间,当某些原因导致Slave服务器无法向master服务器索取信息时,会隔5秒就重试一次;
  6. 失效时间。如果一直重试失败,当重试时间累积达到2592000秒时,不再向主服务器索取信息;
  7. 缓存时间。默认的TTL缓存时间

参考资料

DNS 原理入门—阮一峰
https://blog.csdn.net/a583929112/article/details/66499771
https://www.jianshu.com/p/813918846788

DNS基础之通过dig命令理解DNS域名解析中的A记录,AAAA记录,CNAME记录,MX记录,NS记录相关推荐

  1. DNS域名解析,以及A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR说明

    温故知新,最近网上开到相关文章,这里终结记录一下,供大家参考. 目录 1.A记录 2.CNAME: 两种域名解析方式 4.NS记录 5.TXT记录: 6.AAAA记录: 7.SRV记录: 8.SOA记 ...

  2. DNS的A、CNAME、MX、NS、TXT、SPF记录

    前言 最近工作过程中需要设定邮件服务器,其中涉及到dns服务器的设定. 整理并且记录自己的理解. 种类 A.CNAME.MX.NS.TXT.SPF 下面挨个介绍一下. A记录/AAAA记录 IPv4: ...

  3. 购买域名之后如何设置DNS,DNS解析原理与dig命令使用

    关于域名注册之后,DNS设置解析设置的一些问题 域名解析 域名注册完成后首先需要做域名解析,域名解析就是把域名指向网站所在服务器的IP,让人们通过注册的域名可以访问到网站.IP地址是网络上标识服务器的 ...

  4. 命令理解DNS解析原理

    通过执行下面的命令可以清晰地理解DNS解析原理 dig @8.8.8.8 www.baidu.com +trace 执行结果 ~ $ dig @8.8.8.8 www.baidu.com +trace ...

  5. 什么是DNS,A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,TTL值

    DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名系统为Internet上的主机分配域名地址和IP地址.由于网络中的计算机都必 ...

  6. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

    云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.al ...

  7. ios如何解除dns被劫持_iOS强制ATS后,DNS劫持问题如何解决?

    之前苹果强制app上传AppStore必须支持ATS,截至日期是2017年01月01日,但是由于各种原因,导致deadline延期.具体什么时候苹果会强制ATS,官方暂时还没有给出明确答复. 支持Ht ...

  8. 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS

    本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...

  9. DNS 基础知识及 Linux DNS 服务器操作知识

    一.DNS域名结构与域名服务器 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...

最新文章

  1. 捡垃圾、跳大绳、种花、写字,波士顿动力机器狗迎来重大升级
  2. wxDrawjs循环添加图形后增加标识记录点击的是哪个的另类方法
  3. 安卓应用部件_设计应用程序小部件的痛苦和喜悦
  4. 中国癌症大数据出来了!每年126万例癌症死亡本可避免
  5. Android之Intent深入
  6. ReportViewer中设置ServerReport.ReportServerCredentials属性的方法(WEB版)
  7. HDU 1828:Picture(扫描线+线段树 矩形周长并)
  8. linux显卡驱动未加载,Linux下无显卡驱动的解决办法
  9. [Unity2018.2]ShaderGraph更新详解
  10. 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
  11. Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)
  12. 强悍的 vim —— 删除空行、删除注释以及加注释解注释
  13. swagger 上传文件 参数_如何使用Swagger上传文件
  14. php探针教程,php探针程序的推荐
  15. Python编程 whl文件安装库
  16. 今天,我 22 岁了 ...
  17. 【代码1】应用眼中的操作系统;系统调用
  18. MVC 简介,MVC数据库
  19. Linux部署war包项目
  20. MT25QU128 (flash) 简介

热门文章

  1. 计算机毕设(附源码)JAVA-SSM教务排课管理系统
  2. 关于我的新闻- 2005高教社杯全国大学生数学建模竞赛获奖名单
  3. 大学三年计算机职业规划,大学三年人生规划
  4. ESXi 7.0 Update 1c中加入的systemMediaSize启动选项
  5. 数据可视化----高德API热力图
  6. 【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 31页省一等奖论文及代码
  7. 高企的专项审计里面是不是需要产学研协议?
  8. 电脑无法运行msi软件
  9. Firefox火狐浏览器强制使用阅读模式(添加插件法)
  10. acer台式电脑怎么重装系统_acer电脑U盘重装操作系统图文教程