天天看點

DNS服務正向、反向解析區域,主/從區域資料庫複制,子域授權及基本安全控制

DNS是應用層的協定,預設使用UDP的53端口,也會用到TCP的53端口。

DNS名稱解析方式:

名稱 --> IP:正向解析

<a href="http://s3.51cto.com/wyfs02/M02/7F/14/wKioL1cTI2_RHR3YAAK6uLUozo4821.png" target="_blank"></a>

第一段這種方式叫遞歸查詢,隻發出去一次請求,就給它傳回答案;第二段這種方式就疊代查詢,要發出多次請求,需要自己查詢不同域名,最後才傳回答案;這就是DNS的查詢類型。

一般内網遞歸,外網疊代。

IP --&gt; 名稱:反向解析

<a href="http://s4.51cto.com/wyfs02/M02/7F/16/wKiom1cTIwXjUuEDAAGHCVnpT9g722.png" target="_blank"></a>

每一層伺服器都有各自的資料庫,來存儲各自負責的網段,這與正向解析的資料庫是兩個各自獨立的資料庫。

一次完整的查詢請求經過的流程:

Client --&gt; hosts檔案 --&gt; DNS Local Cache --&gt; DNS  Server (recursion) --&gt; 分兩種情況:

(1)自己負責解析的域:直接查詢資料庫并傳回答案

(2)不是自己負責解析域:Server Cache --&gt; iteration(疊代)

主-輔DNS伺服器:

主DNS伺服器:維護所負責解析的域資料庫的那台伺服器;讀寫操作均可進行

從DNS伺服器:從主DNS伺服器那裡或其它的從DNS伺服器那裡“複制”一份解析庫;但隻能進行讀操作

在linux系統上實作DNS服務的程式是bind,安裝bind程式,而bind程式安裝後運作的程序名為named;

]# yum install bind

主配置檔案:/etc/named.conf、/etc/named.rfc1912.zones

解析庫檔案/var/named/目錄下,以區域名字命名:ZONE_NAME.zone

正向解析庫檔案:/var/named/named.localhost

反向解析庫檔案:/var/named/named.loopback

注意:根區域解析庫檔案named.ca、正向解析庫檔案named.localhost、反向解析庫檔案named.loopback都不是程式提供的,而是rpm包制作者提供的。

配置主DNS伺服器

正向區域:

第一步:定義正向區域zone

]# vim /etc/named.con

修改内容:

listen-on port 53 { 127.0.0.1; 172.18.252.23; };

dnssec-enable no

//allow-query  { localhost; };

添加本地主機位址;把dnssec都改為no;關閉僅允許本地查詢即加//注釋:

]# vim /etc/named.rfc1912.zones 

添加内容:

zone "magedu.com" IN {

    type master;

    file "magedu.com.zone";

};

注意:在區域中定義的這個file指明的magedu.com.zone區域資料庫檔案還不存在,需要自己建立,如果在上面配置檔案的file中定義的是相對路徑,預設為在/var/named/目錄下建立,且這個目錄預設是不存在的。

第二步:建立正向區域解析資料庫檔案(主要記錄為A或AAAA記錄)

一般預設在/var/named目錄下建立,為magedu.com.zone區域建立編輯一個正向區域資料庫檔案,建立正向區域資料庫檔案,自己取名為magedu.com.zone。

區域資料庫檔案除了宏定義外,都是資源記錄,第一條必須為soa記錄。

]# vim /var/named/magedu.com.zone

$TTL 3600:機關是秒;

$ORIGIN magedu.com.

@       IN      SOA     ns1.magedu.com.     403868144.qq.com. (

    2016041001

    1H

    10M 

    3D

    1D )

             IN      NS      ns1

             IN      NS      ns2 

             IN      MX   10 mx1

             IN      MX   20 mx2

ns1     IN      A       172.18.11.2

ns2     IN      A       172.18.11.3

mx1     IN      A       172.18.11.4

mx2     IN      A       172.18.11.5

www     IN      A       172.18.11.2

web     IN      CNAME   www

bbs     IN      A       172.18.11.2

第三步:修改正向區域資料庫檔案的權限為其它不可讀,屬組為named

]# chown :named magedu.com.zone

]# chmod o= magedu.com.zone

第四步:文法檢查

]# named-checkconf

]# named-checkzone magedu.com /var/named/magedu.com.zone

檢視區域資訊

]# rndc status

注意:正向區域名一定要與在/etc/named.rfc1912.zones檔案中的zone定義的正向區域名一緻;但zone中的區域名後的.可省略。

第五步:讓伺服器重載配置檔案和區域資料檔案

]# rndc reload

第六步:測試DNS伺服器是否能解析

]# host -t A bbs.magedu.com @172.18.11.2

]# dig -t NS magedu.com @172.18.11.2

]# host -t MX magedu.com @172.18.11.2

配置反向區域,配置步驟同配置正向解析區域相同

第一步:定義反向區域

]# vim /etc/named.rfc1912.zones

zone "11.18.172.in-addr.arpa" IN {

    file "172.18.11.zone";

第二步:定義反向區域解析庫檔案(主要記錄為PTR)

一般預設在/var/named目錄下建立;反向區域解析庫檔案自己取名為172.18.250.zone。

]# vim 172.18.11.zone

$TTL 3600

$ORIGIN 250.18.172.in-addr.arpa.設定自動補上完整IP的内容;

@   IN  SOA     ns1.magedu.com.  403868144.qq.com. (

        2016041001

        1H

        10M

        3D

        12H ) 

   IN  NS      ns1.magedu.com. 

2 IN  PTR     ns1.magedu.com. 

3 IN  PTR     ns2.magedu.com.

4 IN  PTR     mx1.magedu.com.

5 IN  PTR     mx2.magedu.com.

2 IN  PTR     bbs.magedu.com.

第三步:修改反向區域資料庫檔案的權限為其它不可讀,屬組為named

]# chgrp named 172.18.11.2.zone

]# chmod o= 172.18.11.2.zone 

第四步:檢查文法

]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone

注意:反向區域名一定要與在/etc/named.rfc1912.zones檔案中的zone定義的反向區域名一緻;但zone中的區域名後的.可省略。

第六步:測試DNS伺服器是否能反向解析

]# dig -x 172.18.11.2

以上配置為主DNS伺服器配置過程。

配置從DNS伺服器:

首先配置正向區域的從,再配置反向區域的從。

在從伺服器上配置:

第一步:定義從區域

]# vim /etc/named.conf

第二步:配置從伺服器為正向區域的DNS伺服器

zone "magedu.com"       IN {    

        type slave;

        file "slaves/magedu.com.zone";

        masters { 172.18.11.2; }

第三步:檢查文法

第四步:在主伺服器上配置

提示:添加一條ns記錄,例如可以為NS2,這個名字和從伺服器的自身主機名沒關系,但是NS2要有一條A記錄,指向從伺服器主機即172.18.11.3是從伺服器的IP位址;這條記錄必須得有。

第五步:檢查主伺服器區域檔案文法

第六步:重載配置檔案

第七步:在從伺服器上操作,重載配置檔案

測試從DNS伺服器正向解析

驗證從伺服器能同步到正向解析資料庫檔案

在主伺服器區域檔案中新增一條pop3的記錄,并遞增序列号;

2016041003:系列号遞增;

pop3    IN      A       172.18.11.6:添加pop3的A記錄;

在從伺服器上檢視是否收到更新的區域資料庫檔案

]# dig -t A pop3.magedu.com @172.18.11.3

配置從伺服器為反向區域的DNS伺服器

第一步:在從伺服器上主配置檔案中添加反向區域

        file "slaves/172.18.11.zone";

        masters { 172.18.11.2; };

第二步:檢查主配置檔案文法

第三步:在主伺服器的反向區域資料庫檔案中要確定有一條NS記錄必須要有,還可以有ns對應的ptr記錄

]# vim /var/named/172.18.11.zone

2016041002

    IN  NS      ns2.magedu.com.

3   IN  PTR     ns2.magedu.com.

第四步:檢查反向區域檔案文法

第五步:重載

第六步:從伺服器重載

檢視從伺服器是否同步到反向解析資料庫檔案

]# ls /var/named/slaves

測試從DNS伺服器反解析

]# dig -x 172.18.11.2 @172.18.11.3

子域授權方法:

第一步:在父域的主DNS伺服器上的正向區域資料庫檔案/var/named/magedu.com.zone上授權子域

2016041004

ops     IN      NS      ns1.ops

ns1.ops IN      A       172.18.11.4

第二步:重載

在子域伺服器(172.18.11.4)上操作

第一步:編輯主配置檔案

listen-on port 53 { 127.0.0.1; 172.18.11.4; };

第二步:啟動named程式

]# systemctl start named.service

第三步:配置172.18.11.4的伺服器為ops.magedu.com子域的主伺服器

zone "ops.magedu.com" IN {

    file "ops.magedu.com.zone";

第四步:在var/named/目錄下建立file中指明的ops.magedu.com.zone正向區域資料庫檔案

]# vim var/named/ops.magedu.zone

$ORIGIN ops.magedu.com.

@   IN  SOA       ns1.ops.magedu.com.   403868144.qq.com. (

        2016041101 

        1H  

        10M 

        1D  

        2H ) 

    IN  NS          ns1 

ns1 IN  A           172.18.11.4

www IN  A           172.18.11.4

第五步:修改正向區域資料庫檔案權限為其它沒有寫權限,屬組為named

]# chmod o= ops.magedu.zone 

]# chgrp named ops.magedu.zone

第六步:文法檢查

]# named-checkzone ops.magedu.com ops.magedu.com.zone

第七步:重載

第八步:測試正向解析

在子域伺服器上定義轉發區域:

 第一步:編輯主配置檔案

    type forward;

    forward only;

    forwaders { 172.18.11.2; 172.18.11.3; };

第二步:檢查文法

第三步:重載

第四步:測試

在父域伺服器上解析子域

在子域服務上解析父域

在子域伺服器上定義全局轉發:

在options段編輯:

forward only;

forwarders { 172.18.11.2; };

第三步:測試baidu

安全相關的配置

在子域伺服器上,應該僅設定為允許從伺服器區域傳送

在主伺服器上配置:僅允許從伺服器區域傳送;通路控制清單allow-transfer

    allow-transfer { slaves; };

在主伺服器上配置通路控制清單:

編輯/etc/named.conf配置檔案,在options段前添加slaves通路控制清單:

acl slaves {

        172.18.11.3;

        127.0.0.1;

檢查文法:

重載:

在非從伺服器上測試:

]# dig -t axfr magedu.com @172.18.11.2

設定成功。

在從伺服器上測試區域傳送:

在主伺服器上測試:

]# dig -t axfr magedu.com @127.0.0.1

均顯示區域傳送失敗;因為,使用本機172.18.11.2這個位址,在通路控制清單中沒有定義是以不能傳送;而127.0.0.1這個位址即使在通路控制清單中定義了,但因為沒有在options段定義監聽的位址,是以也不能進行區域傳送;

修改主伺服器配置檔案/etc/named.conf,

添加監聽127.0.0.1:

listen-on port 53 { 127.0.0.1; 172.18.11.2; };

重新開機服務:

]# systemctl restart named.service

即可;

配置通路控制清單中的遞歸,僅允許為本地用戶端做遞歸

修改主伺服器配置檔案/etc/named.conf,添加遞歸通路控制清單;

添加:

acl mynet {

        127.0.0.0/8;

僅允許本地127網段做遞歸查詢;

(把recursion yes;改為:)allow-recursion { mynet; };

是以,使用其它主機做遞歸都拒絕,如使用子域伺服器遞歸查詢baidu

遞歸查詢失敗;

當在主伺服器配置檔案/etc/named.conf,添加172.18.11.4到遞歸通路控制清單即可實作遞歸;

        172.18.11.4/16;

此時,使用子域伺服器遞歸查詢baidu;

成功遞歸;

對于從伺服器,也要修改主配置檔案/etc/named.rfc1912.zones,設定區域傳送和遞歸查詢的通路控制清單;

zone "magedu.com"  IN {

        allow-transfer { none; };

        allow-update { none; }; 禁止程序動态更新,跟區域傳送沒關系;

        allow-update { none; };

在子域伺服器上測試是否能通過從伺服器對magedu.com域進行區域傳送;

]# dig -t axfr magedu.com @172.18.11.3

顯示失敗;

]# dig -t axfr ops.magedu.com @172.18.11.4:子域可以為自己進行傳送區域;因為子域沒有做通路控制;

正常情況下,每一個域名伺服器,隻要沒有從伺服器,allow-transfer都應該是none,有從伺服器,allow-transfer應該僅指向從伺服器;而且每一個區域都應該是allow-update設為none,除非使用DDNS。

本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1764741,如需轉載請自行聯系原作者