Web 開發與運維中,DNS 解析是 HTTP 請求發起前的第一關。dig (Domain Information Groper) 是現代 DNS 查詢工具,輸出結構化、支持追蹤完整解析鏈路、可指定權威服務器,遠超傳統 nslookup。本文通過 4 個實戰案例講解 dig 核心用法與輸出解讀。
dig [@server] name [type] [options]
# @server 指定 DNS 服務器(IP 或主機名)
# name 查詢域名
# type 記錄類型:A, AAAA, MX, NS, CNAME, TXT, SOA, PTR, ANY(默認 A)
# options +trace, +short, +noall +answer, +stats 等
dig .
# 或 dig @localhost .
# 輸出關鍵段:
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 85715 IN NS a.root-servers.net.
. 85715 IN NS l.root-servers.net.
... (共 13 組根服務器)
;; Query time: 1 msec
;; SERVER: 192.168.100.52#53(192.168.100.52)
解讀: 本地 DNS 返回 13 組根服務器 NS 記錄,TTL 85715 秒。SERVER 行顯示響應的 DNS 服務器 IP 及端口。
dig www.baidu.com
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 641 IN CNAME www.a.shifen.com.
www.a.shifen.com. 110 IN A 180.97.33.107
www.a.shifen.com. 110 IN A 180.97.33.108
;; Query time: 1 msec
;; SERVER: 192.168.100.52#53
關鍵點:
CNAME:www.baidu.com 是 www.a.shifen.com 的別名。A 記錄:負載均衡/多入口。Query time:本地 DNS 緩存命中極快。dig @8.8.8.8 www.baidu.com
;; ANSWER SECTION:
www.baidu.com. 557 IN CNAME www.a.shifen.com.
www.a.shifen.com. 299 IN A 180.76.3.151
;; Query time: 615 msec
;; SERVER: 8.8.8.8#53
對比: 返回 IP 不同(180.76.3.151 vs 180.97.33.107/108),說明百度對不同地理/網絡返回不同解析(GSLB)。查詢耗時 615ms(跨網延遲)。
+trace 從根開始迭代查詢)dig www.baidu.com +trace
# 輸出分段:
# 1. 根服務器返回 . NS 記錄(13 組)
# 2. 選取 f.root-servers.net 查詢 com. NS 記錄(13 組 GTLD 服務器)
# 3. 選取 a.gtld-servers.net 查詢 baidu.com. NS 記錄(5 組百度權威服務器)
# 4. 選取 dns.baidu.com 查詢 www.baidu.com -> CNAME www.a.shifen.com + NS 記錄
# 5. 需再查詢 www.a.shifen.com 獲取最終 A 記錄
# 手動查詢最終 A 記錄
dig www.a.shifen.com +short
# 180.97.33.108
# 180.97.33.107
追蹤價值: 可見每一級權威服務器響應時間、返回記錄、是否存在 CNAME 鏈、NS 記錄是否正確授權,定位「解析慢、解析錯、權威服務器掛了」等疑難問題。
| 選項 | 作用 |
|---|---|
+short | 僅顯示答案(IP/主機名),適合腳本調用 |
+trace | 從根開始迭代追蹤完整解析路徑 |
+tcp | 使用 TCP 協議(大回應、區域傳輸) |
+dnssec | 請求 DNSSEC 記錄(RRSIG, DNSKEY, DS) |
+cdflag | 設置 Checking Disabled 位(禁用驗證) |
+noall +answer | 只顯示答案段,隱藏題頭/統計 |
-x IP | 反向查詢 PTR 記錄 |
@server | 指定查詢服務器 |
type | 指定記錄類型:A, AAAA, MX, NS, CNAME, TXT, SOA, PTR, SRV, CAA, ANY |
dig @權威NS domain +trace 確認授權鏈路完整、序列號同步。dig @本地DNS domain、dig @8.8.8.8 domain、dig @權威NS domain 的 Query time,定位是本地緩存、遞歸服務器、權威服務器哪一環節慢。dig @多個公共DNS domain +short 對比返回 IP,發現不一致即可能被劫持/污染。dig domain MX 檢查 MX 記錄優先級、目標主機是否有 A/AAAA 記錄、SPF/TXT 記錄是否正確。dig cdn-domain +trace 觀察 CNAME 鏈路、邊緣節點 IP 歸屬。結語: dig 輸出雖顯冗長,但每一字段都有精確含義。熟練掌握 +trace、@server、+short 三大組合,能解決 90% DNS 疑難雜症。下次遇到「網頁打不開」,先 dig 一把再說話。