什麼是 DNS?
DNS(Domain Name System,網域名稱系統)是網際網路的目錄服務。當你在瀏覽器輸入 example.com,DNS 負責將這個人類易讀的名稱轉換成電腦用來通訊的 IP 位址。
少了 DNS,你就必須記住 Google 在 142.250.66.78,YouTube 在另一個 IP……DNS 讓網際網路變得對人類友善。
DNS 解析流程
DNS 採用分層架構:最頂層是根名稱伺服器,再來是頂層網域(TLD)伺服器(如 .com、.tw),最後是各網域自己的權威名稱伺服器。
第一次造訪某個網域時,解析流程如下:
- 瀏覽器先查本機快取,有效的話直接使用。
- 詢問作業系統的解析器(通常是路由器或 ISP 的 DNS)。
- 解析器向根名稱伺服器詢問:「
.com由誰管?」 - 根伺服器回傳
.comTLD 伺服器位址。 - 解析器詢問 TLD 伺服器:「
example.com的權威伺服器在哪?」 - 取得權威伺服器位址後再詢問 A 記錄,取得 IP 位址。
- 瀏覽器連線。查詢結果依 TTL 快取,下次直接使用。
整個流程通常在 50 毫秒內完成。
DNS 記錄類型
| 類型 | 用途 | 範例值 |
|---|---|---|
| A | 對應 IPv4 位址 | 93.184.216.34 |
| AAAA | 對應 IPv6 位址 | 2606:2800:220:1:248:1893:25c8:1946 |
| CNAME | 別名,指向另一個主機名稱 | www → example.com |
| MX | 郵件伺服器 | 10 mail.example.com |
| TXT | 任意文字(SPF、DKIM、網域驗證) | v=spf1 include:… -all |
| NS | 權威名稱伺服器 | ns1.example.com |
| CAA | 限制可簽發憑證的 CA | 0 issue "letsencrypt.org" |
TTL — 存活時間
每筆 DNS 記錄都有 TTL(Time to Live),單位是秒,告訴解析器可以快取多久。TTL 3600 代表快取一小時。
實用技巧:預計要更換主機或修改 MX 記錄時,提前一天將 TTL 調低到 300 秒。正式切換後,新記錄在幾分鐘內就能全球生效,而不是等好幾個小時。
DNS 安全
標準 DNS 查詢透過 UDP port 53 傳送,完全明文。這造成兩個問題:網路路徑上的任何人都能看到你查詢哪些網域,且回應可以被偽造。
- DNSSEC — 為 DNS 記錄加上密碼學簽章,解析器可以驗證回應是否被篡改。缺點是設定複雜,配置錯誤是網域失效的常見原因。
- DNS over HTTPS(DoH) — 將 DNS 查詢包在 HTTPS 流量裡傳送,防止 ISP 或網路業者監看你查詢哪些網域。本站使用 Cloudflare 的 DoH 端點執行所有查詢。
- DNS over TLS(DoT) — 功能與 DoH 相同,但使用專屬的 TCP port 853。