阿克森雲登入 / 註冊English/中文/cn繁體/tw

第 2 課 · 輸入網址按下回車後:DNS 全程之旅

互聯網從零 · L1 · 第 2 / 6 節 · 約 3 分鍾

瀏覽器只認 IP 地址,不認域名。把 example.com 翻譯成 IP 的系統就是 DNS——互聯網的電話簿。它是你按下回車後發生的第一件事,也是最容易被忽視的故障點:解析錯了,後面一切都不對。

一次解析的完整鏈條

瀏覽器緩存 → 操作系統緩存 → 本地遞歸解析器(如運營商 DNS 或 1.1.1.1)→ 根服務器 → 頂級域(.com)服務器 → 該域名的權威 DNS。拿到最終答案後,每一層按 TTL 緩存,下次同樣的問題就地回答,不再長途跋涉。

DNS 解析鏈條示意圖:瀏覽器緩存到系統緩存到遞歸解析器,再到根、頂級域、權威 DNS

爲什麼要分這麼多層?因爲規模。全球域名以億計,任何單點都存不下也查不動——分層委派讓每一層只回答「下一跳該問誰」,把問題逐級收斂到最終負責人(權威 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 通常立竿見影。

本節小結

  1. DNS 是分層委派的查詢系統:緩存 → 遞歸解析器 → 根 → 頂級域 → 權威,答案按 TTL 逐層緩存;分層是爲了規模。
  2. A/AAAA/CNAME/NS/MX/TXT 六類記錄覆蓋建站與郵件的絕大多數需求;根域不能用 CNAME,遷移前先降 TTL。
  3. 排查用 dig 三板斧:+short 看答案、+trace 看委派、@公共DNS 排除本地緩存;SERVFAIL 查權威側,「沒生效」查緩存層。