DNS查詢的利器! linux的dig命令基本用法詳解

dig(Domain Information Groper)是一款功能強大的 Linux 命令行實用程序,通過查詢名稱服務(wù)器并輸出結(jié)果來執(zhí)行 DNS 查詢。
dig 命令可以查詢各種類型 DNS 記錄信息,包括:主機名稱記錄(A、AAAA)、郵件交換記錄(MX)和別名記錄(CNAME)等等。由于其靈活性和易用性,它是系統(tǒng)管理員解決 DNS 問題時最常用的工具。
在本文中,將通過實際示例和 dig 命令常用參數(shù)來詳細說明如何使用 dig 實用程序。
Windows 也可以使用 dig 命令,安裝方法請自行 Google。
在 Linux 中安裝 dig 命令(可選)
dig 是 DNS 實用程序包的一部分,通常與 BIND 名稱服務(wù)器一起安裝。大多數(shù)現(xiàn)代 Linux 系統(tǒng)都自帶 dig 命令。要驗證它是否安裝,可以在「終端」中執(zhí)行以下命令:
dig -v
查看 dig 版本
如果您的 Linux 系統(tǒng)默認(rèn)沒有安裝 dig ,可能會提示dig: command not found。請使用以下命令安裝:
Ubuntu 和 Debian 安裝 dig 命令
sudo apt update && sudo apt install dnsutils
CentOS 和 Fedora 安裝 dig 命令
sudo yum install bind-utils
Arch Linux 安裝 dig 命令
sudo pacman -S bind-tools
dig 命令語法
dig 命令的使用方法如下:
dig [server] [name] [type]
- [server]查詢指向的主機名或 IP 地址
- [name]要查詢服務(wù)器的 DNS(域名服務(wù)器)
- [type]要檢索的 DNS 記錄類型。默認(rèn)情況下(或如果留空),dig 查詢 A 記錄。
了解 dig 命令輸出
當(dāng)不帶參數(shù)使用 dig 查詢單個主機(域名)時,它的輸出非常詳細,例如查詢系統(tǒng)極客www.sysgeek.cn域名:
dig www.sysgeek.cn
輸出結(jié)果長這樣:
dig 命令輸出
最重要的部分是ANSWER部分:
- 第一列列出了被查詢的服務(wù)器名稱
- 第二列是 TTL(存活時間),在此之后記錄將被刷新
- 第三列顯示查詢的類別 – 在本例中,IN代表互聯(lián)網(wǎng)
- 第四列顯示查詢的類型 – 在本例中,CNAME代表 CNAME(別名)記錄,A代表 A(地址)記錄
- 最后一列顯示與域名關(guān)聯(lián)的別名和 IP 地址(結(jié)果)
ANSWER 部分
可以使用+noanswer參數(shù)禁用此部分輸出。
下面讓我們分部分來介紹并解釋一下 dig 命令的輸出:
1、第一行顯示 dig 命令的版本,以及查詢的域名;第二行顯示全局選項(默認(rèn)情況下,僅有 cmd)。
dig 版本及查詢域名
如果不希望在輸出中包括這些行,請使用+nocmd參數(shù)。 (此參數(shù)必須是 dig 命令后的第一個參數(shù)。)
2、HEADER部分顯示從被請求機構(gòu)(DNS 服務(wù)器)收到響應(yīng)的詳細技術(shù)信息。標(biāo)題顯示由 dig 執(zhí)行操作的「操作碼」和「操作狀態(tài)」的「標(biāo)頭」,上述示例中的「操作狀態(tài)」是NOERROR,這意味著被請求的 DNS 服務(wù)器可以沒有任何阻礙地提供查詢。
Flags是回答格式的參考。
HEADER 部分
可以用+comments參數(shù)隱藏本部分輸出,使用此參數(shù)時還會禁用一些其它部分輸出的標(biāo)題。
3、OPT PSEUDOSECTION顯示高級數(shù)據(jù),僅在較新版本的 dig 工具中顯示,您可以閱讀更多關(guān)于 DNS(EDNS)的擴展機制。
- EDNSDNS 的擴展機制
- Flags未指定標(biāo)志時為空
- UDPUDP 數(shù)據(jù)包大小
OPT PSEUDOSECTION 部分
要隱藏此部分輸出可以使用+noedns參數(shù)。
4、QUESTION部分顯示發(fā)送的查詢數(shù)據(jù):
- 第一列是查詢的域名
- 第二列是查詢的類型(IN 表示互聯(lián)網(wǎng))
- 第三列指定了記錄類型(如果未指定則默查詢 A 記錄)
QUESTION 部分
可以使用+noquestion參數(shù)禁用此部分輸出。
5、最后的STATISTICS統(tǒng)計信息部分顯示關(guān)于查詢的元數(shù)據(jù):
- Query time響應(yīng)花費的時間
- SERVER響應(yīng) DNS 服務(wù)器的 IP 地址和端口
- WHEN命令運行的時間戳
- MSG SIZE rcvd從 DNS 服務(wù)器收到的回復(fù)大小
STATISTICS 統(tǒng)計信息
可以使用+nostats參數(shù)禁用此部分輸出。
指定 DNS 服務(wù)器
默認(rèn)情況下,如果未指定名稱服務(wù)器,dig 命令會使用/etc/resolv.conf文件中列出的服務(wù)器進行查詢。
要指定 DNS 服務(wù)器進行查詢,可以使用@后跟 DNS 服務(wù)器 IP 地址的方式來手動指定 DNS 服務(wù)器。
例如,要使用 Google DNS 的8.8.8.8或 CloudFlare DNS 的1.1.1.1查詢www.sysgeek.cn域名,可以使用如下 命令:
dig www.sysgeek.cn @8.8.8.8
手動指定 DNS 服務(wù)器
僅輸出響應(yīng)結(jié)果
在絕大多數(shù)情況下,我們只使用 dig 查詢相應(yīng)的 DNS 記錄,而不需要太多復(fù)雜的、不相關(guān)的響應(yīng)和輸出。此時就可以使用以下兩種方式。
輸出簡短結(jié)果
如果只想獲取 DNS 查詢的簡短響應(yīng),可以使用+short參數(shù),例如:
dig www.sysgeek.cn +short
輸出簡短結(jié)果
輸出僅包括查詢www.sysgeek.cn域名響應(yīng)的 CNAME 記錄和最終的 A 記錄。
輸出詳細響應(yīng)
要獲取 DNS 查詢更詳細的響應(yīng)結(jié)果,可以先使用+noall參數(shù)關(guān)閉所有結(jié)果,再使用+answer參數(shù)打開結(jié)果部分。
dig www.sysgeek.cn +noall +answer
使用 dig 命令輸出詳細響應(yīng)結(jié)果
使用 dig 命令查詢特定記錄類型
與 Windows 下的 nslookup 命令類似,dig 命令也可以查詢指定的 DNS 記錄類型。下面系統(tǒng)極客就為大家介紹,如果查詢常見的 DNS 記錄類型,例如:A(IP 地址)、CNAME(別名記錄)、TXT(文本記錄)、MX(郵件交換記錄)和 NS(名稱服務(wù)器)。
使用 dig 命令查詢 A 記錄
要獲取域名的所有 IP 地址列表,請使用a參數(shù):
dig +nocmd www.sysgeek.cn a +noall +answer
使用 dig 命令查詢 A 記錄
如前所述,如果沒有指定 DNS 記錄類型,dig 也將請求 A 記錄。 您也可以在不指定a參數(shù)的情況下查詢「A 記錄」。
使用 dig 命令查詢 CNAME 記錄
要查詢「別名記錄」,請使用cname參數(shù):
dig +nocmd www.sysgeek.cn cname +noall +answer
使用 dig 命令查詢 CNAME 記錄
使用 dig 命令查詢 TXT 記錄
可以使用txt參數(shù)檢索特定域的所有「TXT 記錄」:
dig +nocmd sysgeek.cn txt +noall +answer
使用 dig 命令查詢 TXT 記錄
使用 dig 命令查詢 MX 記錄
要獲取特定域的所有郵件交換記錄,請使用mx參數(shù):
dig +nocmd sysgeek.cn mx +noall +answer
使用 dig 命令查詢 MX 記錄
使用 dig 命令查詢 NS 記錄
要查找特定域的權(quán)威名稱服務(wù)器,請使用ns參數(shù):
dig +nocmd sysgeek.cn ns +noall +answer
使用 dig 命令查詢 NS 記錄
使用 dig 命令進行 PTR 反向 DNS 查詢
要查詢與特定 IP 地址關(guān)聯(lián)的主機名,請使用-x參數(shù)。例如,要在208.118.235.148上執(zhí)行反向查詢,可以執(zhí)行以下命令:
dig -x 208.118.235.148 +noall +answer
使用 dig 命令進行反向 DNS 查詢
從輸出中可以看出,IP 地址208.118.235.148與主機名ip-208-118-235-148.twdx.net.相關(guān)聯(lián)。
Trace 參數(shù)
+trace參數(shù)可以列出查詢經(jīng)過的不同 DNS 服務(wù)器,直到最終目的地??梢允褂么藚?shù)來確定流量中斷的 IP 地址:
dig sysgeek.cn +trace
使用 dig 命令進行 trace 跟蹤
dig 命令批量 DNS 查詢
如果要對大量域名進行 DNS 查詢,可以將其全部寫入到一個文本文件中(一行一個),然后使用-f參數(shù),再跟止文件名即可,例如:
dig -f domains.txt +short
.digrc 文件
我們還可通過不同用戶的${HOME}/.digrc文件來控制 dig 命令的行為,如果.digrc文件存在于用戶的主目錄中,則 dig 可以讀取其中的參數(shù),而無需用戶在執(zhí)行命令時手動添加。例如,直接在~/.digrc文件中寫入+nocmd +noall +answer參數(shù)。
推薦閱讀:DNS 緩存刷新方法匯總
相關(guān)文章
linux重啟命令有哪些? 7個實用的Linux系統(tǒng)重啟命令匯總
Linux系統(tǒng)提供了多種重啟命令,常用的包括shutdown -r、reboot、init 6等,不同命令適用于不同場景,本文將詳細介紹這些命令的使用方法、注意事項以及推薦優(yōu)先級,幫助用戶2025-06-23如何快速定位到查找的文件? Linux中快速定位文件或命令匯總
在 Linux 中查找文件可以使用多種命令,以下是 最常用的文件查找方法,覆蓋不同場景,詳細請看下文介紹2025-05-21- linux系統(tǒng)中想要看看可執(zhí)行文件的具體位置,該怎么查看呢?我們可以使用多個命令查看,詳細請看下文介紹2025-05-21
如何查看已安裝的Linux內(nèi)核? 命令行查看所有已安裝Linux內(nèi)核的技巧
Linux系統(tǒng)安裝多個內(nèi)核版本,想要看看電腦到底安裝了多少個版本,該怎么查看呢?下面我們就來看看詳細教程2024-12-13Linux的systemctl怎么用? systemctl命令一鍵搞定Linux服務(wù)管理的技巧
今天我們來看看如何使用systemctl命令來管理Linux系統(tǒng)中的服務(wù),包括啟動、停止、重啟、配置加載、開機啟動設(shè)置以及查看服務(wù)狀態(tài)2024-10-21- 然 Ubuntu 提供了優(yōu)秀的圖形化軟件管理工具,我們絕大多數(shù)時間并不需要使用命令行來管理 Snap 軟件包,但命令行擁有更強的功能和靈活性,學(xué)會如何使用可以幫你更好地掌控系2024-10-18
linux服務(wù)器重啟命令哪個好用? Linux服務(wù)器重啟命令匯總
在 Linux 系統(tǒng)中,最嚴(yán)謹(jǐn)?shù)闹貑⒚钍?shutdown -r now,該命令直接將系統(tǒng)重啟,而不進行任何清理或準(zhǔn)備工作,確保系統(tǒng)徹底重啟,但也有很多其他命令,詳細如下文介紹2024-10-17教你如何在Linux中使用apt命令? Linux APT命令實戰(zhàn)教程
apt是一個軟件包管理工具,apt命令相當(dāng)強大,要是在Ubuntu和Debian系統(tǒng)中使用,可以用來對軟件進行安裝等操作,需要超級管理員(root)權(quán)限進行操作2024-09-29Linux下使用fdisk命令進行磁盤分區(qū)(圖文詳解)
FDISK是一個用于硬盤分區(qū)的工具,特別是在較早的操作系統(tǒng)版本中,如Windows 98和早期的Linux系統(tǒng)中,F(xiàn)DISK是進行硬盤分區(qū)的主要工具,這里就為大家分享一下linux系統(tǒng)中使用2024-08-29如何在linux中創(chuàng)建新用戶? 在Linux中創(chuàng)建新用戶命令的使用方法
在Linux系統(tǒng)管理中,用戶管理是最基礎(chǔ)且重要的一環(huán),創(chuàng)建新用戶不僅關(guān)乎系統(tǒng)安全,還涉及到資源分配、權(quán)限控制等多個方面,下面我們就來分享三種創(chuàng)建新用戶的技巧2024-04-17