dig命令的学习
在整理SCSP資料時(shí),突然對(duì)dig命令很感興趣,在詳細(xì)學(xué)習(xí)dig的過程中同時(shí)也將DNS重新回顧學(xué)習(xí)了一遍。
1.介紹
dig(域信息搜索器)命令是一個(gè)在類Unix命令行模式下用于詢問 DNS 域名服務(wù)器的靈活的工具。它執(zhí)行DNS搜索,顯示從受請(qǐng)求的域名服務(wù)器返回的答復(fù)。多數(shù)DNS管理員利用dig作為DNS問題的故障診斷工具,因?yàn)樗`活性好、易用、輸出清晰。通常情況下dig使用命令行參數(shù)。
Dig的源碼是ISC BIND(www.isc.org,這里面可以直接下載)大包的一部分,但是大多編譯和安裝Bind的文檔都不把它包括在內(nèi),但是在linux系統(tǒng)下,它通常是某個(gè)包的一部分,在Gentoo下是bind-tools,在Redhat/Fedora下是 bind-utils,或者在Debian下是 dnsutils。?
2.安裝方法
因?yàn)閐ig通常是linux下的命令,在windows中無法直接使用,所以需要在windows中安裝dig工具。
下載鏈接:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMTAzU3g5YTNxQUcwSlZrVHVoN2thaFE= (base64編碼過了^_^)
安裝好用直接修改環(huán)境變量即可,我的電腦右鍵->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->系統(tǒng)變量->路徑(path),點(diǎn)擊后增加對(duì)應(yīng)的目錄路徑即可。
3.dig命令的使用
3.1 dig的語法
dig [@global-server] [domain] [q-type] [q-class] {q-opt}{global-d-opt} host [@local-server] {local-d-opt}[ host [@local-server] {local-d-opt} [...]]dig 是完全命令行的工具,使用者需要記得各個(gè)選項(xiàng)的用法。如果忘記可以使用 -h 選項(xiàng)查看所有的參數(shù)。以下就各個(gè)選項(xiàng)進(jìn)行說明:
@global-server? 指定DNS服務(wù)器
domain? ? 輸入解析的域名
q-type??指定要查詢的記錄類型,type 類型有 a、any、mx、ns、soa、hinfo、axfr、txt 等,默認(rèn)值為 a。
q-class? 指定類的類型,默認(rèn)為IN,class參數(shù)值是任何有效類都可以,如HS(用于Hesiod記錄)或CH(用于CHAOSNET記錄)。
q-opt? 指定查詢參數(shù),如下,對(duì)常用的參數(shù)作一些說明
q-opt is one of:-x dot-notation (shortcut for reverse lookups)-i (use IP6.INT for IPv6 reverse lookups)-f filename (batch mode)-b address[#port] (bind to source address/port)-p port (specify port number)-q name (specify query name)-t type (specify query type)-c class (specify query class)-k keyfile (specify tsig key file)-y [hmac:]name:key (specify named base64 tsig key)-4 (use IPv4 query transport only)-6 (use IPv6 query transport only)-m (enable memory usage debugging)-x? 后面接IP地址,反射查詢,將IP解析成域名。
-p? 指定DNS端口號(hào),用于非53端口DNS服務(wù)器。
-q、-t、-c和最開始的三個(gè)參數(shù)是相同的效果,就不再說明了。
d-opt? ?指定查詢選項(xiàng),如下,對(duì)常用參數(shù)作一些說明
d-opt is of the form +keyword[=value], where keyword is:+[no]vc (TCP mode)+[no]tcp (TCP mode, alternate syntax)+time=### (Set query timeout) [5]+tries=### (Set number of UDP attempts) [3]+retry=### (Set number of UDP retries) [2]+domain=### (Set default domainname)+bufsize=### (Set EDNS0 Max UDP packet size)+ndots=### (Set NDOTS value)+edns=### (Set EDNS version)+[no]search (Set whether to use searchlist)+[no]showsearch (Search with intermediate results)+[no]defname (Ditto)+[no]recurse (Recursive mode)+[no]ignore (Don't revert to TCP for TC responses.)+[no]fail (Don't try next server on SERVFAIL)+[no]besteffort (Try to parse even illegal messages)+[no]aaonly (Set AA flag in query (+[no]aaflag))+[no]adflag (Set AD flag in query)+[no]cdflag (Set CD flag in query)+[no]cl (Control display of class in records)+[no]cmd (Control display of command line)+[no]comments (Control display of comment lines)+[no]question (Control display of question)+[no]answer (Control display of answer)+[no]authority (Control display of authority)+[no]additional (Control display of additional)+[no]stats (Control display of statistics)+[no]short (Disable everything except shortform of answer)+[no]ttlid (Control display of ttls in records)+[no]all (Set or clear all display flags)+[no]qr (Print question before sending)+[no]nssearch (Search all authoritative nameservers)+[no]identify (ID responders in short answers)+[no]trace (Trace delegation down from root)+[no]dnssec (Request DNSSEC records)+[no]nsid (Request Name Server ID)+[no]multiline (Print records in an expanded format)+[no]tcp? 查詢域名服務(wù)器時(shí)使用 [不使用] TCP。缺省行為是使用 UDP。?
+[no]nssearch? 這個(gè)選項(xiàng)被設(shè)置時(shí),dig試圖尋找包含待搜名稱的網(wǎng)段的權(quán)威域名服務(wù)器,并顯示網(wǎng)段中每臺(tái)域名服務(wù)器的SOA 記錄。
+[no]trace? 切換為待查詢名稱從根名稱服務(wù)器開始的代理路徑跟蹤。缺省情況不使用跟蹤。一旦啟用跟蹤,dig 使用迭代查詢解析待查詢名稱。它將按照從根服務(wù)器的參照,顯示來自每臺(tái)使用解析查詢的服務(wù)器的應(yīng)答。
+[no]cmd? 設(shè)定在輸出中顯示指出 dig 版本及其所用的查詢選項(xiàng)的初始注釋。缺省情況下顯示注釋。
+[no]short? 提供簡要答復(fù)。缺省值是以冗長格式顯示答復(fù)信息。
+[no]identify? 當(dāng)啟用 +short 選項(xiàng)時(shí),顯示 [或不顯示] 提供應(yīng)答的 IP 地址和端口號(hào)。如果請(qǐng)求簡短格式應(yīng)答,缺省情況不顯示提供應(yīng)答的服務(wù)器的源地址和端口號(hào)。
+[no]comments? 切換輸出中的注釋行顯示。缺省值是顯示注釋。
+[no]stats? 該查詢選項(xiàng)設(shè)定顯示統(tǒng)計(jì)信息:查詢進(jìn)行時(shí),應(yīng)答的大小等等。缺省顯示查詢統(tǒng)計(jì)信息。
+[no]qr? 顯示 [不顯示] 發(fā)送的查詢請(qǐng)求。缺省不顯示。
+[no]question? 當(dāng)返回應(yīng)答時(shí),顯示 [不顯示] 查詢請(qǐng)求的問題部分。缺省作為注釋顯示問題部分。
+[no]answer? 顯示 [不顯示] 應(yīng)答的回答部分。缺省顯示。
+[no]authority? 顯示 [不顯示] 應(yīng)答的權(quán)限部分。缺省顯示。
+[no]additional? 顯示 [不顯示] 應(yīng)答的附加部分。缺省顯示。
+[no]all? 設(shè)置或清除所有顯示標(biāo)志。
3.2 dig的常用用法
3.2.1 默認(rèn)輸出
C:\Users\TutuB>dig; <<>> DiG 9.5.1 <<>> ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1000 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 15;; QUESTION SECTION: ;. IN NS;; ANSWER SECTION: . 343085 IN NS e.root-servers.net. . 343085 IN NS c.root-servers.net. . 343085 IN NS i.root-servers.net. . 343085 IN NS d.root-servers.net. . 343085 IN NS j.root-servers.net. . 343085 IN NS l.root-servers.net. . 343085 IN NS a.root-servers.net. . 343085 IN NS h.root-servers.net. . 343085 IN NS m.root-servers.net. . 343085 IN NS b.root-servers.net. . 343085 IN NS g.root-servers.net. . 343085 IN NS k.root-servers.net. . 343085 IN NS f.root-servers.net.;; ADDITIONAL SECTION: a.root-servers.net. 550347 IN A 198.41.0.4 b.root-servers.net. 400210 IN A 199.9.14.201 c.root-servers.net. 565034 IN A 192.33.4.12 d.root-servers.net. 193700 IN A 199.7.91.13 e.root-servers.net. 315163 IN A 192.203.230.10 f.root-servers.net. 557319 IN A 192.5.5.241 g.root-servers.net. 339448 IN A 192.112.36.4 h.root-servers.net. 505797 IN A 198.97.190.53 i.root-servers.net. 426606 IN A 192.36.148.17 j.root-servers.net. 239526 IN A 192.58.128.30 k.root-servers.net. 546139 IN A 193.0.14.129 l.root-servers.net. 31549 IN A 199.7.83.42 m.root-servers.net. 567782 IN A 202.12.27.33 a.root-servers.net. 289944 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 377509 IN AAAA 2001:500:200::b;; Query time: 40 msec ;; SERVER: 192.168.2.1#53(192.168.2.1) ;; WHEN: Thu Feb 14 02:51:39 2019 ;; MSG SIZE rcvd: 492以上輸出大體可以分為5個(gè)部分(一段就是一部分),實(shí)際上可能還包括更多的內(nèi)容,總共會(huì)有以下6個(gè)部分:
第一部分 顯示 dig 命令的版本和輸入的參數(shù)以及服務(wù)器返回的一些技術(shù)詳情,其實(shí)就是DNS報(bào)文頭部中的一些字段值,不太熟悉的朋友可以去看看我之前DNS協(xié)議的文章,這里就不多講了。
第二部分?QUESTION SECTION 顯示需要查詢的域名信息。上圖中由于我在dig后沒有加入任何參數(shù),所以請(qǐng)求的域名為根,即“.”。
第三部分?ANSWER SECTION 顯示查詢到的結(jié)果。上圖中顯示了13個(gè)根服務(wù)器的信息。
第四部分?AUTHORITY SECTION 顯示授權(quán)服務(wù)器的信息。上圖中并無此部分。
第五部分?ADDITIONAL SECTION 顯示附加區(qū)域的內(nèi)容。上圖中顯示了13個(gè)根服務(wù)器的IPv4地址,同時(shí)還顯示了其中2個(gè)根服務(wù)器的IPv6地址。
第六部分 顯示本次查詢的一些統(tǒng)計(jì)信息。上圖中顯示了查詢時(shí)間,本地服務(wù)器,時(shí)間,報(bào)文大小信息。
另外,上面所有的以 ; 開頭的行實(shí)際上都是注釋。
3.2.2 查詢A記錄
C:\Users\TutuB>dig baynk5211.vicp.cc; <<>> DiG 9.5.1 <<>> baynk5211.vicp.cc ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 432 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION: ;baynk5211.vicp.cc. IN A;; ANSWER SECTION: baynk5211.vicp.cc. 60 IN A 171.113.172.242;; Query time: 161 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Thu Feb 14 20:33:42 2019 ;; MSG SIZE rcvd: 513.2.3?查詢反向記錄
C:\Users\TutuB>dig -x 202.103.24.68; <<>> DiG 9.5.1 <<>> -x 202.103.24.68 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 354 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION: ;68.24.103.202.in-addr.arpa. IN PTR;; ANSWER SECTION: 68.24.103.202.in-addr.arpa. 12210 IN PTR ns.wuhan.net.cn.;; Query time: 159 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Thu Feb 14 20:39:30 2019 ;; MSG SIZE rcvd: 733.2.4 使用精簡輸出來查詢NS記錄
C:\Users\TutuB>dig baidu.com ns +short ns4.baidu.com. ns2.baidu.com. ns3.baidu.com. dns.baidu.com. ns7.baidu.com.3.2.5 從指定的服務(wù)器上進(jìn)行查詢MX記錄,并只顯示answer區(qū)域
C:\Users\TutuB>dig +noall +answer @8.8.8.8 gmail.com mx gmail.com. 3599 IN MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. 3599 IN MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. 3599 IN MX 30 alt3.gmail-smtp-in.l.google.com. gmail.com. 3599 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 3599 IN MX 40 alt4.gmail-smtp-in.l.google.com.3.2.6 查詢SOA記錄
C:\Users\TutuB>dig baidu.com soa +short dns.baidu.com. sa.baidu.com. 2012139810 300 300 2592000 7200SOA是start of authority的簡稱,提供了DNS主服務(wù)器的相關(guān)信息,在soa之后我們可以看到7個(gè)參數(shù),依次是:?
1、DNS主服務(wù)器名?
2、管理員的E-mail,這里是baidu.dns.master@baidu.com,由于@在數(shù)據(jù)庫文件里有特殊作用,所以這里是用.代替的。?
3、更新序號(hào)。表示是域名記錄的版本,每更改一次域名的任何DNS記錄,版本號(hào)就會(huì)自動(dòng)加一,這時(shí)secondary dns就會(huì)知道DNS記錄發(fā)生更改,以便重新同步。當(dāng)然也有是用時(shí)間來表示的。?
4、更新頻率。 表示每300秒,slave服務(wù)器就要向master服務(wù)器索取更新信息。?
5、失敗重試時(shí)間,當(dāng)某些原因?qū)е耂lave服務(wù)器無法向master服務(wù)器索取信息時(shí),會(huì)隔300秒就重試一次。?
6、失效時(shí)間。如果一直重試失敗,當(dāng)重試時(shí)間累積達(dá)到2592000秒時(shí),不再向主服務(wù)器索取信息。?
7、緩存時(shí)間。
3.2.7 多條查詢
dig 的 BIND9 支持在命令行上指定多個(gè)查詢(支持 -f 批處理文件選項(xiàng)的附加功能)。每條查詢可以使用自己的標(biāo)志位、選項(xiàng)和查詢選項(xiàng)。在這種情況下,在上面描述的命令行語法中,每條查詢自變量代表一個(gè)個(gè)別查詢。每一條由任意標(biāo)準(zhǔn)選項(xiàng)和標(biāo)志、待查詢名稱、可選查詢類型和類以及任何適用于該查詢的查詢選項(xiàng)。也可以使用對(duì)所有查詢均有效的查詢選項(xiàng)全局集合。全局查詢選項(xiàng)必須位于命令行上第一個(gè)名稱、類、類型、選項(xiàng)、標(biāo)志和查詢選項(xiàng)的元組之前。任何全局查詢選項(xiàng)(除了 +[no]cmd 選項(xiàng))可以被下面的查詢特別選項(xiàng)重設(shè)。
C:\Users\TutuB>dig +noall +answer baynk5211.vicp.cc -x 8.8.8.8 +question cisco.com aaaa +all baynk5211.vicp.cc. 60 IN A 171.113.172.242 ;8.8.8.8.in-addr.arpa. IN PTR 8.8.8.8.in-addr.arpa. 2239 IN PTR google-public-dns-a.google.com. ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 236 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION: ;cisco.com. IN AAAA;; ANSWER SECTION: cisco.com. 2944 IN AAAA 2001:420:1101:1::185;; Query time: 152 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Thu Feb 14 22:35:41 2019 ;; MSG SIZE rcvd: 55上述命令一次進(jìn)行了三次查詢,分別是對(duì)baynk5211.vicp.cc的通用查詢、對(duì)8.8.8.8的反向查詢、對(duì)cisco.com的IPv6地址記錄查詢。在前面加上全局查詢選項(xiàng),只顯示answer區(qū)域內(nèi)容。但是在8.8.8.8的反向查詢中額外增加了question區(qū)域內(nèi)容,同時(shí)也將cisco.com的完整信息給顯示出來了。
3.2.8 追蹤DNS解析過程
C:\Users\TutuB>dig baynk5211.vicp.cc +trace; <<>> DiG 9.5.1 <<>> baynk5211.vicp.cc +trace ;; global options: printcmd . 506148 IN NS a.root-servers.net. . 506148 IN NS h.root-servers.net. . 506148 IN NS i.root-servers.net. . 506148 IN NS j.root-servers.net. . 506148 IN NS c.root-servers.net. . 506148 IN NS g.root-servers.net. . 506148 IN NS e.root-servers.net. . 506148 IN NS d.root-servers.net. . 506148 IN NS b.root-servers.net. . 506148 IN NS m.root-servers.net. . 506148 IN NS k.root-servers.net. . 506148 IN NS l.root-servers.net. . 506148 IN NS f.root-servers.net. ;; Received 228 bytes from 192.168.1.1#53(192.168.1.1) in 56 mscc. 172800 IN NS ac1.nstld.com. cc. 172800 IN NS ac2.nstld.com. cc. 172800 IN NS ac3.nstld.com. cc. 172800 IN NS ac4.nstld.com. ;; Received 292 bytes from 199.7.83.42#53(l.root-servers.net) in 442 msvicp.cc. 172800 IN NS ns2.exhera.com. vicp.cc. 172800 IN NS ns1.exhera.com. ;; Received 81 bytes from 192.42.176.30#53(ac4.nstld.com) in 259 msbaynk5211.vicp.cc. 60 IN A 171.113.172.242 ;; Received 83 bytes from 121.40.188.104#53(ns2.exhera.com) in 30 ms這個(gè)在之前關(guān)于DNS的文章就已經(jīng)解析過了,這里就不再特別說明了。?
總結(jié)
- 上一篇: 数独游戏,随机生成只有唯一解的数独表
- 下一篇: 基于QT实现的数独游戏DPLL的SAT求