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 並選取「
› 」。選擇 › ,然後選取 。請確認安裝個別套件,以完成此安裝程序。或者,在指令行中使用以下指令:
tux >
sudo
zypper in -t pattern dhcp_dns_server
31.3 利用 YaST 進行組態 #
使用 YaST DNS 模組可以設定區域網路的 DNS 伺服器。當您第一次啟動模組時,一個精靈會啟動,提示您指定有關伺服器管理的一些設定。完成此初步設定,即會產生基本的伺服器組態。使用進階模式可以處理更進階的組態任務,如設定 ACL、記錄、TSIG 金鑰和其他選項。
31.3.1 精靈組態 #
精靈包含三個步驟或對話方塊。在對話方塊的適當位置,您可以進入進階組態模式。
第一次啟動模組時,會開啟圖形 31.1 「DNS 伺服器安裝:轉遞者設定」中所示的「 」對話方塊。「 」允許設定以下選項:
自動
」,但是,您可以在此處設定介面名稱,或者從STATIC
與STATIC_FALLBACK
這兩個特殊規則名稱中做出選擇。
在「
」中,指定要使用的服務:「 」、「 」或「 」。如需有關所有這些設定的詳細資訊,請參閱
man 8 netconfig
。圖 31.1︰ DNS 伺服器安裝:轉遞者設定 #轉遞者是指當您的 DNS 伺服器無法答覆查詢時,將查詢傳送至的目標 DNS 伺服器。請輸入它們的 IP 位址,然後按一下
。「第 31.6 節 「區域檔案」所述。對於新區域,請在 中提供其名稱。若要新增反向區域,名稱的結尾必須是
」對話方塊包含數個部分,負責管理區域檔案,如.in-addr.arpa
。最後,選取 (主要、從屬或轉遞)。請參閱圖形 31.2 「DNS 伺服器安裝:DNS 區域」。按一下 可設定現有區域的其他設定值。若要移除區域,按一下 。圖 31.2︰ DNS 伺服器安裝:DNS 區域 #在最後的對話方塊中,可按一下「圖形 31.3 「DNS 伺服器安裝:完成精靈」。
」,在防火牆中開啟 DNS 連接埠。然後決定是否在開機時啟動 DNS 伺服器 ( 或 )。您亦可啟用 LDAP 支援。請參閱圖 31.3︰ DNS 伺服器安裝:完成精靈 #
31.3.2 進階組態 #
啟動模組後,YaST 會開啟顯示數個組態選項的視窗。完成該視窗可讓 DNS 伺服器組態的基本功能就位運作:
31.3.2.1 啟動 #
在
下,定義是應在系統開機時啟動 DNS 伺服器還是手動啟動。若要立即啟動 DNS 伺服器,請按一下 。若要停止 DNS 伺服器,請按一下 。若要儲存目前的設定,請選取 。您可以使用 開啟防火牆中的 DNS 埠,並使用 修改防火牆設定。若選取「
」,區域檔案將由 LDAP 資料庫來管理。DNS 伺服器重新啟動或由系統提示重新載入其組態時,會選用寫入到 LDAP 資料庫的任何區域資料變更。31.3.2.2 轉遞者 #
如果您的本地 DNS 伺服器無法答覆要求,它會嘗試將要求轉遞至「man 8 netconfig
。
31.3.2.3 基本選項 #
在此區段中,可設定基本伺服器選項。從「
」功能表中,選取所需項目,然後在相應的文字方塊中指定值。選取 以包含新項目。31.3.2.4 記錄 #
若要設定 DNS 伺服器應記錄的內容和記錄方式,請選取「
」。在「 」下,指定 DNS 伺服器應該寫入記錄資料的位置。選取「 」來使用泛系統記錄,或選取「 」指定不同的檔案。如果使用後一種方式,還需另行指定名稱、最大檔案大小 (以 MB 為單位) 以及要儲存的記錄檔案版本數。進一步選項可從「每個查詢,此選項會讓記錄檔變得非常大。所以,除了偵錯用途外,啟用此選項並不是理想的作法。若要記錄 DHCP 與 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 金鑰,請在標籤為「
」的欄位中輸入特別的名稱,並指定用來儲存金鑰的檔案 ( )。按一下 確認您的選擇。若要使用之前建立的金鑰,請將
欄位保留空白,並在 下選取儲存金鑰的檔案。接著,以 確認您的選項。31.3.2.7 DNS 區域 (新增從屬區域) #
若要新增從屬區域,請選取「
」,選擇「 」區域類型,指定新區域的名稱,並按一下「 」。在
子對話方塊中,於 下指定從屬伺服器應從中提取資料的主伺服器。若要限制對伺服器的存取,可以從清單選取其中一個 ACL。31.3.2.8 DNS 區域 (新增主要區域) #
若要新增主要區域,請選取「192.168.1.0/24
中主機的 example.com
區域,則也應該新增涵蓋該 IP 位址範圍的反向區域。根據定義,該區域應該命名為 1.168.192.in-addr.arpa
。
31.3.2.9 DNS 區域 (編輯主要區域) #
若要編輯主要區域,請選取「
」,然後從表中選取主要區域,並按一下「 」。對話方塊由幾個頁面組成: (第一個開啟的頁面)、 、 、 以及 。基本對話方塊 (如圖形 31.5 「DNS 伺服器:區域編輯器 (基本)」所示),可讓您定義動態 DNS 的設定以及到用戶端及從屬名稱伺服器之區域傳輸的存取選項。若要允許動態更新區域,請選取 及相應的 TSIG 金鑰。更新動作開始前,必須先定義金鑰。若要啟用區域傳輸,請選取對應的 ACL。必須先行定義 ACL。
在
對話方塊中,選擇是否要啟用區域傳輸。使用列出的 ACL 來定義可以下載區域的人員。- 區域編輯器 (NS 記錄)
圖形 31.6 「DNS 伺服器:區域編輯器 (NS 記錄)」。
對話方塊可讓您為指定的區域定義替代名稱伺服器。請確定您自己的名稱伺服器包含於清單中。若要新增記錄,請在「 」下輸入其名稱,然後使用「 」確認動作。請參閱圖 31.6︰ DNS 伺服器:區域編輯器 (NS 記錄) #- 區域編輯器 (MX 記錄)
若要新增目前區域的郵件伺服器到現有清單,請輸入對應的位址及優先順序值。完成後,選取「圖形 31.7 「DNS 伺服器:區域編輯器 (MX 記錄)」。
」確認該動作。請參閱圖 31.7︰ DNS 伺服器:區域編輯器 (MX 記錄) #- 區域編輯器 (SOA)
此頁允許您建立 SOA (起始授權) 記錄。如需個別選項的說明,請參閱範例 31.6 「/var/lib/named/example.com.zone 檔案」。透過 LDAP 管理的動態區域,並不支援變更 SOA 記錄。
圖 31.8︰ DNS 伺服器:區域編輯器 (SOA) #- 區域編輯器 (記錄)
此對話方塊可管理名稱解析。在「
」中,輸入主機名稱,然後選取其類型。「 」類型表示主項目。此項目的值應為 IP 位址 (IPv4)。請為 IPv6 位址使用「 」。 是別名。使用 與 類型,可取得「 」與「 」標籤提供之資訊的詳細或部分擴充記錄。這三個類型都可以解析成現有的A
記錄。 是供反向區域所使用。它的內容與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 新增反向區域 #
若要新增反向區域,請遵循以下程序:
新增正向區域後,返回到主功能表,然後選取要編輯的反向區域。在「
」索引標籤中,啟用「 」核取方塊,然後選取正向區域。這樣,反向區域中會自動更新正向區域的所有變更。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 (在呼叫名稱伺服器程序時) 是否已成功啟動。使用 host
或 dig
程式立即測試本地系統上的名稱伺服器,應該會傳回 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 中的轉遞選項」中包含的位址只是範例。請根據您自己的設定調整這些項目。
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
來停止伺服器。
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
。
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 「停用記錄的項目」顯示了此類項目最簡單的形式,會徹底隱藏所有記錄。
logging { category default { null; }; };
31.5.3 區域項目 #
zone "example.com" in { type master; file "example.com.zone"; notify no; };
在 zone
之後,指定要管理的網域名稱 (example.com
),後面跟上 in
以及大括號括住的相關選項區塊,如範例 31.4 「example.com 的區域項目」 中所示。若要定義 slave zone,切換 type
為 slave
並指定管理此區域的名稱伺服器為 master
(也可能成為另一個主要的從屬),如 範例 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 檔案」中所示。
$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::
| |
這是 SOA (起始授權) 控制記錄開始的地方:
| |
| |
| |
| |
| |
SOA 記錄中的最後一個項目指定 | |
| |
MX 記錄指定接受、處理和轉寄網域 | |
此行及其後面的行是實際位址記錄,其中的一或多個 IP 位址已指定到主機名稱。此處列出的名稱不含 注意:IPv6 語法 IPv6 記錄與 IPv4 的語法稍有不同。因為可以分段,所以必須在位址前提供有關遺漏位元的資訊。若要使用所需的數字「}0」填寫 IPv6 位址,則在位址的正確位置新增兩個冒號。 pluto AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0 pluto AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0 | |
別名 |
虛擬網域 in-addr.arpa
用來反向查詢 IP 位址到主機名稱。它會以反向標記法附加到位址的網路部分。因此 192.168
會解析為 168.192.in-addr.arpa
。請參閱範例 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.
$TTL 定義套用到此處所有項目的標準 TTL。 | |
組態檔應該為網路 如需此記錄中項目的詳細資料,請參閱範例 31.6 「/var/lib/named/example.com.zone 檔案」。 | |
此行指定負責此區域的名稱伺服器。但這次以完整格式輸入名稱,即包含域且以「 | |
此行及其後面的行是相關主機上 IP 位址的指標記錄提示。在此行的開頭僅輸入了 IP 位址的最後一部分,不以「 |
一般情況下,不同 BIND 版本之間的區域傳輸應該可以順利進行。
31.7 區域資料的動態更新 #
「動態更新」這個詞是指新增、變更或刪除主伺服器的區域檔案項目的作業。RFC 2136 中詳述了此機制。透過新增選擇性 allow-update
或 update-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)。若要在 host1
與 host2
之間啟用安全通訊,本地和遠端伺服器上的 /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 的最新資訊。