用 dig 與 nslookup 查 DNS:網站除錯的實用工具教學
更新日期: 2025 年 6 月 26 日
當網站突然無法打開、公司信箱收不到信、或你剛剛才改完 DNS 卻沒有生效時,這些問題幾乎都和「DNS 記錄」有關。
你需要知道的不是怎麼打電話問工程師,而是學會自己檢查:
「現在這個網域,實際上是指向哪個 IP?」
「是不是還卡在舊的快取上?」
「Google、Cloudflare 等公共 DNS 查到的是什麼結果?」
這時候,你就需要出場的兩個工具 —— dig
和 nslookup
。
dig 是什麼?為什麼很多工程師都愛用?
當你遇到「網站打不開」、「憑證驗證失敗」、「信箱收不到信」等網路問題時,很多時候根本原因出在 DNS(Domain Name System)解析。這時候,dig
就是一個能幫你「問清楚 DNS 發生什麼事」的工具。
dig
是什麼?
dig
是 Domain Information Groper 的縮寫,是一個命令列工具,可以讓你直接對 DNS 系統發出查詢,取得網域名稱對應的各種記錄資訊。
這個工具廣泛用於:
- 檢查網站 IP 是否正確設定(A 記錄)
- 查公司信箱是否設好(MX 記錄)
- 驗證網站憑證是否能正常發出(TXT 記錄)
- 確認 CNAME、NS 等其他記錄的設定狀況
- 對比不同地區的 DNS 查詢結果(如 Google DNS、Cloudflare DNS)
為什麼開發者和工程師特別喜歡 dig
?
dig
雖然是一個 CLI 工具,但它的設計非常清楚、靈活,特別適合進行 DNS 除錯與比對:
優點 | 說明 |
---|---|
🧾 結構清楚 | 會列出「查詢的問題」、「回傳的答案」、「來源伺服器」、「快取時間」等重要資訊 |
🔍 支援多種記錄類型 | A、AAAA、CNAME、MX、TXT、NS、SOA、SRV 等都能查 |
🌐 可指定查詢來源 | 可向特定 DNS 查詢(如 Google 8.8.8.8、Cloudflare 1.1.1.1),比對不同地區的解析情況 |
📤 回傳真實資料 | 不經過瀏覽器快取、不受系統預設解析器干擾,更接近真實網路狀況 |
dig 基本語法與範例
dig
的基本語法結構非常簡單:
dig 網域名稱 記錄類型
其中:
網域名稱
:你要查的網址,例如example.com
記錄類型
:你想查哪一種 DNS 記錄,最常見的是A
、MX
、TXT
等
📘 查詢 A 記錄(網站的 IPv4 位址)
dig example.com A
這會向預設 DNS 發出查詢,詢問:「請問 example.com 的 IPv4 是哪個 IP?」
查詢結果會回傳像這樣:
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
你可以看到:
ANSWER SECTION
是真正的解析結果93.184.216.34
就是網站的伺服器 IP3600
是 TTL(快取有效秒數),表示這筆資料最多會被快取一小時
📘 查詢 MX 記錄(郵件伺服器)
dig example.com MX
這會回傳 example.com 的郵件主機設定,例如:
;; ANSWER SECTION:
example.com. 3600 IN MX 10 mail1.example.com.
example.com. 3600 IN MX 20 mail2.example.com.
這裡顯示:
- 網域設定了兩個郵件主機,優先順序為 10 與 20(數字越小,優先度越高)
- 你可以用這資訊去驗證是否已正確設定第三方信箱(如 Google Workspace、Zoho、Outlook)
🌐 常見進階用法:指定 DNS 查詢來源
有時候 DNS 的查詢結果會因地區、ISP、DNS 快取狀況不同而有所不同。這時你可以指定使用特定的 DNS 伺服器來查詢,例如:
dig example.com A @8.8.8.8
這代表:
example.com
:查詢目標A
:查詢記錄類型(IPv4)@8.8.8.8
:查詢來源為 Google 的公共 DNS 伺服器
你也可以換成其他來源,例如:
dig example.com A @1.1.1.1 # Cloudflare DNS
dig example.com A @168.95.1.1 # 中華電信 DNS(台灣)
這樣能幫你確認:是不是只有某個地區解析錯誤?還是全球都還沒同步更新?
實用情境舉例
狀況 | 解法(使用 dig) |
---|---|
網站打不開 | dig yoursite.com A → 看是否有 IP 回應 |
信箱寄不出去 | dig yoursite.com MX → 確認 MX 記錄是否設定正確 |
憑證驗證失敗(Let’s Encrypt / Google) | dig _acme-challenge.yourdomain.com TXT |
DNS 剛改完但沒生效 | dig yourdomain.com A @8.8.8.8 → 查詢全球同步情況 |
想觀察 TTL 值(快取時間) | 看 ANSWER SECTION 裡的數字(例如 300 代表快取 5 分鐘) |
nslookup 是什麼?為什麼很多人第一次接觸的是它?
當你還不知道什麼是 DNS,也不知道 dig
是誰的時候,很可能早就在終端機裡輸入過 nslookup
。這是一個歷史悠久、幾乎每個作業系統都內建的 DNS 查詢工具。
nslookup 是什麼?
nslookup
(Name Server Lookup)是最早期的 DNS 查詢工具之一,它的用途很直接:輸入一個網域名稱,就會回傳對應的 IP 位址,也可以查詢像 MX、TXT 等其他記錄。
因為:
- 幾乎所有 Windows / macOS / Linux 系統都已預裝
- 操作方式非常簡單
- 結果回傳速度快、格式乾淨
因此成為許多使用者在第一次遇到 DNS 問題時的入門選擇。
nslookup 的基本語法與範例
最基本的查詢格式如下:
nslookup 網域名稱
例如:
nslookup example.com
你會看到像這樣的結果:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: example.com
Address: 93.184.216.34
說明:
欄位 | 意義 |
---|---|
Server / Address | 你現在使用的 DNS 伺服器 |
Name / Address | 查詢到的網域與對應的 IP(A 記錄) |
Non-authoritative answer | 回應來自非權威伺服器(也就是快取或轉問得來的結果) |
查詢其他類型的 DNS 記錄
雖然 nslookup
預設查的是 A 記錄(IP 位址),但你也可以查其他類型的記錄,比如:
🔐 查 MX 記錄(郵件主機)
nslookup -query=MX example.com
回傳結果可能會長這樣:
example.com mail exchanger = 10 mail1.example.com.
example.com mail exchanger = 20 mail2.example.com.
表示這個網域的信箱會優先指向 mail1,再來是 mail2。
🌐 指定 DNS 伺服器查詢(類似 dig 的 @)
你也可以手動指定查詢來源的 DNS 伺服器,例如 Google DNS:
nslookup example.com 8.8.8.8
這表示「用 8.8.8.8 這台 DNS 伺服器來查 example.com
」。這個功能對於:
- 比對全球 DNS 傳播情況
- 驗證 CDN、憑證驗證記錄是否已更新
都非常實用。
nslookup 的優點與限制比較
項目 | 說明 |
---|---|
✅ 優點 | 幾乎所有系統預設可用,不需額外安裝。語法簡單、查詢快速。 |
⚠️ 限制 | 結果格式簡化,不會顯示 TTL、權威伺服器、遞迴過程。對於進階除錯較不夠用。 |
🧑💻 適合 | 初學者、IT 支援人員、快速查 IP 使用者 |
🧰 不適合 | 網站架設、憑證驗證、DNS 傳播問題分析(建議用 dig) |
dig 和 nslookup 差在哪?該怎麼選擇?
雖然 dig
和 nslookup
都是 DNS 查詢工具,但它們的設計背景、使用目的、功能深度其實有所不同。你可以依照「查詢的目的」、「使用的環境」以及「你是否需要進階資訊」來選擇最適合的工具。
以下是兩者的比較整理:
功能項目 | dig (適合開發者、站長) | nslookup (適合入門者、IT 支援) |
---|---|---|
🔍 查詢結果格式 | 回傳非常詳細,包括:– DNS 回應類型(A/MX/TXT…)– TTL(快取秒數)– 解析來源伺服器– 權威 vs 非權威回應 | 回傳內容精簡,僅顯示對應 IP 或主機名稱(不含 TTL、來源伺服器等) |
🌐 是否能指定 DNS 伺服器 | ✅ 可用 @ 語法指定(如 @8.8.8.8),可測試不同區域結果 | ✅ 也可以指定(如 nslookup 網域名稱 8.8.8.8),但語法少人熟悉 |
🗂️ 記錄類型支援 | ✅ 支援完整記錄類型(A、AAAA、CNAME、MX、TXT、NS、SOA、SRV、ANY 等) | ⚠️ 支援部分記錄(MX、A、NS 等),但語法不統一,無法查 SOA、ANY 等 |
💻 安裝需求 | macOS / Linux 預設有,Windows 須另外安裝 BIND 套件 | 幾乎所有作業系統都已預裝(Windows/macOS/Linux 全支援) |
🎯 適合使用情境 | 架站、憑證驗證、CDN 部署、跨區比對、DNS 排錯、DNS TTL 分析 | 快速查 IP、臨時測試信箱主機、簡單教學演示 |
怎麼選擇才適合你?
✅ 如果你只是想確認:
- 某個網址目前的 IP 是什麼?
- 公司信箱有沒有設好?
👉 用 nslookup
就夠快又方便,例如:
nslookup example.com
nslookup -query=MX example.com
🧠 如果你需要進一步分析:
- 查出來的資料會快取多久(TTL 是多少秒)?
- 查 TXT 記錄進行憑證驗證?
- 想知道解析是來自哪台 DNS?是權威回應還是快取?
👉 建議使用 dig
,例如:
dig example.com A
dig example.com MX @8.8.8.8
dig _acme-challenge.example.com TXT
小結:學會 DNS 查詢,是每個網站人該有的技能
不管你是開發者、站長、還是經常需要幫公司架信箱、接憑證的行銷人員,學會使用 dig
和 nslookup
,就是學會如何第一時間檢查網域問題。
記得:
- 初學者先用
nslookup
熟悉語法與觀念 - 要查詳細記錄、TTL、指定伺服器時,改用
dig
- 網站無法開啟、憑證驗證失敗、信箱寄不出去時,第一步都可以從 DNS 查詢開始排錯