DNS 設定完整指南:網管人員必懂的架構、記錄類型與最佳化實務

對多數團隊而言,DNS 往往在建站完成後就被「封存」:能開站、能收發信就好。但在實務維運裡,DNS 是所有服務的入口。

一個工程師介紹dns架構

可用性(Uptime)延遲(Latency)郵件送達率(Deliverability)安全(Security)、甚至 換機房 / 佈署 CDN / 雲端多區切換 的可控性,全都繫於你的 DNS 架構與紀錄策略是否健全。設定不當,輕則抓不到新 IP、郵件被當垃圾信,重則整站解析中斷、SSL 憑證續期失敗、搜尋引擎抓取連續錯誤。這篇文章不是新手導覽,而是寫給需要對 DNS 做正確決策、能落地實作的網管與網站維運人員。

DNS 架構與運作原理解析

DNS(Domain Name System)是網際網路的分散式階層式命名系統,其核心功能是將人類可讀的網域名稱(如 example.com)解析為機器可理解的 IP 位址(如 192.0.2.12001:db8::1),並反向解析 IP 位址至對應的網域名稱。
整個系統的運作類似一棵倒置的樹,由 根伺服器(Root Server) 位於頂層,往下分為 頂級網域(TLD, Top-Level Domain)伺服器權威 DNS 伺服器(Authoritative DNS Server),最後才到達儲存實際解析紀錄的區域檔案(Zone File)。

一次完整的 DNS 查詢過程,通常經歷以下步驟:

  1. 使用者端請求:瀏覽器或應用程式輸入網址後,會先檢查本地快取(OS 或瀏覽器快取)是否有解析紀錄。
  2. 遞迴解析器(Recursive Resolver)查詢:若本地沒有,請求會送往 ISP 或指定的 DNS 遞迴解析器,例如 Google Public DNS(8.8.8.8)。
  3. 逐層查詢:遞迴解析器會依序詢問根伺服器 → TLD 伺服器(如 .com) → 權威伺服器,直到獲得最終的 IP 位址。
  4. 回傳並快取:解析器將結果回傳給使用者端,並依據 TTL(Time to Live)設定將結果暫存,以減少後續查詢延遲。

這種階層式設計不僅提高了全球 DNS 系統的可用性與容錯性,也確保了網站名稱解析的穩定與一致性。對網管人員來說,理解這個流程是設定與排查 DNS 問題的基礎,因為任何一層節點出錯,都可能導致整個網站無法被正確訪問。

常見 DNS 記錄類型與進階應用

DNS 的威力來自於它的彈性。不同的記錄類型可以為網站、郵件、驗證與安全等服務建立對應的路由,讓每項網路功能都能正確運作。以下是網管人員日常最常接觸的記錄類型與其進階應用場景說明。

A 與 AAAA:將網域導向實體主機 IP

A 記錄是最基本的 DNS 記錄,負責把網域名稱解析到對應的 IPv4 位址。例如:

@    IN    A      192.0.2.10
www  IN    A      192.0.2.10

若你有多台主機提供同一服務(如負載均衡),可以設定多個 A 記錄,讓 DNS 輪流返回不同位址(Round-robin),不過此方式無健康檢查功能,建議搭配負載平衡器或 CDN。

AAAA 記錄則是 IPv6 版本,語法與用途與 A 記錄相同:

@    IN    AAAA   2001:db8::10

若網站支援雙協定,建議同時設定 A 與 AAAA 記錄,以提高全球連線效率與兼容性。

CNAME:建立別名的轉址記錄

CNAME(Canonical Name)讓一個子網域指向另一個網域,常用於讓 www.example.com 導向 example.com,或讓子網域掛載第三方服務(如 GitHub Pages、CDN):

www    IN   CNAME   example.com.
assets IN   CNAME   cdn.provider.net.

注意:根網域不能設 CNAME,因為權威 DNS 規範禁止 @ IN CNAME,這會與 NS、SOA 等必要記錄衝突。若你有 root domain 指向需求(如使用 CDN),請查 DNS 提供商是否支援 ALIAS 或 ANAME 機制。

MX:郵件伺服器指向與送信順序

若你要啟用郵件功能(如企業信箱),必須設定 MX 記錄,格式如下:

@  IN   MX   10   mail.example.com.
@  IN   MX   20   backup-mail.example.com.

數字代表優先順序,數字越小優先級越高。建議設定 1~2 組備援郵件伺服器,並確保該主機的 A 記錄也設定正確。

📌 延伸設定(不可忽略):

  • SPF:設定發信主機名單。
  • DKIM:郵件簽章驗證。
  • DMARC:告訴收件伺服器出問題該怎麼處理郵件(拒收、隔離或通過)。

這三項會透過 TXT 記錄補上,會在下方說明。

TXT:附加資訊與驗證用途的萬用欄位

TXT 記錄用途廣泛,最常見的用途如下:

1. SPF(寄件者政策框架):

@ IN TXT "v=spf1 include:_spf.google.com ~all"

2. DKIM(DomainKeys Identified Mail):

google._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh...QIDAQAB"

說明:這是 Google Workspace 自動產生的 DKIM 公鑰,驗證信件來源。

3. DMARC(寄件人認證機制):

_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-report@example.com"

說明:若 SPF 或 DKIM 驗證失敗,則進行隔離(quarantine)。

DNS 伺服器架構規劃與最佳實務

TWNIC 財團法人台灣網路資訊中心

你可能不會自己搭建 BIND 伺服器或寫 zone file,但作為網站維運人員,你一定會面對 DNS 提供商的選擇與設定流程,而這背後牽涉到一些「架構決策」,會影響網站的可用性、效能、以及容錯能力。

Primary / Secondary 架構:讓你的 DNS 有備援、不中斷

DNS 的基本容錯架構是 主從式設計(Primary / Secondary),也稱為 Master / Slave(傳統術語):

  • Primary DNS(主要伺服器):你真正修改記錄的地方(主控權)。
  • Secondary DNS(次要伺服器):從 Primary 定期同步 Zone 資料,用於備援。

為什麼這很重要?因為 Googlebot、Email Server、訪客請求,不見得都會查詢同一台 DNS。如果你只有單一主機做 DNS,就等於網站解析這條路是「單線通車」。一但主機掛了、雲服務斷線、或 DNS 資料同步出錯,整站會「看得到網址、打不開網站」,最慘甚至連 Mail 也收不到。

實務建議

  • 即使使用 DNS 託管服務,也要問清楚是否有備援機制,並查看是否有 多個 NS 記錄
  • 使用像 Cloudflare、AWS Route53、Gandi Premium DNS 等服務時,它們會自動提供全球部署的多台伺服器,幫你實現備援效果。

DNS Anycast 架構:全球用戶都能快速解析你的網站

當網站流量來自全球(例如:國際電商、跨國品牌、App 或 SaaS 服務),單靠一台 DNS 伺服器,會導致跨區延遲、封包遺失等問題。此時,建議選用支援 Anycast 技術的 DNS 提供商

Anycast 是一種網路路由技術,允許全球多個伺服器同時使用同一個 IP,讓使用者自動連到「就近的節點」。例如:你設在美國、歐洲、台灣三台 DNS,使用者會自動命中最近的機房,提高穩定度與速度。

實務建議

  • 選擇 DNS Hosting 時,確認是否支援 Anycast(多數主流如 Cloudflare、AWS、Google Cloud DNS、DNSPod 都支援)。
  • 若是小型網站,沒必要刻意追求 Anycast,但 至少選有雙節點或分區備援的服務

多家 DNS Hosting 的切換與佈署策略

有些企業為了彈性,會將 DNS 與網址註冊商分離,例如:

  • 網址註冊在 Gandi,但 DNS 託管在 Cloudflare。
  • 或是移轉主機到新的服務商,卻忘記變更 DNS 指向。

這時就需要懂得「授權委派」與 NS 記錄 的切換原理:

  1. 註冊商的後台會顯示「目前使用哪些 DNS 主機」(NS 記錄)。
  2. 當你想換到新的 DNS Hosting(例如從 GoDaddy 換到 Cloudflare),需要去 Registrar 後台更新 NS 記錄。
  3. 切換時建議將 TTL 降到較短(例如 300 秒),等完成後再拉回來,避免延遲太長。

實務建議

  • DNS 切換作業建議預留 24 小時以上緩衝期。
  • 切換後記得確認 SPF/DKIM/DMARC 等 TXT 紀錄是否有正確搬移!

你的網站該選哪種 DNS 架構?

使用情境建議方案
個人網站 / 小型部落格使用註冊商內建 DNS 即可(如 Gandi、Namecheap),不必額外付費
中小企業網站(流量穩定)使用 Cloudflare、AWS Route53 等具備備援與 CDN 整合能力的 DNS
須有 SLA 保證 / 商業網站尋找提供 DNS Analytics、DNS Failover、TTL 管理的 DNS 託管服務
全球化架構 / App 後端服務使用 Anycast DNS 結合自動擴展的雲服務(Cloudflare、Google Cloud DNS)

這一段的目標是讓你 即使不懂架構設計,也能問對問題、選對 DNS 託管商、避免失誤

DNS 安全性與權限控管

DNS 是網站的「門牌系統」,一旦遭到竄改或假冒,不只是網站開不了、郵件收不到,更可能成為駭客攻擊、釣魚詐騙、甚至 SSL 憑證被非法簽發的跳板。本段會說明 DNS 安全的幾個高風險環節,以及實務上能落地的防護策略。

DNSSEC 是什麼?啟用前你必須搞懂的風險與責任

DNSSEC(Domain Name System Security Extensions)是一種用來防止 DNS 資料在查詢過程中被竄改的加密驗證技術。

它的運作方式是在 DNS 回應中加入簽章(RRSIG),搭配公開金鑰(DNSKEY),讓遞迴解析器可以驗證該筆資料是否真的來自權威伺服器、是否未被竄改。

問題來了:不是打開就好

DNSSEC 比 SSL 複雜太多,需要:

  • DNS 提供商與註冊商雙方都支援 DNSSEC
  • 維護 KSK(Key Signing Key)與 ZSK(Zone Signing Key) 的輪替與同步
  • 將 DS(Delegation Signer)紀錄正確地交給頂層(例如 .tw.com 的 TLD)

一旦設定錯誤、Key 過期、DS 未更新,就會導致整個網域 DNS 查詢失敗,比沒開還慘!

實務建議

  • 一般中小企業網站不建議自行啟用 DNSSEC,若主機商代管,可交由其全權管理。
  • 若使用 Cloudflare,DNSSEC 設定相對簡單、安全性可接受,建議開啟。
  • 啟用後要建立金鑰輪替 SOP,並指定維運負責人。

駭客示意圖

快取汙染與 DNS 欺騙:防範內部與外部風險

DNS Cache Poisoning(快取汙染)是指駭客向遞迴解析器注入錯誤的回應,使查詢者拿到錯誤的 IP。這可能會導致:

  • 訪客被導向釣魚網站
  • 郵件送到假冒的收件伺服器
  • 自家服務被導向惡意主機

防範重點

  • 使用信任的遞迴解析器(如 Google 8.8.8.8、Cloudflare 1.1.1.1)取代 ISP 預設 DNS
  • 啟用 DNSSEC(從來源就驗證)
  • 啟用伺服器快取保護與 ACL(Access Control List)限制查詢對象
  • 公司內部 DNS 可強制轉送(forwarding),集中控制來源

DNS 記錄管理權限:不是誰都能改的!

很多團隊把 DNS 記錄設定視為小事,結果以下錯誤狀況屢見不鮮:

  • 工程師誤刪 TXT 記錄,導致郵件驗證失效
  • 廠商幫你建站順手修改 DNS,卻忘記記錄變更
  • 新人誤改 NS 記錄,把整個網站從 Google 上消失

建議作法

  • DNS Hosting 應支援多層帳號權限(例如只讀帳號、限子網域操作)
  • 重大修改前,導入內部 Ticket / 審批流程(簡單如表單簽核也行)
  • 定期匯出 Zone 備份,保留異動前版本
  • 啟用變更記錄(Change Log)與 Email 通知功能,誰動過、什麼時候一目了然

小心 TXT/SPF 記錄被覆蓋,網站可用但郵件全壞

實務上最常見的 DNS 安全漏洞,不是被攻擊,而是 自己不小心「覆蓋掉原本的 TXT 紀錄」。尤其是:

  • 啟用第三方信件服務(如 Mailchimp、Zoho Mail)時,照說明加了一組 SPF,卻沒合併原本那組,導致只剩新服務的發信權限。
  • 多人維護網站,Google 驗證、Facebook Domain Verify、其他系統設定混雜在一起,一不小心刪錯就無法驗證。

實務建議

  • 對所有 TXT 紀錄(尤其 SPF)採用「合併策略」:用空格分隔,每個 include/指令都保留。
  • 所有 TXT 紀錄應使用備份紀錄(Versioning)方式管理,每次修改前都要備份。

效能最佳化與故障排除流程

DNS 雖然只是「把網址指到主機」的系統,但它的查詢速度與穩定性,會直接影響網站首屏載入時間、Googlebot 抓取體驗、甚至電子報開信率。這一段,我們將聚焦在兩個主題:效能最佳化策略常見 DNS 錯誤的排查方法

TTL 設定:不是越短越好,也不是設死不動

TTL(Time to Live)指的是每筆 DNS 紀錄快取的時間(以秒為單位)。太短會讓解析器不斷查詢、加重負載;太長則在更換 IP 或服務時產生殘留舊紀錄的延遲問題。

常見 TTL 建議值:

紀錄類型建議 TTL原因與情境
A / AAAA300 ~ 3600 秒一般網站建議 5 分鐘~1 小時,可平衡變更與效能
MX / TXT3600 ~ 86400 秒郵件相關變化不頻繁,設長一點提升穩定性
CNAME600 秒起跳若用於第三方服務(如 CDN),不宜設太短
切換前(如搬主機)調整至 60 ~ 300 秒提前 1 天將 TTL 調短,切換完成後調回

操作提示:

  • 不要預設值都設 86400(24hr),你未來可能會後悔。
  • 若使用 Cloudflare,請注意其 DNS 本身有快取機制,TTL 與代理狀態會一起影響行為。

CDN 整合時的 DNS 考量

使用 CDN(如 Cloudflare、Quic.Cloud、Akamai)時,通常會將 DNS CNAME 指向 CDN 的加速節點。但你需要注意:

  1. CNAME Flattening / ALIAS 機制:大多數 CDN 會要求你把 root domain(如 example.com)也指向他們,但 CNAME 不能用在根網域。因此,DNS 提供商必須支援「CNAME Flattening」或 ALIAS 機制。Cloudflare、Gandi、Route53 等都支援。
  2. NS 與 DNS Host 切換需搭配 CDN 設定同時調整,否則會發生「DNS 看起來正確,但頁面打不開」的問題。
  3. 啟用 CDN 的 Proxy 機能時,DNS 回應的 IP 是 CDN,不是原始伺服器 IP。有時候這會導致某些驗證服務(如 API 驗證、SSL 憑證確認)失敗,需使用「DNS only」模式暫時繞過。

DNS 故障排查流程(含指令)

當網站「打不開」時,以下是最常見的 DNS 問題來源與對應排查方式:

問題現象可能原因排查方式(指令)
網址輸入後無反應DNS 沒解析成功ping example.comnslookup example.com
開啟很慢或偶爾失敗TTL 太短、遞迴解析失效檢查 TTL、換用 8.8.8.8 試試看
CDN 已設定但無效CNAME 設錯、Proxy 未啟用登入 CDN 管理台確認 DNS 狀態
收不到信MX、SPF、DKIM、DMARC 記錄錯誤或漏設ping MX example.com、查看 G Suite / Microsoft 驗證狀態
SSL 憑證續期失敗DNS 驗證 TXT 記錄未設定或延遲ping TXT _acme-challenge.example.com

建立你的 DNS 檢查習慣清單(維運自救包)

項目建議頻率工具
Zone 記錄是否正確完整每月檢查一次DNS Hosting 管理台、dig
NS 是否有異動每季檢查whois、註冊商通知信
SPF/DKIM 是否正常每次新增郵件服務時Google Admin Toolbox、mail-tester.com
DNS 傳播狀況每次搬遷、切換https://dnschecker.org
備份 zone file每次異動前DNS Hosting 匯出、BIND zone 檔案

你的網站跑得穩不穩,從 DNS 就決定了一半

DNS 並不是冷冰冰的技術細節,而是一道網站進入世界的門。它的設計不會每天出錯,但一旦出錯,影響範圍廣、診斷困難、損失實質。因此,與其發生問題後手忙腳亂,不如現在就建立正確的 DNS 維運觀念與設定習慣,讓你的網站無論升級、搬遷、改版、攻擊都能穩穩在線。

DNS 只是網站基礎的一環

真正讓網站跑得快、被搜尋引擎喜歡、能帶來客戶的,不只是 DNS。
如果你正在規劃新網站或 SEO 內容策略,這才是我們最擅長的領域。

立即聯絡我們,開始規劃你的專屬轉換任務線

※ 我的實務經驗主要在網站與中小企業常見的 DNS 維運,例如基本解析、郵件驗證、CDN 部署等。
若涉及較大型系統,會有不同規格與做法。
如果內容有不夠精確的地方,歡迎前輩們提醒,請溫柔指教我 😅

返回頂端