區域檔案

DNS 區域檔案是一個基於文字的資料庫檔案,包含特定域或區域的所有 DNS 記錄。它定義了域名與 IP 位址、郵件伺服器和其他資源之間的對應關係。區域檔案儲存在權威名稱伺服器上,並遵循 RFC 1035 中規定的標準化格式。每個區域檔案必須以起始授權記錄(SOA)開頭,並可以包含各種其他記錄類型,如 A、AAAA、CNAME、MX 和 TXT 記錄。

How it works

區域檔案是 DNS 區域的權威資訊來源 —— DNS 命名空間中由特定名稱伺服器負責的部分。區域檔案是純文字且人類可讀的,這使得它們易於編輯和管理。它們包含指令(如 $ORIGIN 和 $TTL)和資源記錄,定義區域內的域名應如何解析。

區域檔案遵循特定的結構和格式: **檔案結構:** 1. **指令**(可選但常見): - $ORIGIN:定義區域的基礎域名(例如,$ORIGIN example.com.) - $TTL:為檔案中的所有記錄設定預設 TTL(例如,$TTL 86400) 2. **SOA 記錄**(必需,必須位於首位): 每個區域檔案必須以恰好一條 SOA(起始授權)記錄開始,包含區域的管理資訊 3. **NS 記錄**(必需): 指定區域的權威名稱伺服器 4. **其他資源記錄**: A、AAAA、CNAME、MX、TXT 和其他定義區域組態的記錄類型 **記錄格式:** 每條記錄遵循以下順序: 主機名 TTL 類別 類型 資料 @ 符號是一個特殊的簡寫,表示區域的起點(根域)。例如,在 example.com 的區域檔案中,@ 表示 example.com. **區域傳輸:** 區域檔案從主(master)名稱伺服器傳輸到從(slave)名稱伺服器以提供冗餘。SOA 記錄的序列號追蹤區域版本 —— 當它發生變化時,從伺服器會知道需要請求區域檔案的新副本。這個過程稱為區域傳輸。

Key Points

  • 區域檔案是包含域或區域的所有 DNS 記錄的文字檔案
  • 必須以 SOA 記錄開頭,然後是 NS 記錄,再是其他記錄類型
  • @ 符號表示區域起點(根域)
  • $ORIGIN$TTL 這樣的指令為整個區域設定預設值
  • 區域檔案根據 SOA 序列號在主名稱伺服器和從名稱伺服器之間傳輸

Common Use Cases

  • 權威 DNS 組態: 在權威名稱伺服器上定義域的所有 DNS 記錄,作為域名解析的權威來源
  • 區域傳輸和複製: 將 DNS 資料從主名稱伺服器同步到從名稱伺服器,以實現冗餘和負載分配
  • DNS 遷移和備份: 從一個 DNS 提供商匯出區域檔案並匯入到另一個,或建立 DNS 組態的備份
  • 批量 DNS 管理: 透過編輯單個文字檔案而不是使用 Web 介面,高效管理數百或數千條 DNS 記錄

code 區域檔案結構示例

TypeHost / NameValue / Points toTTL
指令$ORIGINexample.com.
指令$TTL86400
SOA@ns1.example.com. admin.example.com. 2025121301 86400 7200 3600000 172800
NS@ns1.example.com.
NS@ns2.example.com.
A@192.0.2.1
Awww192.0.2.1
MX@10 mail.example.com.

* 典型的區域檔案以指令和 SOA 記錄開頭,然後是 NS 記錄和其他資源記錄。

Frequently Asked Questions

區域和域之間有什麼區別?expand_more
域是 DNS 層次結構中的一個名稱(如 example.com),而區域是包含 DNS 記錄的管理空間。一個區域可以涵蓋單個域,或一個域加子域,甚至多個域。例如,你可能有一個 example.com 的區域檔案,它包含 example.com 和 subdomain.example.com 的記錄,或者你可以將 subdomain.example.com 委派給其自己的獨立區域及其自己的區域檔案。
我需要手動編輯區域檔案嗎?expand_more
大多數使用者不需要手動編輯區域檔案。DNS 管理介面(Web 控制面板、API)會在你新增或修改記錄時自動處理區域檔案更新。然而,瞭解區域檔案格式對以下情況很有用:批量 DNS 操作、在 DNS 提供商之間遷移、排查 DNS 問題,或管理你自己的權威名稱伺服器。如果你執行像 BIND 這樣的 DNS 伺服器軟體,你將直接使用區域檔案。
為什麼 SOA 記錄必須是區域檔案的第一條記錄?expand_more
SOA 記錄必須是第一條記錄,因為它定義了整個區域的基本參數,包括主名稱伺服器、管理員聯絡方式以及區域傳輸的時間參數。從名稱伺服器在區域傳輸期間首先檢查 SOA 記錄,以比較序列號並確定是否需要更新其區域副本。將其放在首位是 DNS 標準(RFC 1035)中規定的要求。
如果我忘記增加 SOA 序列號會發生什麼?expand_more
如果你修改了區域檔案中的 DNS 記錄但沒有增加 SOA 序列號,從名稱伺服器在其刷新檢查期間將不會檢測到更改。它們將繼續從其快取的區域檔案中提供過時的資料。這可能導致不一致,即主伺服器有最新資料,但從伺服器有陳舊資料。每當你對區域檔案進行任何更改時,都要增加序列號(即使只增加 1)。
我可以檢視我的域的區域檔案嗎?expand_more
你無法從大多數託管 DNS 服務直接下載確切的區域檔案,但你可以透過 DNS 查詢工具或你的提供商的控制面板檢視單個記錄。要獲得完整檢視,可以使用 DNS 查詢工具如 dig AXFR example.com(如果允許區域傳輸,出於安全原因通常不允許)或你的 DNS 託管服務提供的匯出功能。一些提供商允許你以標準格式匯出區域檔案,用於備份或遷移目的。