20.5. 區域檔案

需要兩種類型的區域檔案。其中一個指定 IP 位址給主機名稱,而另一個則相反:提供主機名稱給 IP 位址。

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

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

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

範例 20.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),記錄會使用 A 標示。如果位址是 IPv6 位址,項目會使用 A6 標示。IPv6 位址之前的記錄是 AAAA,現在已廢除不用。

[Note]A6 語法

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

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

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

 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 對應。如果主機擁有 IPv4 位址,它會使用 A 記錄,而非 A6 記錄。

行 18:

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

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

範例 20.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 版本之間的區域傳輸應該是沒有問題的。