借助dig命令分析DNS解析过程

作者: poxiao 分类: Linux 发布时间: 2018-03-16 14:58

DNS(Domain Name System,域名系统),是一种用于将域名解析为IP的服务器系统,当你上网时输入一个网址,它之所以能够找到该网址指向的服务器地址,都是靠域名系统来进行解析的。

先来讲讲域名。以mail.dlut.edu.cn为例,一个域名,其实是从最右端开始逐层向下的,也就是说.cn是最高级的域名,往下才是.edu,然后到.dlut,最后mail是网站服务器的主机名,通过这样一层一层就能找到你需要访问的服务器地址。

当我们输入一个网址时,DNS帮我们找到这个网址对应的服务器的过程是怎样的呢?

1、首先要知道,我们每一部连上Internet的电脑都需要配置当前网络的DNS服务器地址,例如你开通校园网时,学校会给你分配IP,以及告诉你几个DNS(默认、备用)的地址让你填好,这个就是直接为你服务的DNS。但是,单靠这个DNS是无法直接解析域名的,在它之上还有更高级的DNS,这些DNS协同运作最终为你找到你需要的域名所在的服务器,下面来讲讲具体过程。

执行dig命令:

 

补充:

如果机器上用不了dig命令的话,使用下面方式安装:

Fedora / Centos:

Ubuntu:

Debian:

安装后也会包含nslookup命令。

2.看上面执行过程,第一层消息:

10.143.22.116这个IP是什么呢?查看一下本机DNS:

没错,就是本机DNS

这时直接为本机的DNS(10.143.22.116)首先会将请求报告给DNS系统的最高等级服务器“. ”,没错,就是一个小数点,这个最高等级DNS服务器称为root。

3、得到这个响应之后,DNS系统的最高等级服务器(199.7.91.13)会将请求报告给.cn的DNS。

4、然后,.cn的DNS(195.219.8.90)会给.edu.cn的DNS提交请求。

5、然后,.edu.cn的DNS(192.76.176.9)会给dlut.edu.cn的DNS提交请求。

6、最后,dlut.edu.cn的DNS(202.118.66.6)向mail.dlut.edu.cn的DNS 提供请求,终于能够找到这个网址对应的IP(202.118.66.82)了。

整个域名解析过程就是如此,可能你会觉得,这样不是很繁琐吗,为什么不直接找到dlut.edu.cn的DNS呢?
这是不可能的,因为单一的DNS不可能记住所有域名对应的IP,这样会使整个服务器变得很臃肿,也就变得不可靠。采用这种分层的方法,就可以实现分层管理,从而达到效率提高的目的。

 

其实dig命令更简单的用法是:

 

开头是一些统计信息,可以不用管,我们看一看后面的SECTION

QUESTION SECTION 这部分是提问,显示你要查询的域名
ANSWER SECTION 即答案,显示查询到的域名对应的IP
AUTHORITY SECTION 这部分显示的是直接提供这个域名解析的DNS服务器,不包括更高级DNS服务器
ADDITIONAL SECTION 这部分显示的是这些直接提供解析的服务器的IP地址
最后面的是一些统计信息,其中SERVER指的是直接为你服务的本地DNS服务器的IP。

除了这些内容之外,还有:
1、中间的5指的是ttl(time to live ,暂存时间),表示这次请求会在服务器上保存多久时间(单位:秒)。
2、IN是固定关键词
3、CNAME是别名,意思是这个域名还有另外一个名字,两者指向同一个IP。 A指的是Address,即IP地址。 NS指的是服务器主机名,在AUTHORITY SECTION里面的服务器主机名,都会在ADDITIONAL SECTION里给出该主机的IP地址。

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

 

SOA是start of authority的简称,提供了DNS主服务器的相关信息,在soa之后我们可以看到7个参数,依次是:
1、DNS主服务器名
2、管理员的E-mail,这里是baidu.dns.master@baidu.com,由于@在数据库文件里有特殊作用,所以这里是用.代替的。
3、更新序号。表示数据库文件的新旧,一般是用时间来表示,这里1703230011表示的是2017年3月23日进行了一次更新,当天更新编号0011.
4、更新频率。 表示每5秒,slave服务器就要向master服务器索取更新信息。
5、失败重试时间,当某些原因导致Slave服务器无法向master服务器索取信息时,会隔5秒就重试一次。
6、失效时间。如果一直重试失败,当重试时间累积达到86400秒时,不再向主服务器索取信息。
7、缓存时间。默认的TTL缓存时间。

 

 

参考资料:

http://blog.csdn.net/a583929112/article/details/66499771

http://1www.71j.cn/archives/115

本文链接:借助dig命令分析DNS解析过程

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:破晓(http://www.code2048.net),谢谢!^^


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

邮箱地址不会被公开。 必填项已用*标注