dig命令詳解

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

type類型

   A 地址記錄(Ipv4)
  AAAA 地址記錄(Ipv6)
  AFSDB Andrew文件系統數據庫服務器記錄
  ATMA ATM地址記錄
  CNAME 別名記錄
  HINFO 硬件配置記錄,包括CPU、操做系統信息
  ISDN 域名對應的ISDN號碼
  MB 存放指定郵箱的服務器
  MG 郵件組記錄
  MINFO 郵件組和郵箱的信息記錄
  MR 更名的郵箱記錄
  MX 郵件服務器記錄
  NS 名字服務器記錄
  PTR 反向記錄
  RP 負責人記錄
  RT 路由穿透記錄
  SRV TCP服務器信息記錄
  TXT 域名對應的文本信息
  X25 域名對應的X.25地址記錄

tcp

 

-b address 設置所要詢問地址的源 IP 地址。這必須是主機網絡接口上的某一合法的地址。
-c class 缺省查詢類(IN for internet)由選項 -c 重設。class 能夠是任何合法類,好比查詢 Hesiod 記錄的 HS 類或查詢 CHAOSNET 記錄的 CH 類。
-f filename 使 dig 在批處理模式下運行,經過從文件 filename 讀取一系列搜索請求加以處理。文件包含許多查詢;每行一個。文件中的每一項都應該以和使用命令行接口對 dig 的查詢相同的方法來組織。
-h 當使用選項 -h 時,顯示一個簡短的命令行參數和選項摘要。
-k filename 要簽署由 dig 發送的 DNS 查詢以及對它們使用事務簽名(TSIG)的響應,用選項 -k 指定 TSIG 密鑰文件。
-n 缺省狀況下,使用 IP6.ARPA 域和 RFC2874 定義的二進制標號搜索 IPv6 地址。爲了使用更早的、使用 IP6.INT 域和 nibble 標籤的 RFC1886 方法,指定選項 -n(nibble)。
-p port# 若是須要查詢一個非標準的端口號,則使用選項 -p。port# 是 dig 將發送其查詢的端口號,而不是標準的 DNS 端口號 53。該選項可用於測試已在非標準端口號上配置成偵聽查詢的域名服務器。
-t type 設置查詢類型爲 type。能夠是 BIND9 支持的任意有效查詢類型。缺省查詢類型是 A,除非提供 -x 選項來指示一個逆向查詢。經過指定 AXFR 的 type 能夠請求一個區域傳輸。當須要增量區域傳輸(IXFR)時,type 設置爲 ixfr=N。增量區域傳輸將包含自從區域的 SOA 記錄中的序列號改成 N 以後對區域所作的更改。
-x addr 逆向查詢(將地址映射到名稱)能夠經過 -x 選項加以簡化。addr 是一個以小數點爲界的 IPv4 地址或冒號爲界的 IPv6 地址。當使用這個選項時,無需提供 nameclasstype 參數。dig 自動運行相似 11.12.13.10.in-addr.arpa 的域名查詢,並分別設置查詢類型和類爲 PTR 和 IN。
-y name:key 您能夠經過命令行上的 -y 選項指定 TSIG 密鑰;name 是 TSIG 密碼的名稱,key 是實際的密碼。密碼是 64 位加密字符串,一般由 dnssec-keygen(8)生成。當在多用戶系統上使用選項 -y 時應該謹慎,由於密碼在 ps(1)的輸出或 shell 的歷史文件中多是可見的。當同時使用 dig 和 TSCG 認證時,被查詢的名稱服務器須要知道密碼和解碼規則。在 BIND 中,經過提供正確的密碼和 named.conf 中的服務器聲明實現。

 

參數

 

global-queryopt... 全局查詢選項(請參閱多個查詢)。
查詢 查詢選項(請參閱查詢選項)。

 

查詢選項

dig 提供查詢選項號,它影響搜索方式和結果顯示。一些在查詢請求報頭設置或復位標誌位,一部分決定顯示哪些回覆信息,其它的肯定超時和重試戰略。每一個查詢選項被帶前綴(+)的關鍵字標識。一些關鍵字設置或復位一個選項。一般前綴是求反關鍵字含義的字符串 no。其餘關鍵字分配各選項的值,好比超時時間間隔。它們的格式形如 +keyword=value。查詢選項是:ide

+[no]tcp
查詢域名服務器時使用 [不使用] TCP。缺省行爲是使用 UDP,除非是 AXFR 或 IXFR 請求,才使用 TCP 鏈接。
+[no]vc
查詢名稱服務器時使用 [不使用] TCP。 +[no]tcp 的備用語法提供了向下兼容。 vc 表明虛電路。
+[no]ignore
忽略 UDP 響應的中斷,而不是用 TCP 重試。缺省狀況運行 TCP 重試。
+domain=somename
設定包含單個域 somename 的搜索列表,好像被 /etc/resolv.conf 中的域僞指令指定,而且啓用搜索列表處理,好像給定了 +search 選項。
+[no]search
使用 [不使用] 搜索列表或 resolv.conf 中的域僞指令(若是有的話)定義的搜索列表。缺省狀況不使用搜索列表。
+[no]defname
不建議看做 +[no]search 的同義詞。
+[no]aaonly
該選項不作任何事。它用來提供對設置成未實現解析器標誌的 dig 的舊版本的兼容性。
+[no]adflag
在查詢中設置 [不設置] AD(真實數據)位。目前 AD 位只在響應中有標準含義,而查詢中沒有,可是出於完整性考慮在查詢中這種性能能夠設置。
+[no]cdflag
在查詢中設置 [不設置] CD(檢查禁用)位。它請求服務器不運行響應信息的 DNSSEC 合法性。
+[no]recursive
切換查詢中的 RD(要求遞歸)位設置。在缺省狀況下設置該位,也就是說 dig 正常情形下發送遞歸查詢。當使用查詢選項 +nssearch+trace 時,遞歸自動禁用。
+[no]nssearch
這個選項被設置時, dig 試圖尋找包含待搜名稱的網段的權威域名服務器,並顯示網段中每臺域名服務器的 SOA 記錄。
+[no]trace
切換爲待查詢名稱從根名稱服務器開始的代理路徑跟蹤。缺省狀況不使用跟蹤。一旦啓用跟蹤, dig 使用迭代查詢解析待查詢名稱。它將按照從根服務器的參照,顯示來自每臺使用解析查詢的服務器的應答。
+[no]cmd
設定在輸出中顯示指出 dig 版本及其所用的查詢選項的初始註釋。缺省狀況下顯示註釋。
+[no]short
提供簡要答覆。缺省值是以冗長格式顯示答覆信息。
+[no]identify
當啓用 +short 選項時,顯示 [或不顯示] 提供應答的 IP 地址和端口號。若是請求簡短格式應答,缺省狀況不顯示提供應答的服務器的源地址和端口號。
+[no]comments
切換輸出中的註釋行顯示。缺省值是顯示註釋。
+[no]stats
該查詢選項設定顯示統計信息:查詢進行時,應答的大小等等。缺省顯示查詢統計信息。
+[no]qr
顯示 [不顯示] 發送的查詢請求。缺省不顯示。
+[no]question
當返回應答時,顯示 [不顯示] 查詢請求的問題部分。缺省做爲註釋顯示問題部分。
+[no]answer
顯示 [不顯示] 應答的回答部分。缺省顯示。
+[no]authority
顯示 [不顯示] 應答的權限部分。缺省顯示。
+[no]additional
顯示 [不顯示] 應答的附加部分。缺省顯示。
+[no]all
設置或清除全部顯示標誌。
+time=T
爲查詢設置超時時間爲 T 秒。缺省是5秒。若是將 T 設置爲小於1的數,則以1秒做爲查詢超時時間。
+tries=A
設置向服務器發送 UDP 查詢請求的重試次數爲 A,代替缺省的 3 次。若是把 A 小於或等於 0,則採用 1 爲重試次數。
+ndots=D
出於徹底考慮,設置必須出如今名稱 D 的點數。缺省值是使用在 /etc/resolv.conf 中的 ndots 語句定義的,或者是 1,若是沒有 ndots 語句的話。帶更少點數的名稱被解釋爲相對名稱,並經過搜索列表中的域或文件 /etc/resolv.conf 中的域僞指令進行搜索。
+bufsize=B
設置使用 EDNS0 的 UDP 消息緩衝區大小爲 B 字節。緩衝區的最大值和最小值分別爲 65535 和 0。超出這個範圍的值自動舍入到最近的有效值。
+[no]multiline
以詳細的多行格式顯示相似 SOA 的記錄,並附帶可讀註釋。缺省值是每單個行上顯示一條記錄,以便於計算機解析 dig 的輸出。

多條查詢

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

查看你使用的是哪一個 root dns server 

dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT

查看 bind 的版本號
dig @bind_dns_server CHAOS TXT version.bind

其中:

server
待查詢名稱服務器的名稱或 IP 地址。能夠是用點分隔的 IPv4 地址或用冒號分隔的 IPv6 地址。當由主機提供服務器參數時, dig 在查詢域名服務器前先解析那個名稱。若是沒有服務器參數能夠提供, dig 參考 /etc/resolv.conf,而後查詢列舉在那裏的域名服務器。顯示來自域名服務器的應答。
name
將要查詢的資源記錄的名稱。
type
顯示所需的查詢類型 - ANYAMXSIG,以及任何有效查詢類型等。若是不提供任何類型參數, dig 將對紀錄 A 執行查詢。

 

 以下摘自 http://369369.blog.51cto.com/319630/812889

DNS 查詢的過程以下圖所示。

一、在瀏覽器中輸入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客戶機,完成解析。

二、DNS服務器設置轉發

    因www.sohu.com域名在第一步的驗證中使用過,有緩存,爲了避免受上步實驗干擾,咱們在客戶機上192.168.145.12上nslookup www.baidu.com。從圖上看,本地DNS把請求轉發至192.168.133.10服務器,133.10服務器把獲得的IP返回給本地DNS,而後本地DNS再把IP告訴DNS客戶機,完成解析。

相關文章
相關標籤/搜索