權威記錄起始(英語:start of authority record,簡稱 SOA)是域名系統(DNS)的一種包含有關區域的管理信息(特別是關於區域傳輸的)的記錄。SOA記錄的格式在 RFC 1035[1] 中被定義。

背景

通常名稱服務器被設置在集群中。每個集群內的數據庫通過區域傳輸同步。區域的SOA記錄包含控制區域傳輸的數據——序列號和不同的時間跨度。

記錄也包括了區域的負責人的電子郵件地址以及主要名稱服務器的名稱。通常SOA記錄位於區域頂部,沒有SOA記錄的區域是不符合RFC 1035的要求的。

結構

NAME
區域名字
TYPE
SOA,start of authority 的縮寫
CLASS
區域類型(幾乎都是IN
TTL
存活時間
MNAME
區域的主要名稱服務器
RNAME
區域負責人的電子郵件地址。(通常,地址被編碼為一個名稱。地址@前的部分成為名稱的第一個部分,@後的部分成為名稱的剩餘部分。在區域文件格式中,第一部分的點被反斜槓轉義。例如,[email protected]會在區域文件中被表示為john\.doe.example.com
SERIAL
區域的序列號。如果附屬於此服務器的輔助名稱服務器觀察到此數字增加,則從服務器將假定該區域已更新並啟動區域轉移
REFRESH
輔助名稱服務器應向主服務器查詢SOA記錄以檢測區域更改的周期秒數。對於小而穩定的區域推薦86400秒(24小時)[4]
RETRY
如果主服務器沒有響應,輔助服務器重新請求SOA記錄的秒數,必須小於REFRESH。對於小而穩定的區域推薦7200秒(2小時)[4]
EXPIRE
如果主服務器沒有響應,輔助服務器應該停止應答請求的秒數,必須大於REFRESHRETRY的和。對於小而穩定的區域推薦3600000秒(1000小時)[4]
MINIMUM
用於計算消極響應緩存的存活時間。權威名稱服務器採用TTLMINIMUM中較小的一個作為消極響應中的TTL發送。解析器使用返回的TTL以得知應該將消極響應緩存多久。對於小而穩定的區域推薦172800秒(2天)[4]。最初,該字段的含義是該區域中資源記錄的最小TTL值,RFC 2308中將其改為了現在的含義[5]

BIND語法的例子

$TTL 86400
@   IN SOA    ns.icann.org. noc.dns.icann.org. (
        2020080302  ; 序列号
        7200        ; 刷新时间
        3600        ; 重试时间
        1209600     ; 过期时间
        3600        ; 消极响应缓存 TTL
)

序列號更改

已經建立了幾種方法來更新區域的SERIAL字段:

  • 從1開始,每次遞增
  • 最後更改的日期(ISO 8601基本格式),並附帶兩位數的計數器(例如,2017031405是14 March 2017的第五次更改)。這種方法被RFC 1912所推薦。[6]
  • 區域數據文件的最後一次修改時間,表示為UNIX時間戳。這種方法是djbdns套件[7]的默認方法。儘管其使用32位計數器,由於序列號算法的影響,它不易受到2038年問題的影響。

參考資料

  1. ^ Mockapetris, P.. Domain names - implementation and specification. 1987-11. RFC 1035. . 
  2. ^ Dynamic Updates in the Domain Name System (DNS UPDATE). April 1997 [2017-12-28]. RFC 2136. 
  3. ^ A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY). August 1996 [2017-12-28]. RFC 1996. 
  4. ^ 4.0 4.1 4.2 4.3 Jun 1999, Publication date: 07. Recommendations for DNS SOA Values. RIPE Network Coordination Centre. [2022-12-25]. (原始內容存檔於2022-12-25). 
  5. ^ Negative Caching of DNS Queries (DNS NCACHE). March 1998 [2017-12-28]. RFC 2308. 
  6. ^ Common DNS Operational and Configuration Errors. February 1996 [2017-12-28]. RFC 1912. 
  7. ^ How to run a DNS server in place of an existing BIND server. [2022-12-25]. (原始內容存檔於2022-12-25).