區域檔案

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

[Tip]在區域檔案中使用點符號

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

第一個要考慮的情況是負責領域 world.cosmos 的區域檔案 world.zone,如 範例 33.6 「檔案 /var/lib/named/world.zone」 中所示。

範例 33.6. 檔案 /var/lib/named/world.zone

$TTL 2D
world.cosmos. IN SOA      gateway  root.world.cosmos. (
            2003072441  ; serial
            1D          ; refresh
            2H          ; retry
            1W          ; expiry
            2D )        ; minimum

            IN NS       gateway
            IN MX       10 sun

gateway     IN A        192.168.0.1
            IN A        192.168.1.1
sun         IN A        192.168.0.2
moon        IN A        192.168.0.3
earth       IN A        192.168.1.2
mars        IN A        192.168.1.3
www         IN CNAME    moon

行 1:

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

行 2:

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

  • 首位上的 world.cosmos 為要管理的網域名稱。名稱以 . 結尾,以免第二次附加區域。或者,可以在此輸入 @,這樣會從 /etc/named.conf 中的對應項目擷取區域。

  • IN SOA 之後是名稱伺服器的名稱,做為此區域的主伺服器。名稱會從 gateway 擴展為 gateway.world.cosmos,因為它沒有用 . 結尾。

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

  • ( 將所有到 ) 的行都包含在 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 指定負責此網域的名稱伺服器。gateway 會擴充為 gateway.world.cosmos,因為它沒有以 . 結尾。可能會有數行與此類似 — 主要名稱伺服器佔用一行,每部次要名稱伺服器也各自佔用一行。如果 /etc/named.conf 中的 notify 不是設定為 no,此處列出的所有名稱伺服器會收到區域資料變更的通知。

行 10:

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

行 12–17︰

這些是指派給主機名稱的一或多個 IP 位址的實際位址記錄。此處列出的名稱不含 .,因為它們不包含其網域,所以會將 world.cosmos 新增到所有名稱。兩個 IP 位址指派給主機 gateway,因為它有兩張網路卡。如果主機位址是傳統位址 (IPv4),記錄會使用 AAAA 標示。如果位址是 IPv6 位址,項目會使用 AAAA 0 標示。IPv6 位址之前的記號只包括 AAAA,現在已廢除不用。

[Note]IPv6 語法

IPv6 記錄與 IPv4 的語法稍有不同。因為可以分段,所以必須在位址前提供有關遺漏位元的資訊。即使您要使用完全未分段的位址,也必須提供此資訊。對於使用如下語法的 IPv4 記錄

 pluto IN            AAAA 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto IN            AAAA 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

您在 IPv6 格式中必須新增有關遺漏位元的資訊。因為上述範例是完整的 (未遺漏任何位元),所以此記錄的 IPv6 格式為:

 pluto  IN            AAAA 0 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto  IN            AAAA 0 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

請勿搭配使用 IPv4 位址與 IPv6 對應。

行 18:

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

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

範例 33.7. 反向查詢

    


$TTL 2D
1.168.192.in-addr.arpa. IN SOA gateway.world.cosmos. root.world.cosmos. (
                        2003072441      ; serial
                        1D              ; refresh
                        2H              ; retry
                        1W              ; expiry
                        2D )            ; minimum

                        IN NS           gateway.world.cosmos.

1                       IN PTR          gateway.world.cosmos.
2                       IN PTR          earth.world.cosmos.
3                       IN PTR          mars.world.cosmos.

行 1:

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

行 2:

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

行 3 – 7︰

請參閱之前的 world.cosmos 範例。

行 9:

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

行 11 – 13︰

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

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