21.6 區域檔案

需要兩種類型的區域檔案。一個會指派 IP 位址給主機名稱,另一個的作用恰恰相反︰為 IP 位址提供主機名稱。

提示: 在區域檔案中使用點符號

每則訊息前的 . 在區域檔案中具有重要意義。如果主機名稱最後不用 . 結尾,則會附加區域。與完整網域名稱一同指定的完整主機名稱必須以 . 結尾,才能避免再次附加網域。缺少點符號或錯置其位置最經常造成名稱伺服器組態錯誤。

第一個要考慮的情況是負責網域 example.com 的區域檔案 example.com.zone,如範例 21-6 中所示。

範例 21-6 檔案 /var/lib/named/example.com.zone

1.  $TTL 2D 
2.  example.com. IN SOA      dns  root.example.com. ( 
3.               2003072441  ; serial
4.               1D          ; refresh
5.               2H          ; retry
6.               1W          ; expiry
7.               2D )        ; minimum
8.  
9.               IN NS       dns 
10.              IN MX       10 mail
11. 
12. gate         IN A        192.168.5.1 
13.              IN A        10.0.0.1 
14. dns          IN A        192.168.1.116 
15. mail         IN A        192.168.3.108 
16. jupiter      IN A        192.168.2.100
17. venus        IN A        192.168.2.101
18. saturn       IN A        192.168.2.102
19. mercury      IN A        192.168.2.103
20. ntp          IN CNAME    dns 
21. dns6         IN A6  0    2002:c0a8:174::
行 1:

$TTL 定義應該套用到此檔案中所有項目的預設有效時間。在此範例中,項目的有效時間是兩天 (2 D)。

行 2:

這是 SOA (授權開始) 控制記錄開始的地方:

  • 最前面的位置中的 example.com 是要管理的網域名稱。名稱以 . 結尾,以免再次附加區域。或者,可以在此輸入 @,這樣會從 /etc/named.conf 中的對應項目擷取區域。

  • IN SOA 之後是名稱伺服器的名稱,做為此區域的主伺服器。名稱會從 dns 擴充為 dns.example.com,因為它沒有以 . 結尾。

  • 後面跟著此名稱伺服器之負責人的電子郵件地址。因為 @ 符號已經具有特殊意義,所以在此輸入 . 來代替。對於 root@example.com,項目必須寫成 root.example.com.。每則訊息前的 .,以防止新增區域。

  • ( 將 ) 之前的所有行都包含在 SOA 記錄中。

行 3:

serial number 是任意號碼,每次此檔案變更時就會增加。通知次要名稱伺服器 (從屬伺服器) 發生變更,這是必要的。對於這種情形,十個數字的日期及執行號碼,寫法是 YYYYMMDDNN,已成為習慣格式。

行 4:

refresh rate 指定次要名稱伺服器確認區域 serial number 的時間間隔。在此例中,是一天。

行 5:

retry rate 指定在發生錯誤時次要名稱伺服器嘗試再次聯絡主要伺服器的時間間隔。在此例中,是兩小時。

行 6:

expiration time 指定次要名稱伺服器無法重新取得與主要伺服器的聯絡時,在此時間範圍後丟棄快取資料。在此例中,是一週。

行 7:

SOA 記錄中的最後一個項目,指定 negative caching TTL — 亦即可在此時間內快取其他伺服器無法解析之 DNS 查詢的結果。

行 9:

IN NS 指定負責此網域的名稱伺服器。dns 會擴充為 dns.example.com,因為它沒有以 . 結尾。可能會有數行與此類似 — 主要名稱伺服器佔用一行,每部次要名稱伺服器也各自佔用一行。如果 /etc/named.conf 中的 notify 不是設定為 no,此處列出的所有名稱伺服器會收到區域資料變更的通知。

行 10:

MX 記錄指定用於接收、處理和轉遞網域 example.com 之電子郵件的郵件伺服器。在此範例中,郵件伺服器為主機 mail.example.com。主機名稱前的號碼是偏好設定值。如果有多個 MX 項目,會先優先使用具有最小值的郵件伺服器,而如果郵件無法送到此伺服器,就會嘗試使用下一個較高的值。

行 12–19︰

這些是指派給主機名稱的一或多個 IP 位址的實際位址記錄。此處列出的名稱不含 .,因為它們不包含其網域,所以會將 example.com 新增到所有名稱。會將兩個 IP 位址指派給主機 gate,因為它有兩張網路卡。若主機位址是傳統位址 (IPv4),記錄會使用 A 標示。如果位址是 IPv6 位址,則會使用 AAAA 標示該項。

附註: IPv6 語法

IPv6 記錄與 IPv4 的語法稍有不同。因為可以分段,所以必須在位址前提供有關遺漏位元的資訊。若要只用所需的數字「0」填寫 IPv6 位址,則在位址的正確位置新增兩個冒號。

pluto     AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0
pluto     AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0
行 20:

別名 ntp 可以用來定址 dns (CNAME 表示 canonical name (標準名稱))。

虛擬網域 in-addr.arpa 用來反向查詢 IP 位址到主機名稱。它會以反向標記法附加到位址的網路部分。因此 192.168 會解析為 168.192.in-addr.arpa。請參閱範例 21-7

範例 21-7 反向查詢

1.  $TTL 2D
2.  168.192.in-addr.arpa.   IN SOA dns.example.com. root.example.com. (
3.                          2003072441      ; serial
4.                          1D              ; refresh
5.                          2H              ; retry
6.                          1W              ; expiry
7.                          2D )            ; minimum
8.
9.                          IN NS           dns.example.com.
10. 
11. 1.5                     IN PTR          gate.example.com. 
12. 100.3                   IN PTR          www.example.com. 
13. 253.2                   IN PTR          cups.example.com. 
行 1:

$TTL 定義套用到此處所有項目的標準 TTL。

行 2:

組態檔應該為網路 192.168 啟用反向查詢。假設區域稱為 168.192.in-addr.arpa,則不應該新增到主機名稱。因此輸入的主機名稱都使用完整格式 — 附帶網域並以 . 做為結尾。其餘的項目與之前 example.com 範例中所述的項目對應。

行 3 – 7︰

請參閱之前的 example.com 範例。

行 9:

同樣地,此行指定負責此區域的名稱伺服器。不過,這一次,以完整格式輸入名稱,亦即包含網域以及結尾的 .

行 11 – 13︰

這些是相關主機上 IP 位址的指標記錄提示。行的開頭僅輸入了 IP 位址的最後一部分,結尾無 .。對此附加區域 (不加上 .in-addr.arpa) 會造成完整 IP 位址變成反向順序。

通常,不同 BIND 版本之間的區域傳輸應該是沒有問題的。