詳解DNS遞迴查詢與迭代查詢

詳解DNS遞迴查詢與迭代查詢

關於01月23日全國範圍內DNS汙染,網域名稱解析故障的根源,資深的IT人士都知道原因是什麼,並非國家

互連網應急中心發出的遭受攻擊一說。

因此這裡介紹一下DNS伺服器的查詢原理,也就是遞迴查詢和迭代查詢。

比較簡明的描述了DNS伺服器為用戶端解析主機www.163.com的全過程.

650) this.width=650;" title="dns1.jpg" alt="wKioL1LgjkrDu3gqAAKJlJWz1tA163.jpg" src="http://www.bkjia.com/uploads/allimg/140207/21552TY9-0.jpg" />

根網域名稱伺服器:是互連網網域名稱解析系統DNS)中最進階別的網域名稱伺服器,全球有386台根伺服器,被編號為A到M共13個標號。中國北京有兩台編號為F的根伺服器鏡像,編號為I、J、L的各一,共5台鏡像,在香港有A、F、I、J、L五台根伺服器鏡像,全部藉由任播Anycast)技術,所有編號相同的根伺服器都是同一個IP,386台根伺服器總共只使用了13個IP,因此可以抵抗針對其所進行的分散式阻斷服務攻擊(DDoS)。

根網域名稱伺服器列表: (a-m.root-servers.net)

650) this.width=650;" width="194" height="214" title="dns.png" style="width:251px;height:257px;" alt="wKiom1LgpmuwjkANAACjjH6idLg846.jpg" src="http://www.bkjia.com/uploads/allimg/140207/21552V4P-1.jpg" />

用戶端通過網域名稱訪問網站時,必須要有DNS伺服器解析到指定的IP地址上,才能進行下一步的

訪問。用戶端發起訪問請求後,首先檢查本地host檔案,檢查是否存在對應的IP映射關係,如果有則

直接通過映射的IP進行訪問;如果沒有則將請求發送給首選的DNS伺服器。

用戶端和DNS伺服器之間使用的是遞迴查詢,而DNS伺服器之間使用的是迭代查詢.

遞迴查詢時要求所請求的DNS伺服器應答給用戶端所請求的網域名稱和IP的映射關係;

迭代查詢時所請求的DNS伺服器應答給用戶端的不一定是網域名稱和IP地址的映射關係,也可以是另一台

DNS伺服器,讓用戶端再將請求發送到另一台DNS伺服器.

下面按根據執行個體介紹DNS解析全過程.

用戶端發起訪問請求www.163.com:

1.查看本地hosts檔案,發現沒有www.163.com 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.網域名稱伺服器返回www.163.com 的 IP映射關係給本地DNS伺服器

(2-5過程)----迭代查詢----

6.本地DNS伺服器將結果儲存到本機快取,並保持TTL時間,同時將結果應答給用戶端.

----遞迴查詢---- ----查詢結束----

7.當其他用戶端再次向本地DNS伺服器查詢www.163.com時,在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. IN A;; ANSWER SECTION:163.com. 277 IN A 123.58.180.8163.com. 277 IN A 123.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. IN MX;; ANSWER SECTION:163.com. 13741 IN MX 50 163mx00.mxmail.netease.com.163.com. 13741 IN MX 10 163mx01.mxmail.netease.com.163.com. 13741 IN MX 10 163mx02.mxmail.netease.com.163.com. 13741 IN MX 10 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 www.163.com CNAME; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 www.163.com 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:;www.163.com. IN CNAME;; ANSWER SECTION:www.163.com. 347 IN CNAME www.163.com.lxdns.com.;; 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

查詢DRV記錄:

[shizhenning@zabbix ~]$ dig @8.8.8.8 163.com SRV; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 163.com SRV; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41227;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0;; QUESTION SECTION:;163.com. IN SRV;; AUTHORITY SECTION:163.com. 1800 IN SOA ns4.nease.net. admin.nease.net. 20130823 7200 1800 1209600 3600;; Query time: 137 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Thu Jan 23 14:02:46 2014;; MSG SIZE rcvd: 80

我們要查詢某個網域名稱解析的全過程:(此時為迭代查詢)

[shizhenning@zabbix ~]$ dig @8.8.8.8 163.com +trace; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 163.com +trace; (1 server found);; global options: printcmd. 19586 IN NS a.root-servers.net.. 19586 IN NS b.root-servers.net.. 19586 IN NS c.root-servers.net.. 19586 IN NS d.root-servers.net.. 19586 IN NS e.root-servers.net.. 19586 IN NS f.root-servers.net.. 19586 IN NS g.root-servers.net.. 19586 IN NS h.root-servers.net.. 19586 IN NS i.root-servers.net.. 19586 IN NS j.root-servers.net.. 19586 IN NS k.root-servers.net.. 19586 IN NS l.root-servers.net.. 19586 IN NS m.root-servers.net.;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 62 mscom. 172800 IN NS m.gtld-servers.net.com. 172800 IN NS l.gtld-servers.net.com. 172800 IN NS k.gtld-servers.net.com. 172800 IN NS j.gtld-servers.net.com. 172800 IN NS i.gtld-servers.net.com. 172800 IN NS h.gtld-servers.net.com. 172800 IN NS g.gtld-servers.net.com. 172800 IN NS f.gtld-servers.net.com. 172800 IN NS e.gtld-servers.net.com. 172800 IN NS d.gtld-servers.net.com. 172800 IN NS c.gtld-servers.net.com. 172800 IN NS b.gtld-servers.net.com. 172800 IN NS a.gtld-servers.net.;; Received 485 bytes from 198.41.0.4#53(a.root-servers.net) in 134 ms163.com. 172800 IN NS ns2.nease.net.163.com. 172800 IN NS ns3.nease.net.163.com. 172800 IN NS ns4.nease.net.163.com. 172800 IN NS ns5.nease.net.163.com. 172800 IN NS ns6.nease.net.163.com. 172800 IN NS ns1.nease.net.;; Received 238 bytes from 192.55.83.30#53(m.gtld-servers.net) in 137 ms163.com. 600 IN A 123.58.180.7163.com. 600 IN A 123.58.180.8163.com. 172800 IN NS ns2.nease.net.163.com. 172800 IN NS ns5.nease.net.163.com. 172800 IN NS ns6.nease.net.163.com. 172800 IN NS ns3.nease.net.163.com. 172800 IN NS ns4.nease.net.163.com. 172800 IN NS ns1.nease.net.;; Received 270 bytes from 114.113.197.12#53(ns2.nease.net) in 34 ms

掌握dig命令後,DNS解析故障就很容易排查了.

關於網域名稱伺服器緩衝汙染只是一種技術,沒有對錯之分,有時我們企業內部也需要刻意使用這種技術

來滿足企業需求。關於DNS汙染技術在企業中的應用情境,詳見 淺談活動目錄網域名稱稱空間設計。

本文出自 “史振寧的技術部落格” 部落格,請務必保留此出處http://magic3.blog.51cto.com/1146917/1354084

相关文章

魂斗罗归来体力不够怎么办 体力一天上限是多少 365bet中文体育在线

魂斗罗归来体力不够怎么办 体力一天上限是多少

📅 07-12 👁️ 3037
96262是什么电话号码 365约彩app怎么没有了

96262是什么电话号码

📅 07-24 👁️ 3202
1070显卡是哪一年的 ( 显卡上市时间表 ) 365体育足球中文版

1070显卡是哪一年的 ( 显卡上市时间表 )

📅 07-31 👁️ 6936