域名系統
(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為将域名和IP位址互相映射的一個分布式資料庫,能夠使人更友善地通路網際網路。DNS使用TCP和UDP端口53。目前,對于每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。
下邊以使用最為廣泛的BIND軟體來說明DNS在Centos7中的基本配置:
這裡将用到三台centos7.x的虛機來配置實作DNS的正向解析,反向解析,主從配置,子域授權以及基本的安全控制配置等功能。
用到的三台伺服器安裝完畢後都先要關閉firewalld服務和selinux功能,其IP的相關配置為:
A:192.168.0.108 這裡我将用這台主機做為正向解析的主DNS伺服器,反向解析的從DNS伺服器
B:192.168.0.106 做為正向解析的從DNS伺服器,反向解析的主DNS伺服器
C:192.168.0.107 做為子域
三台主機都通過yum安裝好BIND,開始配置:
準備工作:三台主機的BIND安裝後都需要将主配置檔案/etc/named.conf中的option段中的預設字段做出修改:
後邊的配置都以我剛申請的新域名mengxl.com做出說明
配置正向解析(在192.168.0.108主機上配置):
(1)定義區域:
在主配置檔案中或主配置檔案輔助配置檔案中配置,這裡使用主配置檔案的包含檔案/etc/named.rfc1912.zones配置,在檔案的底部加入下面幾行:
zone "mengxl.com" IN {
type master;
file "mengxl.com.zone";
allow-update { none; };
};
(2)建立區域資料檔案:
在/var/named目錄下建立檔案mengxl.com.zone,檔案名要與配置檔案指定的檔案名相同,檔案内容為:
(3)修改配置好的區域資料檔案/var/named/mengxl.com.zone的權限和數組
chown :named /var/named/mengxl.com.zone
chmod o= /var/named/mengxl.com.zone
(4)檢查配置檔案及區域資料檔案的文法錯誤
named-checkconf
named-checkzone mengxl.com /var/named/mengxl.com.zone
(5)文法無誤後讓伺服器重載配置檔案和區域資料檔案
rndc reload或者 systemctl reload named
至此,DNS服務的正向區域配置完畢,我們可以用dig工具來測試配置是否已經生效
配置反向解析(用192.168.0.106主機配置)
(1)定義區域
在主配置檔案或主配置檔案的輔助配置檔案中配置,這裡在輔助檔案/etc/named.rfc1912.zones中配置,添加下面幾行:
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.zone";
allow-update { none; };
}; 注意,反向區域的區域名字書寫格式;
(2)定義區域解析庫檔案(主要記錄為PTR)
其建立位置為/var/named/192.168.0.zone檔案,内容如下:
一下步驟跟配置正向解析時相同了
(3)修改配置好的區域資料檔案/var/named/192.168.0.zone的權限和數組
chown :named /var/named/192.168.0.zone
chmod o= /var/named/192.168.0.zone
(4)檢查配置檔案及區域資料檔案的文法錯誤
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.zone
(5)文法無誤後讓伺服器重載配置檔案和區域資料檔案
至此,反向解析區域配置完成;
DNS主從配置
192.168.0.108為正向解析mengxl.com的主伺服器,192.168.0.106為其從伺服器;
192.168.0.106為反向解析0.168.192.in-addr.arpa的主伺服器,而192.168.0.108為其從伺服器;
注意:配置主從時, 確定區域資料檔案中為每個從服務配置NS記錄,并且在正向區域檔案需要每個從伺服器的NS記錄的主機名配置一個A記錄,且此A後面的位址為真正的從伺服器的IP位址;
(1)首先配置正向解析的從伺服器,即在192.168.0.106上進行配置,在/etc/named.rfc1912.zones中加入下面幾行:
type slave;
file "slaves/mengxl.com.zone";
masters { 192.168.0.108; };
注意,該區域檔案同步到從伺服器的/var/named/slaves目錄下,檢視該目錄權限可以看到named使用者在該目錄下有寫權限,而其他檔案的屬主為root,named使用者沒有寫權限;
(2)檢查配置檔案文法,重載配置使修改生效;
rndc reload或者systemctl reload named
正向解析的從機配置完成
(3)配置反向解析,在192.168.0.108主機上配置,在/etc/named.rfc1912.zones中加入下邊幾行:
type slave;
file "slaves/192.168.0.zone";
masters { 192.168.0.106; };
};
(2)檢查配置檔案文法,重載配置使修改生效;
反向解析的從機配置完成
注意,做主從配置時,要確定兩台伺服器的時間必須同步。
DNS子域授權
這裡隻對正向解析子域授權做出簡單介紹:
(1)首先要在父域主服務的配置檔案中添加子域的相關記錄,這裡以子域ops.mengxl.com為例,在父域主伺服器的域資料檔案/var/named/mengxl.com.zone中添加NS和其A記錄;
(2)配置子域伺服器(192.168.0.107),配置過程與父域的正向解析配置過程相同,這裡就不做過多表述:
這裡隻貼出子域的資料配置檔案/var/named/ops.mengxl.com.zone的内容:
配置完子域後,我們可以發現子域可以直接解析其所負責的域名解析(如www.ops.mengxl.com),而不能直接解析父域的域名(如:www.mengxl.com)需要尋找根進行疊代查詢,這是我們所不想的,這就需要進行轉發了
(1)區域轉發配置:僅對特定的區域進行轉發,這裡配置對子域對父域的解析請求轉發個父域主DNS進行解析
在192.168.0.107的/etc/named.rfc1912.zones配置檔案中添加下邊一段
type forward;
forward only;
forwarders { 192.168.0.106; 192.168.0.108; };
這樣,子域對父域的相關解析就會直接轉發到父域的DNS伺服器進行解析了
注意,配置的轉發器必須允許對目前主機進行遞歸查詢
(2)全局轉發配置,針對凡本地沒有通過zond定義的區域查詢請求,全部轉給某轉發器;
此配置需要在/etc/named.conf中的option字段中加入下邊兩段:
forward {only|first}; //only表示隻是轉發給指定DNS轉發伺服器等待查詢結果;first表示首先轉發,沒響應則進行疊代查詢;
forwarders { SERVER_IP; }; //SERVER_IP指轉發器的IP位址;
bind中的安全配置,按需求在每台DNS主機中進行配置
dns配置檔案中主要依靠acl通路控制清單與通路控制指令來進行安全限制了:
acl:就是通路控制清單,把一個或多個位址歸并為一個命名的集合,随後通過此名稱即可對此集合内的所有主機進行統一的通路控制了;
一般在/etc/named.conf主配置檔案的options字段的外部上邊進行定義
如:acl mynet {
192.168.0.0/24;
127.0.0.1/8;
在bind中内置4個acl:
none:沒有一個主機;
any:任意主機;
local:本機;
localnet:本機所在的IP所屬的網絡;
注意,此處定義中,可以是ip位址,也可以是網段,子網路遮罩表示時隻能是/數字格式;
dns配置檔案中的通路控制指令,主要有下邊幾個:
allow-query {}; 允許查詢的主機,白名單;
allow-transfer {}; 允許向哪些主機做區域傳送,預設為所有主機,應該配置為僅允許從伺服器;
allow-recursion {}; 允許哪些主機向目前DNS伺服器發起遞歸查詢請求;預設為允許所有,請按需求進行配置
allow-update {}; DDNS,允許動态跟新區域資料庫檔案中的内容;沒有相關功能需求,最好都設定為allow-update { none; };
注意,該通路控制,可以寫入區域定義中,隻對指定區域生效,也可以定義到options的字段中,對所有的區域生效;
如:在192.168.0.108中設定,隻允許本機與從機進行正向解析的區域傳送:
先在主配置檔案/etc/named.conf中配置acl
acl slaves {
192.168.0.106;
127.0.0.1;
};
然後在/etc/named.rfc1912.zones中的mengxl.com的區域定義段中加入控制字段;
zone "mengxl.com" IN {
file "mengxl.com.zone";
allow-transfer { slaves; };