详解DNS递归查询与迭代查询

关于01月23日全国范围内DNS污染,域名解析故障的根源,资深的IT人士都知道原因是什么,并非国家

互联网应急中心发出的遭受攻击一说。

因此这里介绍一下DNS服务器的查询原理,也就是递归查询和迭代查询。

下图比较简明的描述了DNS服务器为客户端解析主机的全过程.

客户端通过域名访问站点时,必须要有DNS服务器解析到指定的IP地址上,才能进行下一步的

访问。客户端发起访问请求后,首先检查本地host文件,检查是否存在对应的IP映射关系,如果有则

直接通过映射的IP进行访问;如果没有则将请求发送给首选的DNS服务器。

客户端和DNS服务器之间使用的是递归查询,而DNS服务器之间使用的是迭代查询.

递归查询时要求所请求的DNS服务器应答给客户端所请求的域名和IP的映射关系;

迭代查询时所请求的DNS服务器应答给客户端的不一定是域名和IP地址的映射关系,也可以是另一台

DNS服务器,让客户端再将请求发送到另一台DNS服务器.

下面按上图根据实例介绍DNS解析全过程.

客户端发起访问请求:

1.查看本地hosts文件,发现没有 IP 映射关系,将请求发送给本地DNS服务器

—-递归查询—-

2.本地DNS服务器不包含163.com的权威域,不存在对应的www记录,因此将请求转发到根域名服务器

(假如 a.root-servers.net.)

3.根域名DNS服务器会返回负责.com域解析的服务器(假如 a.gtld-servers.net.)给本地DNS服务器,

本地DNS服务器再将请求发送给 a.gtld-servers.net

4..com域名服务器只能返回负责163.com域的解析服务器(如 ns1.nease.net.)给本地DNS服务器,本地

DNS服务器再将请求发送给ns1.nease.net.

5.由ns1.nease.net.域名服务器返回 的 IP映射关系给本地DNS服务器

(2-5过程)—-迭代查询—-

6.本地DNS服务器将结果保存到本地缓存,并保持TTL时间,同时将结果应答给客户端.

—-递归查询—- —-查询结束—-

7.当其他客户端再次向本地DNS服务器查询时,在TTL时间内,本地DNS服务器不再向根

域名服务器转发请求,而是直接从缓存中读取数据应答给客户端. 如果已经超过TTL时间,则本地DNS

服务器会再次经历一次上诉2-6的过程.

本地DNS服务器在代替客户端向其他服务器查询时,客户端完全处于等待状态。

递归查询时,返回的结果只有两种:查询成功或查询失败.

迭代查询,又称作重指引,返回的是最佳的查询点或者主机地址.

了解了以上原理,就可以很容易的判断DNS解析故障了,甚至于前日的全国DNS污染问题。

当然了解原理后,,还需要了解相关的工具和命令: dig,nslookup,host等.其中以dig命令的功能最为强大和灵活.

dig命令典型应用形如

dig @server name type

@server: 指定域名服务器

name:指定查询请求资源的域名

type:指定查询类型,如A、CNAME、SRV、MX、SIG等,如果不指定type,默认为A

比如:

默认情况下DNS使用UDP查询,我们使用查询选项设置为TCP查询

[shizhenning@zabbix ~]$ dig @8.8.8.8 163.com +tcp; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 163.com +tcp; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36041;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;163.com.INA;; ANSWER SECTION:163.com.277INA123.58.180.8163.com.277INA123.58.180.7;; Query time: 54 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Thu Jan 23 13:56:25 2014;; MSG SIZE rcvd: 57

查询MX记录:

[shizhenning@zabbix ~]$ dig @8.8.8.8 163.com MX; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 163.com MX; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41000;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;163.com.INMX;; ANSWER SECTION:163.com.13741 INMX50 163mx00.mxmail.netease.com.163.com.13741 INMX10 163mx01.mxmail.netease.com.163.com.13741 INMX10 163mx02.mxmail.netease.com.163.com.13741 INMX10 163mx03.mxmail.netease.com.;; Query time: 41 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Thu Jan 23 14:01:02 2014;; MSG SIZE rcvd: 136

查询CNAME记录:

[shizhenning@zabbix ~]$ dig @8.8.8.8 CNAME; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 CNAME; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27024;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;INCNAME;; ANSWER SECTION:347INCNAME ;; Query time: 41 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Thu Jan 23 14:01:54 2014;; MSG SIZE rcvd: 61

通电话,旅行,重复一个承诺和梦想,

详解DNS递归查询与迭代查询

相关文章:

你感兴趣的文章:

标签云: