日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

 

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

• 來源:linux.cn • 作者:Sandra Henry-stocker • 譯者:Xingyu.Wang •

(本文字數:7201,閱讀時長大約:8 分鐘)

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

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

dig 入門

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 完全不能響應的時候進行響應,當你試圖確定一個連接問題時,這種信息是非常有用的。

DNS 記錄類型和標志

在上面的第一個查詢中,我們可以看到一個問題,那就是同時存在 CNAME 和 A 記錄。CNAME( 規范名稱(canonical name))就像一個別名,把一個域名指向另一個域名。你查詢的大多數系統不會有 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 選項

如果你添加 +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.165
networkworld.com.       300     IN      A       151.101.66.165
networkworld.com.       300     IN      A       151.101.130.165
networkworld.com.       300     IN      A       151.101.194.165
networkworld.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.165
networkworld.com.       299     IN      A       151.101.194.165
networkworld.com.       299     IN      A       151.101.130.165
networkworld.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.8
8.8.8.8.in-addr.arpa    name = dns.google.

總結

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


via: www.networkworld.com

作者: Sandra Henry-Stocker 選題: lujun9972 譯者: wxy 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出

分享到:
標簽:應答 DNS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定