如何在linux上使用dig命令

Linux dig命令允許您查詢DNS伺服器並執行DNS查詢。您還可以找到IP地址指向的域。我們會教你怎麼做!...

Linux dig命令允許您查詢DNS伺服器並執行DNS查詢。您還可以找到IP地址指向的域。我們會教你怎麼做!

dig命令的工作原理

人們使用Linux dig命令來查詢域名系統(DNS)伺服器。dig是域名資訊搜尋者的縮寫。使用dig,您可以查詢有關各種DNS記錄的資訊,包括主機地址、郵件交換、名稱伺服器和相關資訊。它是用來診斷DNS問題的工具。但是,您可以使用它來瀏覽和了解更多關於DNS的資訊,DNS是保持internet路由流量的中心繫統之一。

網際網路使用網際網路協議(IP)地址來識別網路上的“位置”,但人們使用域名。當您在應用程式中鍵入域名時,例如web瀏覽器或SSH客戶端,必須將域名轉換為實際的IP地址。這就是域名系統的用武之地。

當您將域名用於任何連線到internet的程式時,您的本地路由器無法解析它(除非它是從以前的請求快取的)。因此,您的路由器查詢您的網際網路服務提供商(ISP)的DNS伺服器,或任何其他您已配置您的系統使用。這些被稱為DNS前體伺服器。

如果DNS伺服器最近收到同一臺計算機上其他人的相同請求,則答案可能在其快取中。如果是這樣,它只需將相同的資訊傳送回程序。

如果DNS前體伺服器在其快取中找不到域,它將聯絡DNS根名稱伺服器。根伺服器不會儲存將域名解析為IP地址所需的資訊,但它會儲存可以幫助您處理請求的伺服器列表。

根伺服器檢視您的域名所屬的頂級域,例如.COM、.ORG、。英國公司,等等。然後它將處理這些型別的域的頂級域伺服器的列表傳送回DNS伺服器。然後,DNS前置伺服器可以再次向頂級域伺服器發出請求。

頂級域伺服器將權威名稱伺服器的詳細資訊(儲存域詳細資訊的位置)傳送回DNS伺服器。然後,DNS伺服器查詢承載您最初輸入程式的域的區域的權威名稱伺服器。權威名稱伺服器將IP地址傳送回DNS伺服器,然後DNS伺服器將其傳送回您。

安裝挖掘

dig已經安裝在我們的ubuntu18.04和fedora30計算機上。但是,我們必須使用以下命令將其安裝到Manjaro 18.04計算機上:

sudo pacman -Sy bind-tools

如何在linux上使用dig命令

dig入門

在第一個示例中,我們將返回與域名關聯的IP地址。通常,多個IP地址與一個域名相關聯。例如,如果使用負載平衡,這種情況經常發生。

我們使用+short query選項,如下所示,它給我們一個簡潔的響應:

dig tl80.cn +short

如何在linux上使用dig命令

與伺服器關聯的所有IP地址tl80.cn網站域為我們列出。另一方面,如果我們不使用+short查詢選項,輸出會非常冗長。

因此,我們鍵入以下內容以使其透過更少的管道:

dig tl80.cn | less

如何在linux上使用dig命令

輸出以較少的單位顯示,如下所示。

如何在linux上使用dig命令

以下是完整列表:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> tl80.cn ;; global opti***: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;tl80.cn. IN A ;; ANSWER SECTION: tl80.cn. 3551 IN A 151.101.194.217 tl80.cn. 3551 IN A 151.101.130.217 tl80.cn. 3551 IN A 151.101.66.217 tl80.cn. 3551 IN A 151.101.2.217 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Mar 22 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106

讓我們一塊一塊地解剖。

收割臺

首先,讓我們看一下標題中的內容:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> tl80.cn ;; global opti***: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

現在,這一切意味著:

  • 第一行:dig的版本和查詢的域。
  • 全域性選項:我們將看到,您可以使用dig同時查詢多個域。此行顯示已應用於所有域查詢的選項。在我們的簡單示例中,它只是預設的+cmd(command)選項。
  • 操作碼:查詢:這是請求的操作型別,在本例中是一個查詢。如果您只是測試DNS系統的狀態,這個值也可以是反向查詢的iquery或status。
  • 狀態:無錯誤:沒有錯誤,請求已正確解決。
  • ID:12017:此隨機ID將請求和響應繫結在一起。
  • 標誌:qr rd ra:表示查詢、所需遞迴和可用遞迴。遞迴是DNS查詢的一種形式(另一種是迭代的)。您可能還會看到AA,它代表權威答案,這意味著由權威名稱伺服器提供響應。
  • Query:1:此會話中的查詢數,為1。
  • 回答:4:這個回答中的答案數,是4。
  • Authority:0:來自權威名稱伺服器的答案數,在本例中為零。響應是從DNS伺服器的快取返回的。答覆中將沒有權威部分。
  • 附加:1:有一條附加資訊。(奇怪的是,除非該值為2或更高,否則不會列出任何內容。)

opt偽截面

接下來,我們將在Opt部分看到以下內容:

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494

我們把它分解:

  • EDNS:版本0:正在使用的DNS擴充套件系統的版本。EDNS透過擴充套件使用者資料報協議(UDP)包的大小來傳輸擴充套件資料和標誌。這由可變大小標誌表示。
  • 標誌:沒有使用標誌。
  • udp:4096:udp資料包大小。

問題部分

在問題部分,我們看到以下內容:

;; QUESTION SECTION: ;tl80.cn. IN A

這意味著:

  • tl80.cn網站:我們正在查詢的域名。
  • 我們正在進行一個網際網路類查詢。
  • 答:除非我們另有規定,否則dig將從DNS伺服器請求A(地址)記錄。

答案部分

答案部分包含我們從DNS伺服器收到的以下四個答案:

tl80.cn. 3551 IN A 151.101.194.217 tl80.cn. 3551 IN A 151.101.130.217 tl80.cn. 3551 IN A 151.101.66.217 tl80.cn. 3551 IN A 151.101.2.217

以下是這些答案的含義:

  • 3551:這是生存時間(TTL),一個32位有符號整數,它儲存可以快取記錄的時間間隔。當資料過期時,在DNS伺服器重新整理之前,必須在請求的應答中使用該資料。
  • 在:我們做了一個網際網路類查詢。
  • A:我們要求DNS伺服器提供A記錄。

統計科

統計是最後一節,它包含以下資訊:

;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Mar 22 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106

我們有以下資訊:

  • 查詢時間:0毫秒:獲取響應所用的時間。
  • 伺服器:127.0.0.53#53(127.0.0.53):響應的DNS伺服器的IP地址和埠號。在本例中,它指向本地快取存根解析器。這會將DNS請求轉發到配置的任何上游DNS伺服器。在Manajro測試計算機上,這裡列出的地址是8.8.8.8#53,這是谷歌的公共DNS服務。
  • 時間:Sun Mar 22 07:44:37 EDT 2020:提出請求的時間。
  • MSG SIZE rcvd:106:從DNS伺服器接收的訊息的大小。

有選擇

你不必滿足於守口如瓶和喋喋不休這兩個極端。dig命令允許您有選擇地從結果中包括或排除部分。

以下查詢選項將從結果中刪除該部分:

  • +無註釋:不顯示註釋行。
  • +無許可權:不顯示許可權部分。
  • +無附加:不顯示附加部分。
  • +nostats:不顯示stats部分。
  • +不回答:不要顯示答案部分。
  • +諾爾:什麼都不要展示!

+noall查詢選項通常與上述選項結合使用,以便在結果中包含一個部分。因此,您可以使用+noall關閉所有部分,而不是鍵入一長串查詢選項來關閉多個部分。

然後,您可以使用以下包含性查詢選項重新開啟要檢視的查詢選項:

  • +註釋:顯示註釋行。
  • +許可權:顯示許可權部分。
  • +附加:顯示附加部分。
  • +stats:顯示stats部分。
  • +答案:顯示答案部分。
  • +全部:顯示所有內容。

我們鍵入以下內容以發出請求並排除註釋行:

dig tl80.cn +nocomments

如何在linux上使用dig命令

如果我們單獨使用+noall查詢選項,如下所示,我們將不會得到任何有用的輸出:

dig tl80.cn +noall

如何在linux上使用dig命令

我們可以有選擇地新增要檢視的部分。要新增答案部分,請鍵入以下內容:

dig tl80.cn +noall +answer

如何在linux上使用dig命令

如果我們鍵入以下內容以啟用+統計資訊,我們還將看到統計資訊部分:

dig tl80.cn +noall +answer +stats

如何在linux上使用dig命令

通常使用+noall+答案組合。您可以根據需要向命令列新增其他節。如果您想避免每次使用dig時在命令列上鍵入+noall+應答,可以將它們放入名為“.digrc”的配置檔案中,該檔案位於主目錄中。

我們鍵入以下內容來建立一個帶有echo的:

echo "+noall +answer" > $HOME/.digrc

然後,我們可以鍵入以下內容來檢查其內容:

cat .digrc

如何在linux上使用dig命令

這兩個選項現在將應用於dig的所有未來用途,如下所示:

dig ubuntu.org dig linux.org dig github.com

如何在linux上使用dig命令

此dig配置檔案將用於本文剩下的示例。

dns記錄

返回到dig請求的資訊是從DNS伺服器上儲存的不同型別的記錄中提取的。除非我們要求不同的東西,否則dig查詢A(地址)記錄。以下是dig常用的記錄型別:

  • 記錄:將域連結到IP版本4地址。
  • MX記錄:郵件交換記錄將傳送到域的電子郵件直接傳送到正確的郵件伺服器。
  • NS記錄:名稱伺服器記錄將域(或子域)委託給一組DNS伺服器。
  • TXT記錄:文字記錄儲存有關域的基於文字的資訊。通常,它們可能被用來抑制欺騙或偽造的電子郵件。
  • SOA記錄:許可權起始記錄可以儲存很多關於域的資訊。在這裡,您可以找到主名稱伺服器、責任方、更改的時間戳、區域重新整理的頻率以及重試和放棄的一系列時間限制。
  • TTL:Time to live是每個DNS記錄的一個設定,指定允許DNS前置伺服器快取每個DNS查詢的時間。當該時間到期時,必須為後續請求重新整理資料。
  • ANY:這告訴dig返回它能返回的所有型別的DNS記錄。

指定A記錄型別不會更改預設操作,即查詢地址記錄並獲取IP地址,如下所示:

dig redhat.com A

如何在linux上使用dig命令

要查詢郵件交換記錄,我們使用以下MX標誌:

dig yahoo.com MX

如何在linux上使用dig命令

名稱伺服器標誌返回與頂級域關聯的根名稱伺服器的以下名稱:

dig fedora.com NS

如何在linux上使用dig命令

要查詢起始授權記錄,請鍵入以下SOA標誌:

dig manjaro.com SOA

如何在linux上使用dig命令

TTL標誌將顯示DNS伺服器快取中資料的生存時間。如果我們提出一系列的請求,我們會看到生存時間減少到零,然後跳回到它的起始值。

我們鍵入以下內容:

dig usa.gov TTL

如何在linux上使用dig命令

要檢視文字記錄,請鍵入TX標誌:

dig usa.gov TXT

如何在linux上使用dig命令

指定dns伺服器

如果您想對請求使用特定的DNS伺服器,可以使用at符號(@)將其作為命令列引數傳遞給dig。

對於預設DNS伺服器(見下文),dig引用了127.0.0.53中的本地快取存根解析器。

dig usa.gov +stats

現在,我們鍵入以下內容以使用8.8.8.8的Google公共DNS伺服器:

dig @8.8.8.8 usa.gov +stats

如何在linux上使用dig命令

對多個域使用dig

我們可以在命令列上傳遞多個域進行挖掘,如下所示:

dig ubuntu.org fedora.org manjaro.com

如何在linux上使用dig命令

如果您定期檢查一組域,您可以將它們儲存在文字檔案中並將其傳遞給dig。將依次檢查檔案中的所有域。

我們的檔名為“域.txt”我們將使用cat顯示其內容,然後使用-f(檔案)選項將其傳遞給dig。我們鍵入以下內容:

cat domains.txt dig -f domains.txt

如何在linux上使用dig命令

反向dns查詢

如果你有一個IP地址,想知道它去哪裡,你可以嘗試反向DNS查詢。如果它解析為在DNS伺服器上註冊的伺服器,則您可能能夠找到它的域。

是否可以,取決於PTR(指標記錄)的存在。ptr將IP地址解析為完全限定的域名。然而,由於這些不是強制性的,它們並不總是出現在域中。

讓我們看看是否能找出IP地址209.51.188.148帶我們去哪裡。我們使用-x(反向查詢)選項鍵入以下內容:

dig -x 209.51.188.148

如何在linux上使用dig命令

急板地!IP地址解析為gnu.org.

因為PTR是一個DNS記錄,而且我們知道dig可以請求指定的DNS記錄,所以我們不能請求dig為我們檢索PTR嗎?是的,我們可以,但這確實需要更多的工作。

我們必須以相反的順序提供IP地址,並在-地址:arpa最後,如下圖所示:

dig ptr 148.188.51.209.in-addr.arpa

如何在linux上使用dig命令

我們得到了同樣的結果,只是花了點力氣。

你能挖嗎?

我們每天都在使用網際網路,好奇的人常常想知道,當我們在瀏覽器中鍵入網站名稱時,這種神奇是如何發生的。透過dig,你可以探索網路變戲法的過程。

  • 發表於 2021-04-02 10:09
  • 閱讀 ( 48 )
  • 分類:網際網路

你可能感興趣的文章

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 52 )

如何在android和termux上使用linux命令列

...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...

  • 發佈於 2021-03-18 07:26
  • 閲讀 ( 63 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 60 )

linux下如何重新命名檔案

要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...

  • 發佈於 2021-03-22 02:48
  • 閲讀 ( 65 )

linux正在吃掉你的公羊嗎?如何管理你的記憶

...記憶體。為了理解到底發生了什麼,我們必須看看Linux是如何管理記憶體的。 ...

  • 發佈於 2021-03-23 08:31
  • 閲讀 ( 57 )

如何用古墓保護您最敏感的資料資訊

... 有興趣嗎?下面是如何做到這一點。 ...

  • 發佈於 2021-03-26 08:43
  • 閲讀 ( 49 )

如何在linux上使用groupadd管理使用者組

... 相關:如何在Linux中更改密碼 ...

  • 發佈於 2021-03-26 17:15
  • 閲讀 ( 41 )

啟動linux的9個基本命令

... 如何在linux下開啟終端 ...

  • 發佈於 2021-03-26 18:33
  • 閲讀 ( 58 )

如何在linux中新增使用者

想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...

  • 發佈於 2021-03-26 23:29
  • 閲讀 ( 66 )

如何檢查linux核心和作業系統版本

...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...

  • 發佈於 2021-04-01 13:11
  • 閲讀 ( 50 )
小d蝴蝶不會飛
小d蝴蝶不會飛

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦