您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Linux下如何使用Dig解析域名,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Dig是一個在類Unix命令行模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關信息的工具。Dig的源碼是ISC BIND大包的一部分,但是大多編譯和安裝Bind的文檔都不把它包括在內,但是在linux系統下,它通常是某個包的一部分,在Gentoo下是bind-tools,在Redhat/Fedora下是 bind-utils,或者在Debian下是 dnsutils。
查詢單個域名的 DNS 信息
dig
命令最典型的用法就是查詢單個主機的信息。
linuxidc@linuxidc:~$ dig www.linuxidc.com ; > DiG 9.11.3-1Ubuntu1.5-Ubuntu > www.linuxidc.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER#53(127.0.0.53) ;; WHEN: Sun Mar 03 10:55:35 CST 2019 ;; MSG SIZE rcvd: 77
dig 命令默認的輸出信息比較豐富,大概可以分為。 5 個部分
第一部分顯示 dig 命令的版本和輸入的參數。 第二部分顯示服務返回的一些技術詳情,比較重要的是 status。如果 status 的值為 NOERROR 則說明本次查詢成功結束。 第三部分中的 “QUESTION SECTION” 顯示我們要查詢的域名。 第四部分的 “ANSWER SECTION” 是查詢到的結果。 第五部分則是本次查詢的一些統計信息,比如用了多長時間,查詢了哪個 DNS 服務器,在什么時間進行的查詢等等。
默認情況下 dig 命令查詢 A 記錄,上圖中顯示的 A 即說明查詢的記錄類型為 A 記錄。在嘗試查詢其它類型的記錄前讓我們先來了解一下常見的 DNS 記錄類型。
常見 DNS 記錄的類型
類型目的
A 地址記錄,用來指定域名的 IPv4 地址,如果需要將域名指向一個 IP 地址,就需要添加 A 記錄。 AAAA 用來指定主機名(或域名)對應的 IPv6 地址記錄。 CNAME 如果需要將域名指向另一個域名,再由另一個域名提供 ip 地址,就需要添加 CNAME 記錄。 MX 如果需要設置郵箱,讓郵箱能夠收到郵件,需要添加 MX 記錄。 NS 域名服務器記錄,如果需要把子域名交給其他 DNS 服務器解析,就需要添加 NS 記錄。 SOA SOA 這種記錄是所有區域性文件中的強制性記錄。它必須是一個文件中的第一個記錄。 TXT 可以寫任何東西,長度限制為 255。絕大多數的 TXT記錄是用來做 SPF 記錄(反垃圾郵件)。
查詢 CNAME 類型的記錄
除了A記錄,常見的DNS記錄還有CNAME,我們可以在查詢時指定要查詢的DNS記錄類型:
linuxidc@linuxidc:~$ dig m.linuxidc.com CNAME ; > DiG 9.11.3-1ubuntu1.5-Ubuntu > m.linuxidc.com CNAME ;; global options: +cmd ;; Got answer: ;; ->>HEADER#53(127.0.0.53) ;; WHEN: Sun Mar 03 11:20:34 CST 2019 ;; MSG SIZE rcvd: 43
這樣結果中就只有 CNAME 的記錄。其實我們可以在查詢中指定任何 DNS 記錄的類型。
從指定的 DNS 服務器上查詢
由于一些原因,希望從指定的 DNS 服務器上進行查詢(從默認的 DNS 服務器上獲得的結果可能不準確)。指定 DNS 服務器的方式為使用 @ 符號:
linuxidc@linuxidc:~$ dig @8.8.8.8 m.linuxidc.com ; > DiG 9.11.3-1ubuntu1.5-Ubuntu > @8.8.8.8 m.linuxidc.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER#53(8.8.8.8) ;; WHEN: Sun Mar 03 11:21:48 CST 2019 ;; MSG SIZE rcvd: 75
從上圖可以看到本次查詢的 DNS 服務器為 8.8.8.8。
如果不指定 DNS 服務器,dig 會依次使用 /etc/resolv.conf 里的地址作為 DNS 服務器:
linuxidc@linuxidc:~$ dig m.linuxidc.com
上面查詢的 DNS 服務器就變成了:
反向查詢
在前面的查詢中我們指定了查詢服務器為 8.8.8.8,這是誰家的 DNS 服務器?其實我們可以使用 dig 的 -x 選項來反向解析 IP 地址對應的域名:
linuxidc@linuxidc:~$ dig -x 8.8.8.8 +short google-public-dns-a.google.com.
好吧,應該是Google的,可以放心使用了。
控制顯示結果
dig 命令默認返回的結果展示詳細的信息,如果要獲得精簡的結果可以使用 +short 選項:
linuxidc@linuxidc:~$ dig +short m.linuxidc.com 122.228.238.15 106.119.182.141
這下顯示的結果就清爽多了。
其實我們還可以通過更多選項來控制輸出的內容,比如只想顯示 “ANSWER SECTION” 的內容:
這個結果很不錯,就是使用的選項太多了(dig 命令有很多這樣的選項,詳情請參考使用手冊)。我們可以換一種優雅一些的方式來實現和上面相同的結果:
linuxidc@linuxidc:~$ dig m.linuxidc.com +noall +answer ; > DiG 9.11.3-1ubuntu1.5-Ubuntu > m.linuxidc.com +noall +answer ;; global options: +cmd m.linuxidc.com. 5 IN A 113.107.238.212 m.linuxidc.com. 5 IN A 122.228.238.15
跟蹤整個查詢過程
如果你好奇 dig 命令執行查詢時都經歷了哪些過程,你可以嘗試使用 +trace 選項。它會輸出從根域到最終結果的所有信息:
linuxidc@linuxidc:~$ dig sohu.com @202.102.134.68 -p 53 -t MX +trace ; > DiG 9.11.3-1ubuntu1.5-Ubuntu > sohu.com @202.102.134.68 -p 53 -t MX +trace ;; global options: +cmd . 482761 IN NS f.root-servers.net. . 482761 IN NS a.root-servers.net. . 482761 IN NS c.root-servers.net. . 482761 IN NS b.root-servers.net. . 482761 IN NS j.root-servers.net. . 482761 IN NS d.root-servers.net. . 482761 IN NS k.root-servers.net. . 482761 IN NS e.root-servers.net. . 482761 IN NS h.root-servers.net. . 482761 IN NS i.root-servers.net. . 482761 IN NS m.root-servers.net. . 482761 IN NS g.root-servers.net. . 482761 IN NS l.root-servers.net. ;; Received 239 bytes from 202.102.134.68#53(202.102.134.68) in 40 mscom. 172800 IN NS d.gtld-servers.net.
上圖中顯示的并不是一個完整的結果,感興趣的朋友可以自己嘗試。
顯示13個根域服務器
internet上有13個根域服務器,使用不加參數的dig命令顯示這些服務器信息
linuxidc@linuxidc:~$ dig ; > DiG 9.11.3-1ubuntu1.5-Ubuntu > ;; global options: +cmd ;; Got answer: ;; ->>HEADER#53(127.0.0.53) ;; WHEN: Sun Mar 03 11:37:11 CST 2019 ;; MSG SIZE rcvd: 239
關于“Linux下如何使用Dig解析域名”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。