DNS 解析完整流程圖解:從輸入網址到看到網頁的 0.1 秒

用圖解帶你看懂 DNS Resolver、Root、TLD、Authoritative Server 怎麼合作,加上快取層級與 CDN 對 DNS 的影響,建立能排錯的流程觀。

DNS解析流程Recursive ResolverRoot ServerTLDAuthoritative ServerDNS快取CDNIP指向網路基礎建設教學運作原理

很多人知道 DNS 會把網域轉成 IP,但只停在這一層還不夠。當你之後遇到 propagation、某些地區能開某些不能開,或 NS 設錯時,就會需要理解整條解析流程。這篇就是把這件事講到你真的有感。

你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。

你會學到什麼

  • 把 DNS 查詢流程串成一個完整畫面。
  • 知道不同層級的 DNS 伺服器各自在做什麼。
  • 了解 DNS 快取在哪些層級運作,以及對排錯的影響。
  • 理解 CDN 如何改變 DNS 的解析行為。
  • 之後遇到解析問題時,更容易判斷問題可能卡在哪裡。

什麼情況最適合先看這篇

  • 正在處理網域、解析、Cloudflare 或郵件紀錄,想一次把觀念和排錯順好的人
  • 你現在正要處理「DNS 解析完整流程圖解」這類操作
  • 你希望做完之後不只功能能用,連驗證與排錯也有概念

開始前先確認

  • 先有基本 DNS 名詞概念(如果還沒有,先看 DNS 基礎觀念解析)。
  • 最好手邊有一個實際網域可以對照。
  • 如果你常要改 NS 或代管平台,這篇特別值得看。

先提醒你一件事

DNS 問題常常不是設定全錯,而是你同時改了太多地方,最後分不清楚是哪一步造成的。

詳細教學與操作步驟

本文將帶你深入了解 DNS 解析的背後機制,透過直觀的流程圖解,告訴你當你輸入一個網址後,電腦是如何在不到 0.1 秒的時間內找到目標伺服器的。

完整 DNS 解析流程圖

一、 遞迴查詢 (Recursive Query)

當你在瀏覽器輸入 kanrays.net 時,電腦會先問「遞迴解析器」(通常是 ISP 或 Google 的 8.8.8.8)。解析器就像是一個快遞員,它負責幫你跑遍全球去尋找答案。在 侃瑞科技 VPS 的環境下,我們建議使用穩定且快速的解析器以減少延遲。

遞迴解析器收到你的請求後,會按照以下順序逐步查詢,直到找到最終答案:

  1. 先檢查自己的快取裡有沒有答案。
  2. 沒有的話,去問根伺服器。
  3. 根伺服器指路後,去問 TLD 伺服器。
  4. TLD 伺服器指路後,去問權威伺服器。
  5. 拿到答案後回傳給你,同時把結果快取起來。

二、 根伺服器與 TLD 的協力

如果解析器沒有紀錄,它會問:

  1. 根伺服器 (Root Server): 全世界有 13 組根伺服器(A 到 M),它們是 DNS 架構的最頂層。根伺服器不會直接告訴你網域的 IP,而是告訴解析器要去哪裡找 .net.com.tw 等頂級網域的伺服器。
  2. 頂級網域伺服器 (TLD Server): 負責管理 .net,它會告訴解析器 kanrays.net 是由哪台「權威伺服器 (Authoritative Server)」管轄。

三、 權威名稱伺服器 (Authoritative DNS)

這是最關鍵的一步。權威伺服器擁有網域的「最終解釋權」。它會告訴解析器:kanrays.net 的 IP 位址是 123.45.67.89。這也是你在管理介面修改 DNS 紀錄後,資料真正存放的地方。關於如何設定,請參考我們的 網域指向教學

四、 DNS 快取層級圖解

為了避免每次都跑完整的查詢流程,DNS 在多個層級設有快取機制。理解這些層級,對於排除「為什麼改了設定卻沒生效」的問題特別重要。

快取對排錯的影響:

當你改了一筆 DNS 記錄後,權威伺服器上的資料是立即更新的。但要等到所有中間層的快取都過期(根據 TTL),全世界才會看到新的結果。這就是為什麼你可能改完紀錄後自己的電腦還是看到舊的 IP。

各層快取的清除方式:

快取層級清除方式
瀏覽器關閉所有分頁或使用無痕模式
作業系統Windows: ipconfig /flushdns、macOS: sudo dscacheutil -flushcache
路由器重新啟動路由器
ISP 解析器無法主動清除,只能等 TTL 過期,或改用其他 DNS(如 8.8.8.8)
權威伺服器不需要清除,修改即生效

五、 CDN 對 DNS 的影響

當你使用 CDN(如 Cloudflare)時,DNS 的解析行為會發生變化。理解這一點對排錯特別重要。

沒有 CDN 時的解析:

使用者 → DNS 查詢 → 取得主機 IP → 直接連線到主機

使用 CDN 時的解析:

使用者 → DNS 查詢 → 取得 CDN 邊緣節點 IP → CDN 轉發到主機

CDN 對 DNS 排錯的影響:

  • 看不到真實 IP:開啟 Cloudflare Proxy(橘色雲朵)後,dig 查到的是 Cloudflare 的 IP,不是你主機的 IP。這是正常的。
  • Anycast 路由:CDN 會根據使用者的地理位置,回傳離他最近的邊緣節點 IP。所以你在台灣查到的 IP 和在美國查到的 IP 可能不同,但都是正確的。
  • 快取層更多:CDN 本身也有快取,當你更新主機上的內容但 CDN 快取還沒過期時,使用者看到的可能還是舊內容。這不是 DNS 的問題,而是 CDN 快取的問題。

Cloudflare 的 Anycast DNS:

Cloudflare 使用 Anycast 技術,讓全球使用者查詢 DNS 時,自動連到離他們最近的 Cloudflare 資料中心。這代表:

  1. DNS 查詢速度更快(通常 < 10ms)。
  2. 即使某個資料中心離線,其他資料中心會自動接手。
  3. dig 查到的結果可能因為地理位置不同而有差異,但都是指向 CDN。

六、 用 dig +trace 實際觀察解析流程

如果你想親眼看到 DNS 是怎麼一層一層查下來的,dig +trace 是最好的工具。以下是一個實際的查詢範例:

$ dig kanrays.net +trace

; <<>> DiG 9.18.18 <<>> kanrays.net +trace
;; global options: +cmd
.                   518400  IN  NS  a.root-servers.net.
.                   518400  IN  NS  b.root-servers.net.
...(13 台根伺服器)

net.                172800  IN  NS  a.gtld-servers.net.
net.                172800  IN  NS  b.gtld-servers.net.
...(.net 的 TLD 伺服器)

kanrays.net.        86400   IN  NS  xxx.ns.cloudflare.com.
kanrays.net.        86400   IN  NS  yyy.ns.cloudflare.com.
(Cloudflare 的權威伺服器)

kanrays.net.        300     IN  A   151.158.27.102
(最終拿到 IP 位址)

從這個輸出你可以清楚看到:

  1. 第一段:根伺服器回應了 13 台根伺服器的位址。
  2. 第二段:根伺服器指引到 .net 的 TLD 伺服器。
  3. 第三段:TLD 伺服器指引到 Cloudflare 的權威伺服器。
  4. 第四段:權威伺服器回傳最終的 A 記錄。

這個過程在實際環境中通常只需要 50-200ms,而且大部分時候因為有快取,根本不需要走完全部步驟。

七、 公共 DNS 解析器比較

選擇不同的 DNS 解析器會影響你的上網速度和隱私。以下是台灣站長常用的公共 DNS 服務比較:

服務IPv4 位址特色適合
Cloudflare1.1.1.1 / 1.0.0.1速度最快、隱私保護佳一般使用
Google8.8.8.8 / 8.8.4.4穩定、全球覆蓋廣開發除錯
Quad99.9.9.9自動過濾惡意網域安全需求
中華電信168.95.1.1 / 168.95.192.1台灣在地,查詢台灣網域快本地網站

在 VPS 上設定 DNS 解析器:

如果你的 VPS 放在台灣,可以在 /etc/resolv.conf 設定:

nameserver 1.1.1.1
nameserver 8.8.8.8

這樣你的 VPS 在做 DNS 查詢時(例如寄送 Email、呼叫外部 API)會使用這些解析器,而不是依賴 VPS 供應商的預設 DNS。

八、 DNS over HTTPS (DoH) 與 DNS over TLS (DoT)

傳統 DNS 查詢是明文傳輸的,任何在網路路徑上的人都可以看到你在查詢什麼網域。DoH 和 DoT 是兩種加密 DNS 查詢的方式:

特性DoHDoT
加密方式HTTPS(port 443)TLS(port 853)
優點與一般 HTTPS 流量混在一起,難以被封鎖專用 port,容易管理與監控
常見實作Firefox、Chrome 內建支援Android 9+ 內建支援
適用情境一般使用者隱私保護企業環境、伺服器

目前主要的公共 DNS 服務都支援 DoH 和 DoT:

  • Cloudflarehttps://cloudflare-dns.com/dns-query(DoH)、1dot1dot1dot1.cloudflare-dns.com(DoT)
  • Googlehttps://dns.google/dns-query(DoH)、dns.google(DoT)

如何在瀏覽器啟用 DoH:

  • Chrome:設定 → 隱私權和安全性 → 安全性 → 使用安全 DNS → 選擇 Cloudflare 或 Google。
  • Firefox:設定 → 隱私權與安全性 → DNS over HTTPS → 啟用並選擇供應商。
  • Edge:設定 → 隱私權、搜尋與服務 → 安全性 → 使用安全 DNS。

九、 DNS 效能對網站速度的影響

DNS 查詢是使用者訪問你網站的第一步。如果 DNS 查詢慢,使用者要等更久才能看到網頁。以下是影響 DNS 效能的幾個關鍵因素:

影響 DNS 速度的因素:

因素影響建議
權威伺服器位置離使用者越遠,查詢越慢使用有全球節點的 DNS 服務(如 Cloudflare)
TTL 設定TTL 越長,快取命中率越高穩定的記錄設長一點(3600-86400 秒)
CNAME 鏈每多一層 CNAME,多一次查詢避免超過 2 層的 CNAME 串連
DNS 記錄數量記錄太多會影響查詢效率定期清理不用的記錄
DNSSEC額外的驗證步驟會增加延遲對安全要求高的網域才啟用

實際測量 DNS 查詢時間:

# 測量 DNS 查詢時間
dig kanrays.net | grep "Query time"
;; Query time: 12 msec

# 比較不同 DNS 解析器的速度
dig @1.1.1.1 kanrays.net | grep "Query time"
dig @8.8.8.8 kanrays.net | grep "Query time"
dig @168.95.1.1 kanrays.net | grep "Query time"

常見問題

Q:為什麼我改了 DNS 紀錄,網站還是連到舊的?
這就是所謂的「DNS 傳播延遲」。雖然權威伺服器改了,但各地的遞迴解析器還存有舊的快取。你需要等待快取到期,通常是數分鐘到 24 小時。更多排除方法請見我們的 DNS 故障排除指南

Q:可以使用多台權威伺服器嗎?
是的,這能增加穩定性。在侃瑞科技,我們建議至少設定兩台以上的 NameServers,以防止單點失效導致網站無法存取。

Q:為什麼我用 dig 查到的 IP 不是我主機的 IP?
如果你有開啟 Cloudflare Proxy(橘色雲朵),dig 會回傳 Cloudflare 的邊緣節點 IP,不是你的主機 IP。這是正常的,代表你的流量正在通過 CDN。如果要查看原始 IP,可以到 Cloudflare Dashboard 查看 DNS 記錄中設定的值。

Q:DNS 查詢真的只要 0.1 秒嗎?
如果快取命中(大多數情況),DNS 查詢通常在 1-10ms 內完成。如果是完全沒有快取的冷查詢,需要從根伺服器一路查下來,可能需要 50-200ms。但由於 DNS 查詢結果會被多層快取,實際上大部分查詢都能在極短時間內完成。

做完後怎麼確認自己真的有設對

  • 至少用 dignslookup 或線上工具再驗一次,區分是設定錯、快取,還是 propagation。
  • 重新看一次你剛剛改過的設定值、網址、帳號或紀錄,確認沒有填錯對象。
  • 如果這篇操作會影響正式網站或正式信箱,建議再從不同網路或不同裝置測一次。

這一題最常踩的坑

  • 以為改一筆記錄就全世界同步完成。
  • 不知道 resolver 與 authoritative server 的角色差異。
  • 只會背名詞,不會連回實際網站情境。
  • 開了 CDN 之後用 dig 查不到主機 IP 就以為設定錯了。
  • 搞不清楚是 DNS 快取問題還是 CDN 快取問題。

如果你要往下一步走

如果你已經開始碰到實際錯誤,接著看 DNS 問題排除教學。 如果你接下來要把網站正式上線,也可以直接銜接侃瑞的 主機方案VPS 方案

需要主機來實作?

侃瑞科技提供 cPanel 虛擬主機與 VPS,教學裡的操作開箱即用。

查看方案 →
LINE 諮詢