dig 命令shell
DNS 查詢實用程序。數據庫
一個典型的 dig 查詢以下瀏覽器
dig @server name type
dig @server xxx.com.cn.
dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt...]緩存
dig [-h]服務器
dig [global-queryopt...] [query...]網絡
dig(域信息搜索器)命令是一個用於詢問 DNS 域名服務器的靈活的工具。它執行 DNS 搜索,顯示從受請求的域名服務器返回的答覆。多數 DNS 管理員利用 dig 做爲 DNS 問題的故障診斷,由於它靈活性好、易用、輸出清晰。雖然一般狀況下 dig 使用命令行參數,但它也能夠按批處理模式從文件讀取搜索請求。不一樣於早期版本,dig 的 BIND9 實現容許從命令行發出多個查詢。除非被告知請求特定域名服務器,dig 將嘗試 /etc/resolv.conf 中列舉的全部服務器。當未指定任何命令行參數或選項時,dig 將對「.」(根)執行 NS 查詢。dom
A 地址記錄(Ipv4)
global-queryopt... | 全局查詢選項(請參閱多個查詢)。 |
查詢 | 查詢選項(請參閱查詢選項)。 |
dig 提供查詢選項號,它影響搜索方式和結果顯示。一些在查詢請求報頭設置或復位標誌位,一部分決定顯示哪些回覆信息,其它的肯定超時和重試戰略。每一個查詢選項被帶前綴(+)的關鍵字標識。一些關鍵字設置或復位一個選項。一般前綴是求反關鍵字含義的字符串 no。其餘關鍵字分配各選項的值,好比超時時間間隔。它們的格式形如 +keyword=value。查詢選項是:ide
dig 的 BIND9 支持在命令行上指定多個查詢(支持 -f 批處理文件選項的附加功能)。每條查詢可使用本身的標誌位、選項和查詢選項。工具
在這種狀況下,在上面描述的命令行語法中,每條查詢自變量表明一個個別查詢。每一條由任意標準選項和標誌、待查詢名稱、可選查詢類型和類以及任何適用於該查詢的查詢選項。
也可使用對全部查詢均有效的查詢選項全局集合。全局查詢選項必須位於命令行上第一個名稱、類、類型、選項、標誌和查詢選項的元組以前。任何全局查詢選項(除了 +[no]cmd 選項)能夠被下面的查詢特別選項重設。例如:
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
顯示 dig 如何從命令行出發進行三個查詢:一個針對 www.isc.org的任意查詢、一個 127.0.0.1 的逆向查詢,以及一個 isc.org 的 NS 記錄查詢。應用了 +qr 的全局查詢選項,以便 dig 顯示進行每條查詢的初始查詢。最後那個查詢有一個本地查詢選項 +noqr,表示 dig 在搜索 isc.org 的 NS 記錄時不顯示初始查詢。
一個典型的 dig 調用相似:
dig @server name type
dig @server xxx.com.cn.
# 用 dig 查看 zone 數據傳輸
dig @server xx.xxxx.com. AXFR
# 用 dig 查看 zone 數據的增量傳輸
dig @server xx.xxxx.com. IXFR=N
# 用 dig 查看反向解析
dig -x 210.52.83.228 @server
# 查找一個域的受權 dns 服務器
dig xmgd.com. +nssearch
# 從根服務器開始追蹤一個域名的解析過程
dig xmgd.com +trace
# 查看你使用的是哪一個 F root dns server
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
# 查看 bind 的版本號
dig @bind_dns_server CHAOS TXT version.bind
其中:
以下摘自 http://369369.blog.51cto.com/319630/812889
一、在瀏覽器中輸入www.qq.com域名,操做系統會先檢查本身本地的hosts文件是否有這個網址映射關係,若是有,就先調用這個IP地址映射,完成域名解析。
二、若是hosts裏沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關係,若是有,直接返回,完成域名解析。
三、若是hosts與本地DNS解析器緩存都沒有相應的網址映射關係,首先會找TCP/ip參數中設置的首選DNS服務器,在此咱們叫它本地DNS服務器,此服務器收到查詢時,若是要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具備權威性。
四、若是要查詢的域名,不禁本地DNS服務器區域解析,但該服務器已緩存了此網址映射關係,則調用這個IP地址映射,完成域名解析,此解析不具備權威性。
五、若是本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,若是未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求後會判斷這個域名(.com)是誰來受權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息後,將會聯繫負責.com域的這臺服務器。這臺負責.com域的服務器收到請求後,若是本身沒法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址後,就會找qq.com域服務器,重複上面的動做,進行查詢,直至找到www.qq.com主機。
六、若是用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器若是不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不論是本地DNS服務器用是是轉發,仍是根提示,最後都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間就是的交互查詢就是迭代查詢。
附錄:
本地DNS配置轉發與未配置轉發數據包分析
一、DNS服務器不設轉發
在192.168.145.228這臺DNS服務器上安裝上wireshark軟件,並打開它,設置數據包爲UDP過濾,在192.168.145.12客戶機上用nslookup命令查詢一下www.sohu.com,立刻能夠看到本地DNS服務器直接查全球13臺根域中的某幾臺,而後一步步解析,經過遞代的方式,直到找到www.sohu.com對應的IP爲220.181.118.87。
本地DNS服務器獲得www.sohu.com的IP後,它把這個IP返回給192.168.145.12客戶機,完成解析。
因www.sohu.com域名在第一步的驗證中使用過,有緩存,爲了避免受上步實驗干擾,咱們在客戶機上192.168.145.12上nslookup www.baidu.com。從圖上看,本地DNS把請求轉發至192.168.133.10服務器,133.10服務器把獲得的IP返回給本地DNS,而後本地DNS再把IP告訴DNS客戶機,完成解析。