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

39 網域名稱系統

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

39.1 DNS 詞彙

區域

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

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 同步化多部電腦之間的資料時使用。

39.2 安裝

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

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

> sudo zypper in -t pattern dhcp_dns_server

39.3 利用 YaST 進行組態

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

39.3.1 精靈組態

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

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

    • 已停用合併轉遞者

    • 自動合併

    • 已啟用合併轉遞者

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

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

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

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

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

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

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

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

39.3.2 進階組態

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

39.3.2.1 啟動

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

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

39.3.2.2 轉遞者

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

39.3.2.3 基本選項

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

39.3.2.4 記錄

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

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

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

39.3.2.5 ACL

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

{ 192.168.1/24; }

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

39.3.2.6 TSIG 金鑰

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

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

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

39.3.2.7 DNS 區域 (新增次要區域)

若要新增次要區域,請選取 DNS 區域,選擇次要區域類型,輸入新區域的名稱,然後按一下新增

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

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

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

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

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

圖形 39.5 「DNS 伺服器:區域編輯器 (基本)」中顯示的基本對話方塊用於定義動態 DNS 的設定,以及向用戶端和次要名稱伺服器進行區域傳輸的存取選項。若要允許動態更新區域,請選取允許動態更新及相應的 TSIG 金鑰。更新動作開始前,必須先定義金鑰。若要啟用區域傳輸,請選取對應的 ACL。必須先行定義 ACL。

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

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

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

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

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

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

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

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

此對話方塊可管理名稱解析。在記錄金鑰中,輸入主機名稱,然後選取其類型。A類型表示主項目。此項目的值應為 IP 位址 (IPv4)。請為 IPv6 位址使用AAAACNAME 是別名。使用 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.
39.3.2.9.1 新增反向區域

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

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

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

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

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

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

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

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

提示
提示:編輯反向區域

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

39.4 啟動 BIND 名稱伺服器

SUSE® Linux Enterprise Server 系統上,已預先設定名稱伺服器 BIND (Berkeley Internet Name Domain,柏克萊網際網路名稱網域),因此在安裝後可以立即啟動此名稱伺服器,不會出現任何問題。一般而言,如果您能連接網際網路,並在 /var/run/netconfig/resolv.conf 中輸入了 127.0.0.1 做為 localhost 的名稱伺服器位址,則表示您已經有正常運作的名稱解析功能,因而無需知道提供者的 DNS。BIND 透過根名稱伺服器執行名稱解析,顯見處理程序較慢。通常,應在組態檔案 /etc/named.confforwarders 下輸入提供者的 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 位址。範例 39.1 「named.conf 中的轉遞選項」中包含的位址只是範例。請根據您自己的設定調整這些項目。

範例 39.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 項目後面跟著區域的項目:localhost0.0.127.in-addr.arpa.下的 type hint 項目應該永遠存在。對應的檔案無需修改,而且應該依其原狀運作。另外也請確定每個項目的末尾都有;,且大括號在正確的位置。變更組態檔案 /etc/named.conf 或區域檔案後,可使用 systemctl reload named 來指示 BIND 重新讀取這些檔案。使用 systemctl restart named 停止和重新啟動名稱伺服器會達成相同的結果。您隨時可以輸入 systemctl stop named 來停止伺服器。

39.5 /etc/named.conf 組態檔案

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

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

範例 39.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";
};

39.5.1 重要的組態選項

directory "FILENAME";

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

forwarders { IP-ADDRESS; };

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

forward first;

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

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

告知 BIND 在哪個網路介面和連接埠上接受用戶端查詢。不需要明確指定 port 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 的手冊頁。

39.5.2 記錄

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

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

39.5.3 區域項目

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

zone 之後,指定要管理的網域名稱 (example.com),後面跟上 in 以及大括號括住的相關選項區塊,如範例 39.4 「example.com 的區域項目」 中所示。若要定義次要區域,請將 type 切換為 secondary,並將管理此區域的名稱伺服器指定為 primary (它可能是另一個主要伺服器的次要伺服器),如範例 39.5 「example.net 的區域項目」所示。

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

區域選項:

type primary;

透過指定 primary,指示 BIND 由本地名稱伺服器處理區域。這假設區域檔案已經以正確格式建立。

type secondary;

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

type hint;

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

file example.com.zone 或 file secondary/example.net.zone;

此項目可指定網域之區域資料所在的檔案。次要伺服器不需要此檔案,因為會從另一部名稱伺服器提取這些資料。為了區分主要伺服器和次要伺服器的檔案,請使用目錄 secondary 存放次要檔案。

primary_servers { SERVER_IP_ADDRESS; };

只有次要區域需要此項目。它指定應該傳輸區域檔案的名稱伺服器。

allow-update {! *; };

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

39.6 區域檔案

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

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

"." 在區域檔案中具有重要意義。如果指定的主機名稱末尾不含點 (.),系統會附加區域。指定的完整主機名稱 (包含完整的網域名稱) 必須以點 (.) 結尾,以免再次新增網域至主機名稱。「.」遺失或放錯位置是導致名稱伺服器組態錯誤的最常見的原因。

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

範例 39.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

serial number 是一個 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 表示標準名稱) 的位址。

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

範例 39.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 範例中所述的項目對應。

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

3

此行指定負責此區域的名稱伺服器。不過,這次採用完整格式輸入名稱,包含網域且末尾帶 "."

4

此行及其後面的行是相關主機上 IP 位址的指標記錄提示。該行的開頭只輸入了 IP 位址的最後一部分,末尾不含 "."。將區域附加到此位址 (不含 .in-addr.arpa) 會使整個 IP 位址變成相反順序。

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

39.7 區域資料的動態更新

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

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

39.8 安全交易

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

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

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

> 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"

以金鑰所在檔案的絕對路徑取代 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. ;};

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

39.9 DNS 安全性

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

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

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

39.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 的最新資訊。