自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Linux上挖掘DNS應答中的秘密

系統(tǒng) Linux
dig 是一個強大而靈活的工具,用于查詢域名系統(tǒng)(DNS)服務器。在這篇文章中,我們將深入了解它的工作原理以及它能告訴你什么。

[[337399]]

dig 是一個強大而靈活的工具,用于查詢域名系統(tǒng)(DNS)服務器。在這篇文章中,我們將深入了解它的工作原理以及它能告訴你什么。

dig 是一款強大而靈活的查詢 DNS 名稱服務器的工具。它執(zhí)行 DNS 查詢,并顯示參與該過程的名稱服務器返回的應答以及與搜索相關的細節(jié)。系統(tǒng)管理員和 DNS 管理員經(jīng)常使用 dig 來幫助排除 DNS 問題。在這篇文章中,我們將深入了解它的工作原理,看看它能告訴我們什么。

開始之前,對 DNS(域名系統(tǒng))的工作方式有一個基本的印象是很有幫助的。它是全球互聯(lián)網(wǎng)的關鍵部分,因為它提供了一種查找世界各地的服務器的方式,從而可以與之連接。你可以把它看作是互聯(lián)網(wǎng)的地址簿,任何正確連接到互聯(lián)網(wǎng)的系統(tǒng),都應該能夠使用它來查詢?nèi)魏握_注冊的服務器的 IP 地址。

dig 入門

Linux 系統(tǒng)上一般都默認安裝了 dig 工具。下面是一個帶有一點注釋的 dig 命令的例子:

  1. $ dig www.networkworld.com
  2.  
  3. ; <<>> DiG 9.16.1-Ubuntu <<>> www.networkworld.com <== 你使用的 dig 版本
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6034
  7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
  8.  
  9. ;; OPT PSEUDOSECTION:
  10. ; EDNS: version: 0, flags:; udp: 65494
  11. ;; QUESTION SECTION: <== 你的查詢細節(jié)
  12. ;www.networkworld.com. IN A
  13.  
  14. ;; ANSWER SECTION: <== 結果
  15.  
  16. www.networkworld.com. 3568 IN CNAME idg.map.fastly.net.
  17. idg.map.fastly.net. 30 IN A 151.101.250.165
  18.  
  19. ;; Query time: 36 msec <== 查詢用時
  20. ;; SERVER: 127.0.0.53#53(127.0.0.53) <== 本地緩存解析器
  21. ;; WHEN: Fri Jul 24 19:11:42 EDT 2020 <== 查詢的時間
  22. ;; MSG SIZE rcvd: 97 <== 返回的字節(jié)數(shù)

如果你得到了一個這樣的應答,是好消息嗎?簡短的回答是“是”。你得到了及時的回復。狀態(tài)字段(status: NOERROR)顯示沒有問題。你正在連接到一個能夠提供所要求的信息的名稱服務器,并得到一個回復,告訴你一些關于你所查詢的系統(tǒng)的重要細節(jié)。簡而言之,你已經(jīng)驗證了你的系統(tǒng)和域名系統(tǒng)相處得很好。

其他可能的狀態(tài)指標包括:

  • SERVFAIL:被查詢的名稱存在,但沒有數(shù)據(jù)或現(xiàn)有數(shù)據(jù)無效。
  • NXDOMAIN:所查詢的名稱不存在。
  • REFUSED:該區(qū)域的數(shù)據(jù)不存在于所請求的權威服務器中,并且在這種情況下,基礎設施沒有設置為提供響應服務。

下面是一個例子,如果你要查找一個不存在的域名,你會看到什么?

  1. $ dig cannotbe.org
  2.  
  3. ; <<>> DiG 9.16.1-Ubuntu <<>> cannotbe.org
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 35348
  7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

一般來說,dig 比 ping 會提供更多的細節(jié),如果域名不存在,ping 會回復 “名稱或服務未知”。當你查詢一個合法的系統(tǒng)時,你可以看到域名系統(tǒng)對該系統(tǒng)知道些什么,這些記錄是如何配置的,以及檢索這些數(shù)據(jù)需要多長時間。

(LCTT 譯注:dig 也比 nslookup 提供的數(shù)據(jù)更多。此外,dig 采用的是操作系統(tǒng)的解析庫,而 nslookup 采用的是自己提供的解析庫,這有時候會帶來不同的行為。最后,有趣的一點是,dig 的返回的格式是符合 BIND 區(qū)域文件格式的。)

事實上,有時 dig 可以在 ping 完全不能響應的時候進行響應,當你試圖確定一個連接問題時,這種信息是非常有用的。

DNS 記錄類型和標志

在上面的第一個查詢中,我們可以看到一個問題,那就是同時存在 CNAME 和 A 記錄。CNAME規(guī)范名稱canonical name)就像一個別名,把一個域名指向另一個域名。你查詢的大多數(shù)系統(tǒng)不會有 CNAME 記錄,而只有 A 記錄。如果你運行 dig localhost 命令,你會看到一個 A 記錄,它就指向 127.0.0.1 —— 這是每個系統(tǒng)都使用的“回環(huán)”地址。A 記錄用于將一個名字映射到一個 IP 地址。

DNS 記錄類型包括:

  • A 或 AAAA:IPv4 或 IPv6 地址
  • CNAME:別名
  • MX:郵件交換器
  • NS:名稱服務器
  • PTR:一個反向條目,讓你根據(jù) IP 地址找到系統(tǒng)名稱
  • SOA:表示授權記錄開始
  • TXT 一些相關文本

我們還可以在上述輸出的第五行看到一系列的“標志”。這些定義在 RFC 1035 中 —— 它定義了 DNS 報文頭中包含的標志,甚至顯示了報文頭的格式。

  1. 1 1 1 1 1 1
  2. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  3. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4. | ID |
  5. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  6. |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
  7. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  8. | QDCOUNT |
  9. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  10. | ANCOUNT |
  11. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  12. | NSCOUNT |
  13. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  14. | ARCOUNT |
  15. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

在上面的初始查詢中,第五行顯示的標志是:

  • qr = 查詢
  • rd = 進行遞歸查詢
  • ra = 遞歸數(shù)據(jù)可用

RFC 中描述的其他標志包括:

  • aa = 權威答復
  • cd = 檢查是否禁用
  • ad = 真實數(shù)據(jù)
  • opcode = 一個 4 位字段
  • tc = 截斷
  • z(未使用)

添加 +trace 選項

如果你添加 +trace 選項,你將從 dig 得到更多的輸出。它會添加更多信息,顯示你的 DNS 查詢?nèi)绾瓮ㄟ^名稱服務器的層次結構找到你要找的答案。

下面顯示的所有 NS 記錄都反映了名稱服務器 —— 這只是你將看到的數(shù)據(jù)的第一部分,因為查詢通過名稱服務器的層次結構來追蹤你要找的東西:

  1. $ dig +trace networkworld.com
  2.  
  3. ; <<>> DiG 9.16.1-Ubuntu <<>> +trace networkworld.com
  4. ;; global options: +cmd
  5. . 84895 IN NS k.root-servers.net.
  6. . 84895 IN NS e.root-servers.net.
  7. . 84895 IN NS m.root-servers.net.
  8. . 84895 IN NS h.root-servers.net.
  9. . 84895 IN NS c.root-servers.net.
  10. . 84895 IN NS f.root-servers.net.
  11. . 84895 IN NS a.root-servers.net.
  12. . 84895 IN NS g.root-servers.net.
  13. . 84895 IN NS l.root-servers.net.
  14. . 84895 IN NS d.root-servers.net.
  15. . 84895 IN NS b.root-servers.net.
  16. . 84895 IN NS i.root-servers.net.
  17. . 84895 IN NS j.root-servers.net.
  18. ;; Received 262 bytes from 127.0.0.53#53(127.0.0.53) in 28 ms
  19. ...

最終,你會得到與你的要求直接掛鉤的信息:

  1. networkworld.com. 300 IN A 151.101.2.165
  2. networkworld.com. 300 IN A 151.101.66.165
  3. networkworld.com. 300 IN A 151.101.130.165
  4. networkworld.com. 300 IN A 151.101.194.165
  5. networkworld.com. 14400 IN NS ns-d.pnap.net.
  6. networkworld.com. 14400 IN NS ns-a.pnap.net.
  7. networkworld.com. 14400 IN NS ns0.pcworld.com.
  8. networkworld.com. 14400 IN NS ns1.pcworld.com.
  9. networkworld.com. 14400 IN NS ns-b.pnap.net.
  10. networkworld.com. 14400 IN NS ns-c.pnap.net.
  11. ;; Received 269 bytes from 70.42.185.30#53(ns0.pcworld.com) in 116 ms

挑選響應者

你可以使用 @ 符號來指定一個特定的名稱服務器來處理你的查詢。在這里,我們要求 Google 的主名稱服務器響應我們的查詢:

  1. $ dig @8.8.8.8 networkworld.com
  2.  
  3. ; <<>> DiG 9.16.1-Ubuntu <<>> @8.8.8.8 networkworld.com
  4. ; (1 server found)
  5. ;; global options: +cmd
  6. ;; Got answer:
  7. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43640
  8. ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
  9.  
  10. ;; OPT PSEUDOSECTION:
  11. ; EDNS: version: 0, flags:; udp: 512
  12. ;; QUESTION SECTION:
  13. ;networkworld.com. IN A
  14.  
  15. ;; ANSWER SECTION:
  16. networkworld.com. 299 IN A 151.101.66.165
  17. networkworld.com. 299 IN A 151.101.194.165
  18. networkworld.com. 299 IN A 151.101.130.165
  19. networkworld.com. 299 IN A 151.101.2.165
  20.  
  21. ;; Query time: 48 msec
  22. ;; SERVER: 8.8.8.8#53(8.8.8.8)
  23. ;; WHEN: Sat Jul 25 11:21:19 EDT 2020
  24. ;; MSG SIZE rcvd: 109

下面所示的命令對 8.8.8.8 IP 地址進行反向查找,以顯示它屬于 Google 的 DNS 服務器。

  1. $ nslookup 8.8.8.8
  2. 8.8.8.8.in-addr.arpa name = dns.google.

總結

dig 命令是掌握 DNS 工作原理和在出現(xiàn)連接問題時排除故障的重要工具。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-06-25 09:54:14

LinuxDNS負載均衡

2010-07-01 09:47:18

DNS服務器BIND

2012-08-07 09:27:13

數(shù)據(jù)挖掘

2011-08-11 17:05:26

2020-09-28 10:05:57

數(shù)據(jù)工具技術

2016-05-23 15:42:07

數(shù)據(jù)挖掘

2020-05-28 15:35:21

Linux數(shù)據(jù)文件圖像

2017-05-17 14:51:31

DNS架構負載均衡

2017-01-19 14:45:34

數(shù)據(jù)挖掘Google再營銷

2009-01-18 15:43:29

數(shù)據(jù)挖掘電子商務WEB

2011-11-30 13:29:46

2009-07-15 09:42:46

2023-06-25 18:52:48

2011-06-15 18:38:17

Linux Qt Symbian

2017-05-16 14:47:23

2011-04-01 12:19:21

SQL Server商業(yè)智能

2019-12-05 10:30:17

LinuxMultitail

2022-06-16 10:46:43

UbuntuLinux

2011-03-22 10:06:27

LinuxZFS

2023-09-25 08:19:37

LinuxVirtualBox虛擬機
點贊
收藏

51CTO技術棧公眾號