DNS 是什麼?完整解析網域名稱系統的運作原理

當我們在瀏覽器輸入 www.google.com 按下 Enter 鍵時,網頁幾乎瞬間就載入了。但你有沒有想過,電腦是怎麼知道要連到哪台伺服器的呢?這背後的功臣就是 DNS(Domain Name System,網域名稱系統)。DNS 就像網際網路的電話簿,將我們容易記憶的網域名稱轉換成電腦能理解的 IP 位址。今天我們就來深入了解 DNS 到底是什麼、它如何運作,以及為什麼它對我們的上網體驗如此重要。

DNS 的基本概念

什麼是 DNS?

DNS 全名為 Domain Name System,中文稱為「網域名稱系統」。簡單來說,DNS 是一個分散式的資料庫系統,負責將人類容易記憶的網域名稱(例如 facebook.com)轉換成電腦網路中實際使用的 IP 位址(例如 157.240.1.35)。想像一下,如果沒有 DNS,我們每次想上 Facebook 就得記住一串數字,那上網會變得多麼麻煩啊!

我們可以把 DNS 比喻成一本巨大的通訊錄。當你想打電話給朋友時,你只需要記住他的名字,然後在通訊錄裡找到對應的電話號碼。DNS 做的就是類似的事情,只不過它查找的是網站的「電話號碼」——也就是 IP 位址。

這套系統採用階層式架構,從全球的根伺服器開始,一層層往下延伸到各個網域的權威伺服器。這種設計讓 DNS 能夠處理數十億個網域名稱,同時保持高效率的查詢速度。更重要的是,DNS 是分散式的,沒有單一故障點,這讓整個網際網路更加穩定可靠。

為什麼需要 DNS?

你可能會問,為什麼不直接使用 IP 位址就好?原因很簡單:IP 位址對人類來說太難記了。試想一下,如果你要記住常用的十個網站的 IP 位址,像是 142.250.185.46(Google)、13.107.42.14(Microsoft)等等,是不是很容易搞混?而且 IP 位址可能會改變,但網域名稱可以保持不變,這為網站管理者提供了靈活性。

DNS 的出現解決了這個問題。它讓我們可以用有意義、容易記憶的名稱來訪問網站。當網站需要更換伺服器或 IP 位址時,只需要更新 DNS 記錄就好,使用者完全不會察覺到任何變化。這就像你的朋友換了手機號碼,只要更新通訊錄就能繼續聯絡,不需要記新的號碼。

此外,DNS 還支援負載平衡和故障轉移功能。一個網域名稱可以對應到多個 IP 位址,當某台伺服器故障時,DNS 可以自動將流量導向其他正常運作的伺服器。這對於大型網站來說至關重要,確保了服務的高可用性。

DNS 的運作原理

DNS 查詢的完整流程

當我們在瀏覽器輸入一個網址時,DNS 查詢就開始了。這個過程看似簡單,實際上涉及多個步驟和不同的伺服器協作。讓我們一步步來看看當你輸入 www.example.com 時會發生什麼事。

首先,你的電腦會檢查本地快取,看看最近是否查詢過這個網域。如果有,就直接使用快取中的 IP 位址,這樣可以節省時間。如果沒有,查詢請求會被送到你的 ISP(網際網路服務供應商)提供的 DNS 解析器,或者你手動設定的 DNS 伺服器。

DNS 解析器收到請求後,它會先查看自己的快取。如果沒有找到,它就會開始一系列的查詢過程。首先,它會向根名稱伺服器詢問:「誰知道 .com 網域的資訊?」根伺服器會回覆:「你去找 .com 的 TLD 伺服器吧。」接著,解析器向 TLD 伺服器詢問:「example.com 的權威伺服器在哪裡?」TLD 伺服器會提供權威名稱伺服器的位址。

最後,解析器向 example.com 的權威名稱伺服器查詢 www.example.com 的 IP 位址。權威伺服器回覆正確的 IP 位址後,解析器會將這個結果快取起來,並回傳給你的電腦。整個過程通常在幾十毫秒內完成,我們幾乎感覺不到任何延遲。

DNS 解析的四大伺服器

DNS 系統的運作依賴四種主要的伺服器類型,每一種都扮演著不可或缺的角色。了解這些伺服器的功能,可以幫助我們更深入理解 DNS 的工作機制。

遞迴解析器(Recursive Resolver)

遞迴解析器是 DNS 查詢的起點,也是最接近使用者的那一層。當你的電腦需要解析一個網域名稱時,它會將請求發送給遞迴解析器。這個解析器就像是一個勤奮的圖書館員,它會代替你去查找所需的資訊。

遞迴解析器的特點是它會「遞迴」地進行查詢,也就是說,它會一直追問下去直到找到答案。它會記住你查詢過的結果,下次有人查詢相同的網域時,就能直接提供答案,不需要再跑一遍完整的查詢流程。大多數 ISP 都會提供自己的遞迴解析器,但你也可以使用像 Google Public DNS 或 Cloudflare 這樣的公共 DNS 服務。

根名稱伺服器(Root Nameserver)

根名稱伺服器位於 DNS 階層架構的最頂端。全球只有 13 組根伺服器(標記為 A 到 M),但實際上透過任播技術,每組根伺服器在世界各地都有多個實體伺服器副本,總數超過數百台。

根伺服器不會直接告訴你某個網站的 IP 位址,它們的工作是指引查詢到正確的 TLD 伺服器。當遞迴解析器詢問 www.example.com 的位址時,根伺服器會說:「我不知道具體位址,但我知道誰負責 .com 網域,你去問它。」這就像是總機告訴你應該轉接到哪個部門。

TLD 名稱伺服器

TLD(Top-Level Domain)名稱伺服器負責管理頂級網域,像是 .com、.org、.tw 等等。每個 TLD 都有專門的名稱伺服器來處理該網域下的查詢。當你查詢 example.com 時,.com 的 TLD 伺服器會告訴你哪個權威名稱伺服器負責 example.com 這個網域。

TLD 伺服器維護著該頂級網域下所有註冊網域的記錄。它們就像是各個城市的資訊中心,知道城市裡每條街道的負責單位。台灣的 .tw 網域就是由 TWNIC(台灣網路資訊中心)負責管理其 TLD 伺服器。

權威名稱伺服器(Authoritative Nameserver)

權威名稱伺服器是 DNS 查詢鏈的最後一站,它擁有特定網域的最終、最權威的資訊。如果說前面的伺服器都在指路,那麼權威名稱伺服器就是真正知道答案的那個人。

當查詢到達 example.com 的權威名稱伺服器時,它會查看自己的記錄,然後回覆:「www.example.com 的 IP 位址是 93.184.216.34。」這個答案就會一路傳回給遞迴解析器,最終到達你的電腦。網域的擁有者可以透過 DNS 管理介面來設定和更新權威名稱伺服器上的記錄。

DNS 記錄類型有哪些?

A 記錄與 AAAA 記錄

DNS 記錄是儲存在權威名稱伺服器上的資料,定義了網域名稱與各種資源之間的對應關係。最基本也最重要的是 A 記錄和 AAAA 記錄。

A 記錄(Address Record)是最常見的 DNS 記錄類型,它將網域名稱對應到 IPv4 位址。例如,www.example.com 的 A 記錄可能指向 93.184.216.34。當你在瀏覽器輸入這個網址時,DNS 會查詢 A 記錄來找到對應的伺服器。

AAAA 記錄(也讀作「quad-A」)則是 A 記錄的 IPv6 版本。隨著 IPv4 位址逐漸耗盡,IPv6 變得越來越重要。AAAA 記錄將網域名稱對應到 128 位元的 IPv6 位址,例如 2606:2800:220:1:248:1893:25c8:1946。現代網站通常會同時設定 A 和 AAAA 記錄,以支援使用不同 IP 協定的使用者。

DNS A Record

CNAME、MX 與其他常見記錄

除了 A 和 AAAA 記錄,還有許多其他類型的 DNS 記錄服務於不同目的。CNAME 記錄(Canonical Name)用於建立別名。例如,你可以設定 www.example.com 為 example.com 的 CNAME,這樣兩個網址都會指向同一個地方。這在管理多個子網域時特別方便。

MX 記錄(Mail Exchange)指定了接收電子郵件的郵件伺服器。當有人寄信到 user@example.com 時,發送方的郵件伺服器會查詢 example.com 的 MX 記錄,找出應該將郵件送到哪台伺服器。MX 記錄還包含優先順序,讓你可以設定主要和備用郵件伺服器。

TXT 記錄可以儲存任意文字資訊,常用於網域驗證、SPF(Sender Policy Framework)設定來防止郵件欺騙,或是 DKIM 數位簽章。NS 記錄(Name Server)則指定了該網域使用哪些名稱伺服器。還有 PTR 記錄用於反向 DNS 查詢,SOA 記錄儲存網域的管理資訊等等。

DNS 的快取機制

瀏覽器與作業系統快取

為了提升效能和減少網路流量,DNS 系統在多個層級實作了快取機制。最接近使用者的快取存在於瀏覽器和作業系統中。當你訪問一個網站時,瀏覽器會將 DNS 查詢結果儲存在記憶體中。下次你再訪問同一個網站時,瀏覽器就能直接使用快取的 IP 位址,不需要再進行 DNS 查詢。

每個瀏覽器都有自己的 DNS 快取管理機制。Chrome 瀏覽器的快取通常會保留數分鐘到數小時,你可以在網址列輸入 chrome://net-internals/#dns 來查看和清除快取。Firefox、Safari 等瀏覽器也都有類似的功能。

DNS Cache in Chrome Browser

作業系統層級的 DNS 快取則由系統的 DNS 客戶端服務管理。Windows、macOS 和 Linux 都會維護自己的 DNS 快取。當瀏覽器的快取過期或沒有找到記錄時,就會詢問作業系統的快取。這層快取通常保留時間較長,能夠讓多個應用程式共享 DNS 查詢結果。

TTL 生存時間的重要性

TTL(Time To Live,生存時間)是 DNS 記錄中的一個重要參數,它決定了這筆記錄可以被快取多久。TTL 以秒為單位,例如 TTL=3600 表示這筆記錄可以被快取一小時。當 TTL 到期後,快取會被視為過期,下次查詢時就需要重新向權威伺服器取得最新資料。

設定適當的 TTL 值需要在效能和靈活性之間取得平衡。較長的 TTL(例如 86400 秒,即 24 小時)可以減少 DNS 查詢次數,降低伺服器負載,提升網站存取速度。但缺點是,當你需要更改 IP 位址時,更新會較慢生效,因為舊的記錄可能還在全球各地的快取中。

較短的 TTL(例如 300 秒,即 5 分鐘)讓你能快速更新 DNS 記錄,這在伺服器遷移或故障轉移時很有用。但代價是會產生更多的 DNS 查詢流量。一般建議是,在正常運作時使用較長的 TTL,而在計劃進行變更前幾天先降低 TTL 值,這樣變更時就能更快生效。

常見的 DNS 問題與解決方法

DNS 解析失敗怎麼辦?

有時候我們會遇到網頁無法開啟的情況,錯誤訊息顯示「DNS_PROBE_FINISHED_NXDOMAIN」或「找不到伺服器」。這通常是 DNS 解析出現問題。首先,你可以嘗試清除 DNS 快取。在 Windows 上,開啟命令提示字元並執行 ipconfig /flushdns;在 macOS 上使用 sudo dscacheutil -flushcache;Linux 用戶則可以重啟 systemd-resolved 服務。

如果清除快取後問題仍然存在,可能是你的 DNS 伺服器本身出了問題。這時候切換到其他 DNS 伺服器通常能解決問題。你也可以檢查網路連線是否正常,嘗試 ping 8.8.8.8 這樣的 IP 位址,如果能 ping 通但網頁打不開,就確認是 DNS 問題。

有時候問題出在網域本身。網域可能過期未續約,或是 DNS 記錄設定錯誤。如果你是網域管理者,可以使用 nslookup 或 dig 這類工具來檢查 DNS 記錄是否正確。線上工具如 DNS Checker 可以幫你從全球不同地點檢查 DNS 傳播狀況。Google 自己也有 Google Admin Toolbox 可以用喔!

DNS Check by Google Admin Toolbox

如何更換 DNS 伺服器?

更換 DNS 伺服器是改善上網速度和安全性的簡單方法。在 Windows 10/11 上,進入「設定」>「網路和網際網路」>「乙太網路」或「Wi-Fi」,點擊你的連線,選擇「編輯 IP 設定」,然後手動輸入 DNS 伺服器位址。

macOS 用戶可以前往「系統設定」>「網路」,選擇你的網路連線,點擊「進階」,然後在「DNS」分頁中新增伺服器。你可以新增多個 DNS 伺服器,系統會依序嘗試使用它們。

在路由器層級更改 DNS 設定會影響連接到該路由器的所有裝置。登入路由器管理介面(通常是 192.168.1.1 或 192.168.0.1),找到 WAN 或網際網路設定,將 DNS 伺服器從「自動取得」改為「手動設定」,然後輸入你想使用的 DNS 伺服器位址。更改後記得重啟路由器讓設定生效。

公共 DNS 服務推薦

Google DNS、Cloudflare DNS 等選擇

市面上有許多優質的公共 DNS 服務可供選擇。Google Public DNS 是最早也是最受歡迎的公共 DNS 之一,主要 DNS 位址是 8.8.8.8 和 8.8.4.4(IPv4),或 2001:4860:4860::8888 和 2001:4860:4860::8844(IPv6)。Google DNS 以穩定性和全球覆蓋率著稱,在世界各地都有伺服器節點。

Cloudflare 的 1.1.1.1 是後起之秀,主打速度和隱私。Cloudflare 承諾不會記錄使用者的查詢資料,並在 24 小時後刪除所有日誌。他們的 DNS 服務在許多效能測試中都名列前茅,備用伺服器是 1.0.0.1。Cloudflare 還提供 1.1.1.1 for Families 服務,可以過濾惡意軟體和成人內容。

Quad9(9.9.9.9)注重安全性,會封鎖已知的惡意網域,保護你免受網路釣魚和惡意軟體威脅。OpenDNS(208.67.222.222 和 208.67.220.220)提供家長控制功能,可以過濾不適當的內容。台灣用戶可以考慮使用 HiNet 的 DNS(168.95.1.1 和 168.95.192.1),因為地理位置較近,理論上延遲會較低。

選擇 DNS 服務時,可以考慮速度、隱私政策、安全功能和可靠性。你也可以使用 DNS Benchmark 這類工具來測試不同 DNS 服務在你所在位置的實際表現,選擇最適合自己的那一個。

DNS 安全性議題

DNS 劫持與中間人攻擊

DNS 系統雖然便利,但也存在安全隱憂。DNS 劫持(DNS Hijacking)是指攻擊者透過修改 DNS 設定,將你導向錯誤的 IP 位址。這可能發生在你的路由器、電腦或 ISP 的 DNS 伺服器上。攻擊者可能將你導向偽造的銀行網站,竊取你的帳號密碼和個人資料。

DNS 快取污染(DNS Cache Poisoning)是另一種常見攻擊。攻擊者向 DNS 伺服器發送偽造的回應,讓伺服器快取錯誤的記錄。當其他使用者查詢這個網域時,就會得到錯誤的 IP 位址。這種攻擊可以影響大量用戶,而且很難被發現。

中間人攻擊(Man-in-the-Middle)利用 DNS 查詢未加密的特性。攻擊者可以攔截你的 DNS 查詢,並回傳偽造的回應。傳統的 DNS 查詢是明文傳輸的,任何人都能看到你查詢了哪些網站,這也是隱私方面的問題。要防範這些攻擊,可以使用有信譽的 DNS 服務、定期檢查路由器設定、保持系統更新,並注意網站的 SSL 憑證是否正確。

DNSSEC 是什麼?

DNSSEC(DNS Security Extensions)是為了解決 DNS 安全問題而開發的一套擴充協定。它透過數位簽章來驗證 DNS 回應的真實性,確保你收到的 DNS 記錄確實來自權威伺服器,而且沒有被竄改過。

DNSSEC 的運作原理類似於 HTTPS 的數位憑證。網域擁有者會用私鑰對 DNS 記錄進行簽章,而查詢者可以用公鑰來驗證簽章。每一層的 DNS 伺服器都會驗證下一層的簽章,形成一條信任鏈,從根伺服器一直延伸到目標網域。

雖然 DNSSEC 提供了更好的安全性,但它的部署還不夠普及。啟用 DNSSEC 需要額外的設定和管理,而且會增加 DNS 回應的大小和處理時間。不過,越來越多的網域開始支援 DNSSEC,尤其是政府機關和金融機構的網站。GCP 的 Cloud DNS 也有提供 DNSSEC 的功能,說明文件在此

除了 DNSSEC,DNS over HTTPS(DoH)和 DNS over TLS(DoT)也是提升 DNS 安全性的技術。它們透過加密連線來傳輸 DNS 查詢,防止被竊聽或竄改。Firefox 和 Chrome 等現代瀏覽器都已經支援 DoH,讓你的 DNS 查詢更加私密和安全。

結論

DNS 是網際網路基礎建設中不可或缺的一部分,它將複雜的 IP 位址轉換成我們容易記憶的網域名稱,讓上網變得簡單直覺。透過本文,我們了解了 DNS 的基本概念、運作原理、各種記錄類型,以及快取機制。我們也探討了常見的 DNS 問題和解決方法,介紹了值得信賴的公共 DNS 服務,並討論了 DNS 的安全性議題。

雖然 DNS 的運作過程複雜,涉及多層伺服器的協作,但對一般使用者來說,它就是默默在背後工作,讓我們能順暢地瀏覽網頁、收發郵件、使用各種網路服務。當你遇到連線問題時,現在你知道如何從 DNS 的角度來診斷和解決。選擇適合的 DNS 服務,注意安全性,就能享受更快速、更安全的上網體驗。

DNS 技術還在不斷演進,從 DNSSEC 到 DoH,都是為了讓這個系統更安全、更有效率。作為網路使用者,了解 DNS 的基本知識能幫助我們更好地掌控自己的上網體驗,也能在遇到問題時知道該如何應對。希望這篇文章能讓你對 DNS 有更深入的認識!

常見問題解答

Q1: DNS 和 IP 位址有什麼差別?

IP 位址是網路上每台裝置的實際地址,就像門牌號碼一樣。DNS 則是將容易記憶的網域名稱(如 google.com)轉換成 IP 位址的系統。簡單說,DNS 是翻譯機,IP 位址是目的地。我們輸入網域名稱,DNS 幫我們找到對應的 IP 位址,然後電腦才知道要連到哪台伺服器。

Q2: 更換 DNS 能提升網速嗎?

可以,但效果有限。更換到速度較快的 DNS 服務可以縮短網域解析時間,讓網頁開始載入得更快一點。不過 DNS 查詢通常只佔整個連線過程的一小部分,而且有快取機制。真正影響網速的主要是你的網路頻寬、伺服器距離和網站本身的效能。換 DNS 比較明顯的好處是提升穩定性和安全性。

Q3: 為什麼更改 DNS 設定後還是連不上網?

可能有幾個原因:首先,DNS 記錄有 TTL 設定,舊的記錄可能還在快取中,需要等待一段時間或手動清除快取。其次,可能是你輸入的 DNS 伺服器位址有誤,仔細檢查數字是否正確。也可能是網路連線本身有問題,或是防火牆阻擋了 DNS 查詢。試著用其他裝置測試,或暫時改回自動取得 DNS 來排除問題。

Q4: 什麼是 DNS 污染?如何避免?

DNS 污染是指 DNS 伺服器的快取被植入錯誤或惡意的記錄,導致使用者被導向錯誤的網站。這可能是遭受攻擊,或是某些地區刻意的網路管制。要避免 DNS 污染,可以使用可信賴的公共 DNS 服務如 Cloudflare 或 Google DNS,啟用 DNSSEC 驗證,或使用 DoH/DoT 加密 DNS 查詢。定期清除 DNS 快取也有幫助。

Q5: 企業需要架設自己的 DNS 伺服器嗎?

這取決於企業規模和需求。大型企業通常會架設內部 DNS 伺服器來管理內部網域和提供更好的控制。自己的 DNS 伺服器可以加快內部網域的解析速度,提供客製化的 DNS 記錄,並增強安全性。但小型企業可能不需要,使用網域註冊商提供的 DNS 服務就足夠了。架設 DNS 伺服器需要專業知識和持續維護,要考慮成本效益。

返回頂端