您好,登錄后才能下訂單哦!
這篇文章主要介紹在Linux上中dig怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
dig 是一個強大而靈活的工具,用于查詢域名系統(DNS)服務器。在這篇文章中,我們將深入了解它的工作原理以及它能告訴你什么。
dig
是一款強大而靈活的查詢 DNS 名稱服務器的工具。它執行 DNS 查詢,并顯示參與該過程的名稱服務器返回的應答以及與搜索相關的細節。系統管理員和 DNS 管理員經常使用 dig
來幫助排除 DNS 問題。在這篇文章中,我們將深入了解它的工作原理,看看它能告訴我們什么。
開始之前,對 DNS(域名系統)的工作方式有一個基本的印象是很有幫助的。它是全球互聯網的關鍵部分,因為它提供了一種查找世界各地的服務器的方式,從而可以與之連接。你可以把它看作是互聯網的地址簿,任何正確連接到互聯網的系統,都應該能夠使用它來查詢任何正確注冊的服務器的 IP 地址。
Linux 系統上一般都默認安裝了 dig
工具。下面是一個帶有一點注釋的 dig
命令的例子:
$ dig www.networkworld.com ; <<>> DiG 9.16.1-Ubuntu <<>> www.networkworld.com <== 你使用的 dig 版本;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6034;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 65494;; QUESTION SECTION: <== 你的查詢細節;www.networkworld.com. IN A ;; ANSWER SECTION: <== 結果 www.networkworld.com. 3568 IN CNAME idg.map.fastly.net.idg.map.fastly.net. 30 IN A 151.101.250.165 ;; Query time: 36 msec <== 查詢用時;; SERVER: 127.0.0.53#53(127.0.0.53) <== 本地緩存解析器;; WHEN: Fri Jul 24 19:11:42 EDT 2020 <== 查詢的時間;; MSG SIZE rcvd: 97 <== 返回的字節數
如果你得到了一個這樣的應答,是好消息嗎?簡短的回答是“是”。你得到了及時的回復。狀態字段(status: NOERROR
)顯示沒有問題。你正在連接到一個能夠提供所要求的信息的名稱服務器,并得到一個回復,告訴你一些關于你所查詢的系統的重要細節。簡而言之,你已經驗證了你的系統和域名系統相處得很好。
其他可能的狀態指標包括:
SERVFAIL
:被查詢的名稱存在,但沒有數據或現有數據無效。
NXDOMAIN
:所查詢的名稱不存在。
REFUSED
:該區域的數據不存在于所請求的權威服務器中,并且在這種情況下,基礎設施沒有設置為提供響應服務。
下面是一個例子,如果你要查找一個不存在的域名,你會看到什么?
$ dig cannotbe.org ; <<>> DiG 9.16.1-Ubuntu <<>> cannotbe.org;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 35348;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
一般來說,dig
比 ping
會提供更多的細節,如果域名不存在,ping
會回復 “名稱或服務未知”。當你查詢一個合法的系統時,你可以看到域名系統對該系統知道些什么,這些記錄是如何配置的,以及檢索這些數據需要多長時間。
(LCTT 譯注:dig
也比 nslookup
提供的數據更多。此外,dig
采用的是操作系統的解析庫,而 nslookup
采用的是自己提供的解析庫,這有時候會帶來不同的行為。最后,有趣的一點是,dig
的返回的格式是符合 BIND 區域文件格式的。)
事實上,有時 dig
可以在 ping
完全不能響應的時候進行響應,當你試圖確定一個連接問題時,這種信息是非常有用的。
在上面的第一個查詢中,我們可以看到一個問題,那就是同時存在 CNAME
和 A
記錄。CNAME
(規范名稱)就像一個別名,把一個域名指向另一個域名。你查詢的大多數系統不會有 CNAME
記錄,而只有 A
記錄。如果你運行 dig localhost
命令,你會看到一個 A
記錄,它就指向 127.0.0.1
—— 這是每個系統都使用的“回環”地址。A
記錄用于將一個名字映射到一個 IP 地址。
DNS 記錄類型包括:
A
或 AAAA
:IPv4 或 IPv6 地址
CNAME
:別名
MX
:郵件交換器
NS
:名稱服務器
PTR
:一個反向條目,讓你根據 IP 地址找到系統名稱
SOA
:表示授權記錄開始
TXT
一些相關文本
我們還可以在上述輸出的第五行看到一系列的“標志”。這些定義在 RFC 1035 中 —— 它定義了 DNS 報文頭中包含的標志,甚至顯示了報文頭的格式。
1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ID |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|QR| Opcode |AA|TC|RD|RA| Z | RCODE |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| QDCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ANCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| NSCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ARCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
在上面的初始查詢中,第五行顯示的標志是:
qr
= 查詢
rd
= 進行遞歸查詢
ra
= 遞歸數據可用
RFC 中描述的其他標志包括:
aa
= 權威答復
cd
= 檢查是否禁用
ad
= 真實數據
opcode
= 一個 4 位字段
tc
= 截斷
z
(未使用)
如果你添加 +trace
選項,你將從 dig
得到更多的輸出。它會添加更多信息,顯示你的 DNS 查詢如何通過名稱服務器的層次結構找到你要找的答案。
下面顯示的所有 NS
記錄都反映了名稱服務器 —— 這只是你將看到的數據的第一部分,因為查詢通過名稱服務器的層次結構來追蹤你要找的東西:
$ dig +trace networkworld.com ; <<>> DiG 9.16.1-Ubuntu <<>> +trace networkworld.com;; global options: +cmd. 84895 IN NS k.root-servers.net.. 84895 IN NS e.root-servers.net.. 84895 IN NS m.root-servers.net.. 84895 IN NS h.root-servers.net.. 84895 IN NS c.root-servers.net.. 84895 IN NS f.root-servers.net.. 84895 IN NS a.root-servers.net.. 84895 IN NS g.root-servers.net.. 84895 IN NS l.root-servers.net.. 84895 IN NS d.root-servers.net.. 84895 IN NS b.root-servers.net.. 84895 IN NS i.root-servers.net.. 84895 IN NS j.root-servers.net.;; Received 262 bytes from 127.0.0.53#53(127.0.0.53) in 28 ms...
最終,你會得到與你的要求直接掛鉤的信息:
networkworld.com. 300 IN A 151.101.2.165networkworld.com. 300 IN A 151.101.66.165networkworld.com. 300 IN A 151.101.130.165networkworld.com. 300 IN A 151.101.194.165networkworld.com. 14400 IN NS ns-d.pnap.net.networkworld.com. 14400 IN NS ns-a.pnap.net.networkworld.com. 14400 IN NS ns0.pcworld.com.networkworld.com. 14400 IN NS ns1.pcworld.com.networkworld.com. 14400 IN NS ns-b.pnap.net.networkworld.com. 14400 IN NS ns-c.pnap.net.;; Received 269 bytes from 70.42.185.30#53(ns0.pcworld.com) in 116 ms
你可以使用 @
符號來指定一個特定的名稱服務器來處理你的查詢。在這里,我們要求 Google 的主名稱服務器響應我們的查詢:
$ dig @8.8.8.8 networkworld.com ; <<>> DiG 9.16.1-Ubuntu <<>> @8.8.8.8 networkworld.com; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43640;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 512;; QUESTION SECTION:;networkworld.com. IN A ;; ANSWER SECTION:networkworld.com. 299 IN A 151.101.66.165networkworld.com. 299 IN A 151.101.194.165networkworld.com. 299 IN A 151.101.130.165networkworld.com. 299 IN A 151.101.2.165 ;; Query time: 48 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Sat Jul 25 11:21:19 EDT 2020;; MSG SIZE rcvd: 109
下面所示的命令對 8.8.8.8
IP 地址進行反向查找,以顯示它屬于 Google 的 DNS 服務器。
$ nslookup 8.8.8.88.8.8.8.in-addr.arpa name = dns.google.
以上是“在Linux上中dig怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。