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

26 網域名稱系統

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

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

26.2 安裝

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

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

zypper in -t pattern dhcp_dns_server

26.3 利用 YaST 進行組態

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

26.3.1 精靈組態

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

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

    • 已停用合併轉遞者

    • 自動合併

    • 已啟用合併轉遞者

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

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

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

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

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

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

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

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

26.3.2 進階組態

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

26.3.2.1 啟動

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

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

26.3.2.2 轉遞者

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

26.3.2.3 基本選項

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

26.3.2.4 記錄

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

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

DNS 伺服器︰記錄
圖 26.4︰ DNS 伺服器︰記錄

26.3.2.5 ACL

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

{ 192.168.1/24; }

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

26.3.2.6 TSIG 金鑰

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DNS 伺服器︰區域編輯器 (SOA)
圖 26.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.
26.3.2.9.1 新增反向區域

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

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

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

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

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

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

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

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

提示
提示:編輯反向區域

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

26.4 啟動 BIND 名稱伺服器

SUSE® Linux Enterprise Server 系統上,已預先設定名稱伺服器 BIND (Berkeley Internet Name Domain,柏克萊網際網路名稱網域),因此在安裝後可以立即啟動此名稱伺服器,不會出現任何問題。一般而言,如果您能連接網際網路,並在 /etc/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。如果沒有傳回所需的結果,/etc/resolv.conf 可能包含不正確的名稱伺服器項目,或是檔案不存在。如果是第一次測試,請輸入 host 127.0.0.1,這通常都能成功。如果看到錯誤訊息,請使用 systemctl status named 檢查伺服器是否真的在執行。如果該名稱伺服器未啟動或者出現非預期的行為,請檢查 journalctl -e 的輸出。

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

範例 26.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.arpa。在.之下的 type hint 項目應該永遠是存在的。對應的檔案無需修改,而且應該依其原狀運作。另外也請確定每個項目的末尾都有;,且大括號在正確的位置。變更組態檔 /etc/named.conf 或區域檔後,可使用 systemctl reload named 告知 BIND 重新讀取這些檔案。使用 systemctl restart named 停止並重新啟動名稱伺服器可達成相同的效果。任何時候都可透過輸入 systemctl stop named 來停止伺服器。

26.5 /etc/named.conf 組態檔案

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

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

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

26.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 哪個網路介面和哪個連接埠要接受用戶端查詢。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 的手冊頁。

26.5.2 記錄

記錄的內容、方式及位置皆可在 BIND 中詳細設定。一般而言,預設設定應該足夠。範例 26.3 「關閉記錄的項目」 顯示了這類項目的最簡單格式,而且完全停用了記錄。

範例 26.3︰ 關閉記錄的項目
logging {
        category default { null; };
};

26.5.3 區域項目

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

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

範例 26.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 項目,通常由於安全性的緣故不需要此項目。如果沒有此項目,將禁止區域更新。以下項目會產生相同的結果,因為 ! * 可有效地禁止任何這類活動。

26.6 區域檔案

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

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

. 在區域檔案中具有重要意義。如果指定的主機名稱末尾沒有句點 (.),則會附加區域。使用完整網域名稱指定的完整主機名稱必須以句點結尾 (.),這是為了避免再次向它新增網域。缺少 . 或其位置錯誤往往是造成名稱伺服器組態錯誤的原因所在。

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

範例 26.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。請參閱範例 26.7 「反向查詢」

範例 26.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 版本之間的區域傳輸應該可以順利進行。

26.7 區域資料的動態更新

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

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

26.8 安全交易

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

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

使用以下指令可產生 TSIG 金鑰 (有關詳細資訊,請參閱 man dnssec-keygen)︰

dnssec-keygen -a hmac-md5 -b 128 -n HOST host1-host2

這樣會建立兩個檔案,名稱類似如下︰

Khost1-host2.+157+34265.private Khost1-host2.+157+34265.key

金鑰本身 (如 ejIkuCyyGJwwuN3xAteKgg== 的字串) 在兩個檔案中都可找到。如果要用於交易,第二個檔案 (Khost1-host2.+157+34265.key) 必須傳輸到遠端主機,最好是以安全的方式傳輸 (例如,使用 scp)。在遠端伺服器上,金鑰必須包含於檔案 /etc/named.conf 內,才能開啟 host1host2 之間的安全通訊︰

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 中有詳細討論。

26.9 DNS 安全性

DNSSEC 或 DNS 安全性細述於 RFC 2535。DNSSEC 的可用工具在 BIND 手冊中有詳加討論。

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

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

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