跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / 網域名稱系統
適用範圍 SUSE Linux Enterprise Server 15 SP3

31 網域名稱系統

必須使用 DNS (網域名稱系統) 將網域和主機名稱解析為 IP 位址。例如,藉由這種方式,會給主機名稱 jupiter 指定 IP 位址 192.168.2.100。在設定您自己的名稱伺服器前,請參閱第 19.3 節 「名稱解析」 中有關 DNS 的一般資訊。以下組態範例使用預設 DNS 伺服器 - BIND。

31.1 DNS 詞彙

區域

網域名稱空間細分成一個個區域。例如,如果您擁有 example.com,您就擁有 com 網域的 example 區段 (或區域)。

DNS 伺服器

DNS 伺服器是為網域維護名稱和 IP 資訊的伺服器。您可以擁有用於主要區域的主要 DNS 伺服器、用於從屬區域的次要伺服器、或沒有任何區域處理快取功能的從屬伺服器。

主要區域 DNS 伺服器

主要區域包含您網路上的所有主機,而且 DNS 伺服器主要區域會儲存您的網域中所有主機最新的記錄。

從屬區域 DNS 伺服器

從屬區域是主要區域的副本。從屬區域 DNS 伺服器會用區域傳輸作業從其主伺服器取得區域資料。只要從屬區域 DNS 伺服器擁有有效 (未過期) 的區域資料,它就有權代表區域回應。如果從屬無法取得區域資料的新副本,它就會停止代表區域回應。

轉遞者

轉遞者是當您的 DNS 伺服器無法答覆查詢時,它應該將其傳送至的目標 DNS 伺服器。為了在同一個組態中啟用不同的組態來源,系統使用了 netconfig (並請參閱 man 8 netconfig)。

記錄

記錄是有關名稱和 IP 位址的資訊。有關支援的記錄及其語法,請參閱 BIND 文件中的說明。一些特殊的記錄如下:

NS 記錄

NS 記錄會告訴名稱伺服器哪些機器負責管理特定網域區域。

MX 記錄

MX (郵件交換) 記錄會說明在網際網路上傳送郵件時要聯絡的機器。

SOA 記錄

SOA (起始授權) 記錄是區域檔案中的第一筆記錄。SOA 記錄是在使用 DNS 同步化多部電腦之間的資料時使用。

31.2 安裝

若要安裝 DNS 伺服器,請啟動 YaST 並選取「軟體 ›  軟體管理」。選擇「檢視」 › 「模式」,然後選取「DHCP 和 DNS 伺服器」。請確認安裝個別套件,以完成此安裝程序。

或者,在指令行中使用以下指令:

tux > sudo zypper in -t pattern dhcp_dns_server

31.3 利用 YaST 進行組態

使用 YaST DNS 模組可以設定區域網路的 DNS 伺服器。當您第一次啟動模組時,一個精靈會啟動,提示您指定有關伺服器管理的一些設定。完成此初步設定,即會產生基本的伺服器組態。使用進階模式可以處理更進階的組態任務,如設定 ACL、記錄、TSIG 金鑰和其他選項。

31.3.1 精靈組態

精靈包含三個步驟或對話方塊。在對話方塊的適當位置,您可以進入進階組態模式。

  1. 第一次啟動模組時,會開啟圖形 31.1 「DNS 伺服器安裝:轉遞者設定」中所示的「轉遞者設定」對話方塊。「本地 DNS 解析規則」允許設定以下選項:

    • 已停用合併轉遞者

    • 自動合併

    • 已啟用合併轉遞者

    • 自訂組態 — 如果已選取「自訂組態」,則可以指定「自訂規則」;依預設,在已選取「自動合併」的情況下,「自訂規則」將設定為「自動」,但是,您可以在此處設定介面名稱,或者從 STATICSTATIC_FALLBACK 這兩個特殊規則名稱中做出選擇。

    在「本地 DNS 解析轉遞者」中,指定要使用的服務:「使用系統名稱伺服器」、「此名稱伺服器 (bind)」或「本地 dnsmasq 伺服器」。

    如需有關所有這些設定的詳細資訊,請參閱 man 8 netconfig

    DNS 伺服器安裝:轉遞者設定
    圖 31.1︰ DNS 伺服器安裝:轉遞者設定

    轉遞者是指當您的 DNS 伺服器無法答覆查詢時,將查詢傳送至的目標 DNS 伺服器。請輸入它們的 IP 位址,然後按一下「新增」

  2. DNS 區域」對話方塊包含數個部分,負責管理區域檔案,如第 31.6 節 「區域檔案」所述。對於新區域,請在「名稱」中提供其名稱。若要新增反向區域,名稱的結尾必須是 .in-addr.arpa。最後,選取「類型」(主要、從屬或轉遞)。請參閱圖形 31.2 「DNS 伺服器安裝:DNS 區域」。按一下「編輯」可設定現有區域的其他設定值。若要移除區域,按一下「刪除」

    DNS 伺服器安裝:DNS 區域
    圖 31.2︰ DNS 伺服器安裝:DNS 區域
  3. 在最後的對話方塊中,可按一下「在防火牆中開啟埠」,在防火牆中開啟 DNS 連接埠。然後決定是否在開機時啟動 DNS 伺服器 (「開啟」「關閉」)。您亦可啟用 LDAP 支援。請參閱圖形 31.3 「DNS 伺服器安裝:完成精靈」

    DNS 伺服器安裝:完成精靈
    圖 31.3︰ DNS 伺服器安裝:完成精靈

31.3.2 進階組態

啟動模組後,YaST 會開啟顯示數個組態選項的視窗。完成該視窗可讓 DNS 伺服器組態的基本功能就位運作:

31.3.2.1 啟動

「啟動」下,定義是應在系統開機時啟動 DNS 伺服器還是手動啟動。若要立即啟動 DNS 伺服器,請按一下「立即啟動 DNS 伺服器」。若要停止 DNS 伺服器,請按一下「立即停止 DNS 伺服器」。若要儲存目前的設定,請選取「立即儲存設定並重新載入 DNS 伺服器」。您可以使用「在防火牆中開啟埠」開啟防火牆中的 DNS 埠,並使用「防火牆詳細資訊」修改防火牆設定。

若選取「LDAP 主動支援」,區域檔案將由 LDAP 資料庫來管理。DNS 伺服器重新啟動或由系統提示重新載入其組態時,會選用寫入到 LDAP 資料庫的任何區域資料變更。

31.3.2.2 轉遞者

如果您的本地 DNS 伺服器無法答覆要求,它會嘗試將要求轉遞至「轉遞者」(若做此設定)。可手動將此轉遞者新增至「轉遞者清單」。如果轉遞者與撥號連接同樣不是靜態的,則 netconfig 會處理組態。如需 netconfig 的詳細資訊,請參閱 man 8 netconfig

31.3.2.3 基本選項

在此區段中,可設定基本伺服器選項。從「選項」功能表中,選取所需項目,然後在相應的文字方塊中指定值。選取 新增 以包含新項目。

31.3.2.4 記錄

若要設定 DNS 伺服器應記錄的內容和記錄方式,請選取「記錄」。在「記錄類型」下,指定 DNS 伺服器應該寫入記錄資料的位置。選取「系統記錄」來使用泛系統記錄,或選取「檔案」指定不同的檔案。如果使用後一種方式,還需另行指定名稱、最大檔案大小 (以 MB 為單位) 以及要儲存的記錄檔案版本數。

進一步選項可從「其他記錄」下存取。啟用「記錄所有 DNS 查詢」會記錄每個查詢,此選項會讓記錄檔變得非常大。所以,除了偵錯用途外,啟用此選項並不是理想的作法。若要記錄 DHCP 與 DNS 伺服器之間在區域更新期間的資料流量,請啟用「記錄區域更新」。若要記錄從主伺服器到從屬伺服器在區域傳輸期間的資料流量,請啟用「記錄區域轉送」。請參閱圖形 31.4 「DNS 伺服器:記錄」

DNS 伺服器:記錄
圖 31.4︰ DNS 伺服器:記錄

31.3.2.5 ACL

使用此對話方塊可定義 ACL (存取控制清單) 以強制執行存取限制。在名稱下提供獨特名稱後,在下指定 IP 位址 (有或沒有網路遮罩),格式如下:

{ 192.168.1/24; }

組態檔的語法要求位址以分號結尾,而且放置在大括號之間。

31.3.2.6 TSIG 金鑰

TSIG (交易簽章) 的主要目的是保護 DHCP 與 DNS 伺服器之間的通訊。在第 31.8 節 「安全交易」中有所描述。

若要產生 TSIG 金鑰,請在標籤為「金鑰 ID」的欄位中輸入特別的名稱,並指定用來儲存金鑰的檔案 (檔案名稱)。按一下「產生」確認您的選擇。

若要使用之前建立的金鑰,請將「金鑰 ID」欄位保留空白,並在「檔案名稱」下選取儲存金鑰的檔案。接著,以 新增 確認您的選項。

31.3.2.7 DNS 區域 (新增從屬區域)

若要新增從屬區域,請選取「DNS 區域」,選擇「從屬」區域類型,指定新區域的名稱,並按一下「新增」。

「區域編輯器」子對話方塊中,於「主 DNS 伺服器 IP」下指定從屬伺服器應從中提取資料的主伺服器。若要限制對伺服器的存取,可以從清單選取其中一個 ACL。

31.3.2.8 DNS 區域 (新增主要區域)

若要新增主要區域,請選取「DNS 區域」,選擇「主要」區域類型,寫入新區域的名稱,然後按一下「新增」。新增主要區域時,也需要新增反向區域。例如,如果新增指向子網路 192.168.1.0/24 中主機的 example.com 區域,則也應該新增涵蓋該 IP 位址範圍的反向區域。根據定義,該區域應該命名為 1.168.192.in-addr.arpa

31.3.2.9 DNS 區域 (編輯主要區域)

若要編輯主要區域,請選取「DNS 區域」,然後從表中選取主要區域,並按一下「編輯」。對話方塊由幾個頁面組成:基本 (第一個開啟的頁面)、NS 記錄MX 記錄SOA 以及記錄

基本對話方塊 (如圖形 31.5 「DNS 伺服器:區域編輯器 (基本)」所示),可讓您定義動態 DNS 的設定以及到用戶端及從屬名稱伺服器之區域傳輸的存取選項。若要允許動態更新區域,請選取允許動態更新及相應的 TSIG 金鑰。更新動作開始前,必須先定義金鑰。若要啟用區域傳輸,請選取對應的 ACL。必須先行定義 ACL。

「基本」對話方塊中,選擇是否要啟用區域傳輸。使用列出的 ACL 來定義可以下載區域的人員。

DNS 伺服器:區域編輯器 (基本)
圖 31.5︰ DNS 伺服器:區域編輯器 (基本)
區域編輯器 (NS 記錄)

「NS 記錄」對話方塊可讓您為指定的區域定義替代名稱伺服器。請確定您自己的名稱伺服器包含於清單中。若要新增記錄,請在「要新增的名稱伺服器」下輸入其名稱,然後使用「新增」確認動作。請參閱圖形 31.6 「DNS 伺服器:區域編輯器 (NS 記錄)」

DNS 伺服器:區域編輯器 (NS 記錄)
圖 31.6︰ DNS 伺服器:區域編輯器 (NS 記錄)
區域編輯器 (MX 記錄)

若要新增目前區域的郵件伺服器到現有清單,請輸入對應的位址及優先順序值。完成後,選取「新增」確認該動作。請參閱圖形 31.7 「DNS 伺服器:區域編輯器 (MX 記錄)」

DNS 伺服器:區域編輯器 (MX 記錄)
圖 31.7︰ DNS 伺服器:區域編輯器 (MX 記錄)
區域編輯器 (SOA)

此頁允許您建立 SOA (起始授權) 記錄。如需個別選項的說明,請參閱範例 31.6 「/var/lib/named/example.com.zone 檔案」透過 LDAP 管理的動態區域,並不支援變更 SOA 記錄。

DNS 伺服器:區域編輯器 (SOA)
圖 31.8︰ DNS 伺服器:區域編輯器 (SOA)
區域編輯器 (記錄)

此對話方塊可管理名稱解析。在「記錄金鑰」中,輸入主機名稱,然後選取其類型。「A」類型表示主項目。此項目的值應為 IP 位址 (IPv4)。請為 IPv6 位址使用「AAAA」。CNAME 是別名。使用 NSMX 類型,可取得「NS 記錄」與「MX 記錄」標籤提供之資訊的詳細或部分擴充記錄。這三個類型都可以解析成現有的 A 記錄。PTR 是供反向區域所使用。它的內容與 A 記錄相反,例如:

hostname.example.com. IN A 192.168.0.1
1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
31.3.2.9.1 新增反向區域

若要新增反向區域,請遵循以下程序:

  1. 啟動 YaST › DNS 伺服器 › DNS 區域

  2. 如果您尚未新增主要正向區域,現在請新增並對其進行編輯

  3. 記錄索引標籤中,填入相應的記錄金鑰,然後使用新增來新增記錄,並使用確定來確認。如果 YaST 告知某個名稱伺服器的記錄不存在,請在 NS 記錄索引標籤中新增該記錄。

    為主要區域新增記錄
    圖 31.9︰ 為主要區域新增記錄
  4. 回到 DNS 區域視窗,新增一個主要反向區域。

    新增反向區域
    圖 31.10︰ 新增反向區域
  5. 編輯該反向區域,然後在記錄索引標籤中,您可以看到 PTR:反向轉換記錄類型。新增相應的記錄金鑰,然後按一下新增並使用確定來確認。

    新增反向記錄
    圖 31.11︰ 新增反向記錄

    視需要新增名稱伺服器記錄。

提示
提示:編輯反向區域

新增正向區域後,返回到主功能表,然後選取要編輯的反向區域。在「基本」索引標籤中,啟用「自動產生以下區域的記錄」核取方塊,然後選取正向區域。這樣,反向區域中會自動更新正向區域的所有變更。

31.4 啟動 BIND 名稱伺服器

SUSE® Linux Enterprise Server 系統上,已預先設定名稱伺服器 BIND (Berkeley Internet Name Domain,柏克萊網際網路名稱網域),因此在安裝後可以立即啟動此名稱伺服器,不會出現任何問題。一般而言,如果您能連接網際網路,並在 /var/run/netconfig/resolv.conf 中輸入了 127.0.0.1 做為 localhost 的名稱伺服器位址,則表示您已經有可以運作的名稱解析功能,因而無需知道提供者的 DNS。BIND 透過根名稱伺服器執行名稱解析,顯見處理程序較慢。一般而言,應該在 forwarders 下的組態檔 /etc/named.conf 中輸入提供者的 DNS 及其 IP 位址,以確保有效及安全的名稱解析。如果目前此辦法可行,名稱伺服器會當成純粹的「僅快取」名稱伺服器執行。只有在您設定了名稱伺服器自己的區域後,它才會成為真正的 DNS。/usr/share/doc/packages/bind/config 中提供了一個簡單範例。

提示
提示:名稱伺服器資訊的自動調整

在某些類型的網際網路連接或網路連接下,名稱伺服器資訊可自動根據目前的情況進行調整。若要實現此目的,請將 /etc/sysconfig/network/config 檔案中的 NETCONFIG_DNS_POLICY 變數設定為 auto

不過,在相關機構為您指派正式的網域之前,切勿設定網域。即使您有自己的網域而且是由提供者管理,最好也不要使用,否則 BIND 不會轉遞此網域的要求。例如,此網域將無法存取提供者的網頁伺服器。

若要啟動名稱伺服器,請以 root 身分輸入指令 systemctl start named。使用 systemctl status named 來檢查 named (在呼叫名稱伺服器程序時) 是否已成功啟動。使用 hostdig 程式立即測試本地系統上的名稱伺服器,應該會傳回 localhost 做為預設伺服器,位址為 127.0.0.1。如果沒有傳回所需的結果,/var/run/netconfig/resolv.conf 可能包含不正確的名稱伺服器項目,或是檔案不存在。如果是第一次測試,請輸入 host 127.0.0.1,這通常都能成功。如果看到錯誤訊息,請使用 systemctl status named 檢查伺服器是否真的在執行。如果該名稱伺服器未啟動或者出現非預期的行為,請檢查 journalctl -e 的輸出。

若要使用提供者的名稱伺服器或網路上正在執行的名稱伺服器做為轉遞者,請在 forwarders 下的 options 區段中輸入對應的 IP 位址。範例 31.1 「named.conf 中的轉遞選項」中包含的位址只是範例。請根據您自己的設定調整這些項目。

範例 31.1︰ named.conf 中的轉遞選項
options {
        directory "/var/lib/named";
        forwarders { 10.11.12.13; 10.11.12.14; };
        listen-on { 127.0.0.1; 192.168.1.116; };
        allow-query { 127/8; 192.168/16 };
        notify no;
};

options 項目後面跟著區域的項目:localhost 以及 0.0.127.in-addr.arpatype hint 項目 (.下) 應永遠存在。對應的檔案無需修改,而且應該依其原狀運作。另外也請確定每個項目的末尾都有;,且大括號在正確的位置。變更組態檔 /etc/named.conf 或區域檔後,可使用 systemctl reload named 告知 BIND 重新讀取這些檔案。使用 systemctl restart named 停止並重新啟動名稱伺服器可達成相同的效果。任何時候都可透過輸入 systemctl stop named 來停止伺服器。

31.5 /etc/named.conf 組態檔案

BIND 名稱伺服器本身的所有設定都儲存於檔案 /etc/named.conf 中。不過,要處理之網域的區域資料 (包括主機名稱、IP 位址等) 儲存於 /var/lib/named 目錄中各自的檔案中。詳細資訊會在稍後說明 。

/etc/named.conf 粗略分為兩個部分。其中一個是一般設定的 options 區段,另一個則是由個別網域的 zone 項目組成。logging 區段和 acl (存取控制清單) 項目是選擇性的。註解行的開頭是 # 符號或 //。在範例 31.2 「基本的 /etc/named.conf」 中顯示了最基本的 /etc/named.conf

範例 31.2︰ 基本的 /etc/named.conf
options {
        directory "/var/lib/named";
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};

zone "." in {
        type hint;
        file "root.hint";
};

31.5.1 重要的組態選項

directory "FILENAME";

指定 BIND 可以在其中找尋包含區域資料之檔案的目錄。通常是 /var/lib/named

forwarders { IP-ADDRESS; };

指定無法直接解析 DNS 要求時應該將其轉遞至哪個名稱伺服器 (一般屬於提供者)。以 IP 位址 (例如 192.168.1.116) 取代 IP-ADDRESS

forward first;

將會在嘗試透過根名稱伺服器解析 DNS 要求之前先加以轉遞。除了 forward first,可以寫入 forward only 以轉遞所有要求,且不會有任何要求傳送到根名稱伺服器。這對於防火牆組態是可以理解的。

listen-on port 53 { 127.0.0.1; IP-ADDRESS; };

告知 BIND 在哪個網路介面和連接埠上接受用戶端查詢。不需要明確指定連接埠 53,因為 53 為預設連接埠。輸入 127.0.0.1 將允許來自本地主機的要求。如果完全省略此項目,預設會使用所有介面。

listen-on-v6 port 53 {any; };

告訴 BIND 哪個連接埠應該監聽 IPv6 用戶端要求。除了 any 外只能使用 none。就 IPv6 而言,伺服器僅接受萬用字元位址。

query-source address * port 53;

如果防火牆封鎖 DNS 要求外送,則需要這個項目。這樣會告訴 BIND 從外部的連接埠 53 張貼要求,而不是從任何高於 1024 的連接埠張貼。

query-source-v6 address * port 53;

告訴 BIND 哪個連接埠用於 IPv6 查詢。

allow-query { 127.0.0.1; NET; };

定義用戶端可以張貼 DNS 要求的網路。以位址資訊 (例如 192.168.2.0/24) 取代 NET。尾部的 /24 是網路遮罩的縮寫表示式,在此例中為 255.255.255.0

allow-transfer ! *;;

控制哪些主機可以要求區域傳輸。在範例中,這類要求是使用 ! *.如果沒有這個項目,就可以從任一處要求區域傳輸,沒有限制。

statistics-interval 0;

如果沒有這個項目,BIND 每小時都會在系統的日誌中產生數行統計資訊。指定 0 則完全不會顯示這些統計數字,或設定以分鐘為單位的間隔時間。

cleaning-interval 720;

此選項定義 BIND 清除其快取記憶體的時間間隔。每次清除時觸發系統日誌中一個項目。時間規格單位為分鐘。預設值是 60 分鐘。

interface-interval 0;

BIND 會定期搜尋網路介面,尋找新的或不存在的介面。如果此值設定為 0,就不會執行這個動作,且 BIND 僅會監聽啟動時偵測到的介面。如果不想出現這種情況,請以分鐘為單位定義間隔時間。預設值是 60 分鐘。

notify no;

當變更區域資料或重新啟動名稱伺服器時,no 會防止通知其他名稱伺服器。

如需可用選項的清單,請參閱 man 5 named.conf 的手冊頁。

31.5.2 記錄

記錄的內容、方式及位置皆可在 BIND 中詳細設定。通常預設值已經足夠了。範例 31.3 「停用記錄的項目」顯示了此類項目最簡單的形式,會徹底隱藏所有記錄。

範例 31.3︰ 停用記錄的項目
logging {
        category default { null; };
};

31.5.3 區域項目

範例 31.4︰ example.com 的區域項目
zone "example.com" in {
      type master;
      file "example.com.zone";
      notify no;
};

zone 之後,指定要管理的網域名稱 (example.com),後面跟上 in 以及大括號括住的相關選項區塊,如範例 31.4 「example.com 的區域項目」 中所示。若要定義 slave zone,切換 typeslave 並指定管理此區域的名稱伺服器為 master (也可能成為另一個主要的從屬),如 範例 31.5 「example.net 的區域項目」 中所示。

範例 31.5︰ example.net 的區域項目
zone "example.net" in {
      type slave;
      file "slave/example.net.zone";
      masters { 10.0.0.1; }; 
};

區域選項:

type master;

藉由指定 master,可以告訴 BIND 區域由本地名稱伺服器處理。這假設區域檔案已經以正確格式建立。

type slave;

此區域傳輸自另一部名稱伺服器。必須與 masters 一起使用。

type hint;

區域 . 屬於 hint 類型,可用來設定根名稱伺服器。此區域定義可以維持原狀。

檔案 example.com.zone 或檔案 slave/example.net.zone

此項目可指定網域之區域資料所在的檔案。從屬區域不需要此檔案,因為此資料是從另一個名稱伺服器提取。若要分別主要和從屬檔案,請為從屬檔案使用目錄 slave

masters { SERVER_IP_ADDRESS; };

僅從屬區域需要此項目。它指定應該傳輸區域檔案的名稱伺服器。

allow-update {! *; };

此選項控制外部寫入存取,將允許用戶端產生 DNS 項目,通常由於安全性的緣故不需要此項目。如果沒有此項目,將禁止區域更新。以下項目會產生相同的結果,因為 ! * 可有效地禁止任何這類活動。

31.6 區域檔案

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

提示
提示:在區域檔案中使用點 (英文句點)

. 在區域檔案中具有重要意義。如果指定的主機名稱末尾沒有句點 (.),則會附加區域。使用完整網域名稱指定的完整主機名稱必須以句點結尾 (.),這是為了避免再次向它新增網域。「.」遺失或放錯位置可能是導致名稱伺服器組態錯誤的最常見的原因。

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

範例 31.6︰ /var/lib/named/example.com.zone 檔案
$TTL 2D 1
example.com. IN SOA      dns  root.example.com. ( 2
             2003072441  ; serial 3
             1D          ; refresh 4
             2H          ; retry 5
             1W          ; expiry 6
             2D )        ; minimum 7

             IN NS       dns 8
             IN MX       10 mail dns 9
gate         IN A        192.168.5.1 10
             IN A        10.0.0.1
dns          IN A        192.168.1.116
mail         IN A        192.168.3.108
jupiter      IN A        192.168.2.100
venus        IN A        192.168.2.101
saturn       IN A        192.168.2.102
mercury      IN A        192.168.2.103
ntp          IN CNAME    dns 11
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

序號是一個 10 位數的號碼。每次變更此檔案,都必須變更此號碼。通知次要名稱伺服器 (從屬伺服器) 發生變更,這是必要的。為此,日期和執行號碼常採用 10 位數格式,寫法是 YYYYMMDDNN,這已成為習慣格式 (YYYY 表示年份,MM 表示月份,DD 表示日期。NN 是序號,可在給定的日期多次更新)。

4

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

5

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

6

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

7

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

8

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

9

MX 記錄指定接受、處理和轉寄網域 example.com 之電子郵件的郵件伺服器。在此範例中,其為主機 mail.example.com。主機名稱前的號碼是優先設定值。如果有多個 MX 項目,則優先選用值最小的郵件伺服器。如果將郵件傳送到此伺服器失敗,則會使用值第二小的項目。

10

此行及其後面的行是實際位址記錄,其中的一或多個 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

11

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

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

範例 31.7︰ 反向尋找
$TTL 2D 1
168.192.in-addr.arpa.   IN SOA dns.example.com. root.example.com. ( 2
                        2003072441      ; serial
                        1D              ; refresh
                        2H              ; retry
                        1W              ; expiry
                        2D )            ; minimum

                        IN NS           dns.example.com. 3

1.5                     IN PTR          gate.example.com. 4
100.3                   IN PTR          www.example.com.
253.2                   IN PTR          cups.example.com.

1

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

2

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

如需此記錄中項目的詳細資料,請參閱範例 31.6 「/var/lib/named/example.com.zone 檔案」

3

此行指定負責此區域的名稱伺服器。但這次以完整格式輸入名稱,即包含域且以「. 做為結尾。

4

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

一般情況下,不同 BIND 版本之間的區域傳輸應該可以順利進行。

31.7 區域資料的動態更新

動態更新」這個詞是指新增、變更或刪除主伺服器的區域檔案項目的作業。RFC 2136 中詳述了此機制。透過新增選擇性 allow-updateupdate-policy 規則,可為每個區域項目個別設定動態更新。動態更新的區域不應該手動修改。

使用指令 nsupdate 將要更新的項目傳送到伺服器。如需此指令的完整語法,請查閱 nsupdate 的手冊頁 (man 8 nsupdate)。為了安全性的緣故,這類更新應該使用 TSIG 金鑰加以執行,如 第 31.8 節 「安全交易」 所述。

31.8 安全交易

透過採用共用秘密金鑰 (也稱為 TSIG 金鑰) 的交易簽章 (TSIG),可以實現安全交易。本節說明如何產生及使用這類金鑰。

不同伺服器之間的通訊,以及區域資料的動態更新,都需要安全交易。讓存取控制依靠金鑰比單純依靠 IP 位址要來得安全許多。

使用下面的指令產生 TSIG 金鑰 (如需詳細資料,請參閱 man tsig-keygen):

tux > sudo tsig-keygen -a hmac-md5 host1-host2 > host1-host2.key

這會建立名為 host1-host2.key 的檔案,其中的內容可能如下所示:

key "host1-host2" {                       |
    algorithm hmac-md5;
    secret "oHpBLgtcZso6wxnRTWdJMA==";
};

必須將此檔案傳輸至遠端主機,最好以安全方式傳輸 (例如,使用 scp)。若要在 host1host2 之間啟用安全通訊,本地和遠端伺服器上的 /etc/named.conf 檔案中均須包含該金鑰。

key host1-host2 {
 algorithm hmac-md5;
 secret "ejIkuCyyGJwwuN3xAteKgg==";
};
警告
警告:etc/named.conf 的檔案權限

請確定 /etc/named.conf 的權限受到適當的限制。此檔案的預設值是 0640,擁有者為 root 及群組 named。另一種方法是,將金鑰移到具有特別限定權限的其他檔案,然後將檔案從 /etc/named.conf 包含進來。若要包含外部檔案,請使用:

include  "filename"

檔案名稱取代為金鑰所在檔案的絕對路徑。

若要讓伺服器 host1 能夠使用 host2 (在此範例中位址為 10.1.2.3) 的金鑰,伺服器的 /etc/named.conf 必須包含以下規則:

server 10.1.2.3 {
  keys { host1-host2. ;};
};

類比項目必須包含於 host2 的組態檔中。

針對為 IP 位址和位址範圍定義的任何 ACL (存取控制清單,切勿與檔案系統 ACL 混淆) 新增 TSIG 金鑰,以確保交易安全性。對應項目應該看起來如下:

allow-update { key host1-host2. ;};

此主題在 update-policy 下的 BIND Administrator Reference Manual 中有詳細討論。

31.9 DNS 安全性

RFC 2535 中對 DNSSEC (或 DNS 安全性) 進行了描述。BIND 手冊中介紹了可用於 DNSSEC 的工具。

與一或多個區域金鑰關聯的區域才是安全區域。這些金鑰是使用 dnssec-keygen 產生,如同主機金鑰一樣。目前是使用 DSA 加密演算法產生這些金鑰。產生的公用金鑰應該包含於套用 $INCLUDE 規則的對應區域檔案中。

使用 dnssec-signzone 指令,可以建立產生的金鑰集 (keyset- 檔案),將金鑰集安全地傳送至父區域,並對其簽名。這樣便會在 /etc/named.conf 中產生每個區域要包含的檔案。

31.10 更多資訊

如需詳細資訊,請參閱安裝於 /usr/share/doc/packages/bind/arm 下的 bind-doc 套件中的 BIND Administrator Reference Manual (BIND 管理員參考手冊)。另外也請參閱手冊參考的 RFC 以及 BIND 隨附的手冊頁。/usr/share/doc/packages/bind/README.SUSE 中包含有關 SUSE Linux Enterprise Server 中 BIND 的最新資訊。