dig(Domain Information Groper) 是 BIND 套件內建的 DNS 查詢工具,功能遠超 nslookup:
nslookup 需 set type=... 多步驟才能達到的操作+trace 從根域追蹤完整授權鏈路本文整理 dig 最常用的實戰指令模板,建議收藏備查。
dig @ [type] [options]
@server:指定查詢的 DNS 伺服器(IP 或主機名),省略則使用 /etc/resolv.conf 設定domain:查詢目標域名(建議以 . 結尾表示絕對域名,避免搜尋域名補全)type:記錄類型(A、AAAA、MX、CNAME、TXT、NS、SOA、PTR、ANY 等),預設為 Adig @8.8.8.8 sina.com.cn.
| 需求 | 指令範例 | 說明 |
|---|---|---|
| 查看區域傳送(AXFR) | dig @ns1.example.com example.com. AXFR | 需目標授權 NS 允許傳送,常用於備份/遷移驗證 |
| 查看增量區域傳送(IXFR) | dig @ns1.example.com example.com. IXFR=2024010101 | 序號為 SOA serial,僅傳送變更部分 |
| 反向解析(PTR) | dig -x 210.52.83.228 @8.8.8.8 | -x 自動轉為 228.83.52.210.in-addr.arpa PTR 查詢 |
| 查找域名授權 DNS | dig example.com. +nssearch | 直接向所有 NS 發送 SOA 查詢,顯示回應速度與序號 |
| 從根域追蹤完整解析鏈路 | dig example.com +trace | 最強診斷功能:顯示 . → .com → example.com 每層授權與回應 |
| 查詢 F 根伺服器主機名 | dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT | CHAOS 類別特殊查詢,回應根伺服器主機名 |
| 查看 BIND 版本號 | dig @target-ns CHAOS TXT version.bind | 若回應 version.bind 即為版本號;安全建議隱藏或偽裝 |
| 選項 | 效果 |
|---|---|
+short | 僅顯示回答區資料(適合腳本解析) |
+noall +answer | 只顯示 Answer 區段,隱藏 Header/Authority/Additional |
+stats / +nostats | 顯示/隱藏查詢統計(Query time、Server、When、Msg size) |
+multiline | 多行格式顯示記錄(SOA 等長記錄更易讀) |
+dnssec | 請求 DNSSEC 記錄(RRSIG、NSEC、DS 等) |
+cdflag | 設定 Checking Disabled 旗標,跳過驗證器驗證 |
+tcp | 強制使用 TCP 連線(預設 UDP,大回應/區域傳送需 TCP) |
+time=5 | 設定查詢逾時秒數 |
+retry=2 | 設定重試次數 |
dig www.example.com +trace +additional
輸出將顯示從根域(.)逐層授權至最終記錄的完整過程,任何一層無回應或 SERVFAIL 即為故障點。
dig example.com +dnssec +multiline
檢查 Answer 區是否包含 RRSIG、Authority 區是否包含 DS / NSEC,配合 delv 工具可做完整驗證。
for ns in ns1.example.com ns2.example.com ns3.example.com; do
echo "=== $ns ==="
dig @$ns example.com SOA +noall +answer +stats
done
比較各 NS 回應的 SOA 序號(Serial)是否一致,判斷同步狀態。
dig @1.1.1.1 example.com +stats | grep "Query time"
可寫入監控腳本,定期記錄不同解析器(自建、ISP、公共 DNS)的延遲分佈。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
;; AUTHORITY SECTION:
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
;; ADDITIONAL SECTION:
ns1.example.com. 3600 IN A 192.0.2.1
;; Query time: 12 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jan 01 12:00:00 CST 2024
;; MSG SIZE rcvd: 156
NXDOMAIN 域名不存在;SERVFAIL 伺服器錯誤;REFUSED 拒絕查詢。qr(回應)、rd(遞歸請求)、ra(遞歸可用)、ad(經驗證)、cd(檢查停用)。yum install bind-utilsapt install dnsutilsapk add bind-toolsdig(BIND 版本較舊,可 brew install bind 更新)Resolve-DnsName (PowerShell)掌握 dig,讓 DNS 疑難雜症無所遁形,是每位 Linux/網路工程師的必備技能。