第 2 課 · 輸入網址按下回車後:DNS 全程之旅
瀏覽器只認 IP 地址,不認域名。把 example.com 翻譯成 IP 的系統就是 DNS——互聯網的電話簿。它是你按下回車後發生的第一件事,也是最容易被忽視的故障點:解析錯了,後面一切都不對。
一次解析的完整鏈條
瀏覽器緩存 → 操作系統緩存 → 本地遞歸解析器(如運營商 DNS 或 1.1.1.1)→ 根服務器 → 頂級域(.com)服務器 → 該域名的權威 DNS。拿到最終答案後,每一層按 TTL 緩存,下次同樣的問題就地回答,不再長途跋涉。
爲什麼要分這麼多層?因爲規模。全球域名以億計,任何單點都存不下也查不動——分層委派讓每一層只回答「下一跳該問誰」,把問題逐級收斂到最終負責人(權威 DNS)。
必須認識的記錄類型
| 記錄 | 作用 | 典型場景與注意點 |
|---|---|---|
| A | 域名 → IPv4 地址 | 網站指向服務器,最基礎的一條 |
| AAAA | 域名 → IPv6 地址 | 雙棧部署;移動網絡用戶受益明顯 |
| CNAME | 域名 → 另一個域名 | 接 CDN / 對象存儲;根域(@)不能用 CNAME |
| NS | 該域名交給哪臺 DNS 負責 | 在註冊商處修改;換 DNS 服務商必動 |
| MX | 收信服務器與優先級 | 企業郵箱必配;數字越小優先級越高 |
| TXT | 任意文本 | 域名所有權驗證、SPF 發信白名單 |
TTL 決定生效速度
TTL 是各級緩存保存該記錄的秒數。計劃遷移服務器前,提前 1–2 天把 TTL 降到 300–600 秒,切換當天生效更快;穩定後再調回 3600 秒以降低查詢壓力。「全球生效要 48 小時」通常只發生在 NS 變更或個別運營商緩存頑固時,普通 A 記錄變更多數幾分鍾內可用——用下面的命令可以立刻驗證,不必幹等。
動手:六條命令喫透 DNS
# 1) 查 A 記錄(+short 只看答案)
dig example.com +short
# 2) 查完整解析鏈路:用了哪臺遞歸、TTL 多少
dig example.com
# 3) 從根開始逐級追蹤(看 NS 委派鏈是否完整)
dig example.com +trace
# 4) 查郵件與文本記錄(SPF 在 TXT 裏)
dig example.com MX +short && dig example.com TXT +short
# 5) 指定公共 DNS 對比(排除本地緩存污染)
dig @223.5.5.5 example.com +short && dig @1.1.1.1 example.com +short
# 6) 反查 IP 的 PTR(郵件服務器常被收件方檢查)
dig -x 服務器IP +short
常見故障三個樣
- SERVFAIL:多爲權威側配置錯誤(NS 指向失效、DNSSEC 籤名損壞)——先用
+trace看委派鏈斷在哪一層; - 改了記錄「沒生效」:幾乎總是某一層緩存未過期——換
dig @公共DNS驗證,公共 DNS 已更新而本地沒有,就是本地緩存問題; - 能 ping 通 IP 卻打不開域名:解析層問題實錘——檢查 A 記錄是否存在、是否指錯 IP、根域是否誤用了 CNAME。
DNS 與安全的關系
DNS 默認不加密也不籤名,因此存在被劫持與投毒的可能:公共 Wi-Fi 下「網站變廣告」多數是解析被劫持。防護的入門動作:服務器與個人設備改用可信的公共 DNS;對外業務開啓 DNSSEC(由 DNS 服務商幫助);域名註冊商處務必開二次驗證——解析權限失守等於整個站點失守。
動手:給自己的域名配齊一套記錄
以 example.com 指向服務器 203.0.113.10 爲例,一套建站加郵件的最小記錄集是:
# A 記錄:根域與 www 指向服務器(TTL 先設 600,穩定後調 3600)
example.com. 600 IN A 203.0.113.10
www.example.com. 600 IN A 203.0.113.10
# MX 記錄:收信交給郵件服務商(數字爲優先級,越小越先)
example.com. 3600 IN MX 10 mx1.mailprovider.com.
# TXT 記錄:SPF 聲明誰有權以你的域名發信
example.com. 3600 IN TXT "v=spf1 include:mailprovider.com -all"
配完逐條用 dig 驗證;MX 與 SPF 生效後再發一封測試郵件到 Gmail,查看「顯示原始」確認 SPF 通過——發信信譽是從第一天開始積累的。
DNS 與郵件到達率:SPF、DKIM、DMARC 一句話版
- SPF(TXT 記錄):聲明「哪些服務器有權以我的域名發信」,收件方據此拒收冒名信;
- DKIM(TXT 記錄 + 私鑰籤名):給每封郵件蓋防僞章,途中被改立刻能看出來;
- DMARC(TXT 記錄):告訴收件方「SPF/DKIM 失敗怎麼辦」,先用 p=none 收報表觀察,再逐步收緊到隔離或拒收。
三件套缺一,業務郵件進垃圾箱的概率大增。企業郵箱服務商都會給出對應的記錄值,照抄進解析面板即可。
公共 DNS 怎麼選
服務器與辦公網建議配置兩家以上公共 DNS 互爲備份(如 223.5.5.5 與 1.1.1.1),避免單一解析商故障導致全站「打不開」。選擇標準很簡單:穩定、響應快(可以用 dig 的 Query time 對比)、幫助 ECS(按用戶位置返回就近結果)。個人設備同理——解析被劫持的廣告注入,換可信公共 DNS 通常立竿見影。
本節小結
- DNS 是分層委派的查詢系統:緩存 → 遞歸解析器 → 根 → 頂級域 → 權威,答案按 TTL 逐層緩存;分層是爲了規模。
- A/AAAA/CNAME/NS/MX/TXT 六類記錄覆蓋建站與郵件的絕大多數需求;根域不能用 CNAME,遷移前先降 TTL。
- 排查用 dig 三板斧:+short 看答案、+trace 看委派、@公共DNS 排除本地緩存;SERVFAIL 查權威側,「沒生效」查緩存層。