DNS服務搭建詳解

一、DNS域名:

根域名:.
一級域名:Top Level Domain: tld
com(公司)、edu(教育)、mil(軍事)、gov(政府)、net、org(組織)、int(反向)、arpa(反向)
二級域名:

最多127級域名

二、DNS查詢類型:

遞歸查詢
迭代查詢

三、解析類型:

FQDN --> IP
IP --> FQDN

四、DNS服務器類型

主DNS服務器: 管理和維護所負責解析的域內解析庫的服務器
從DNS服務器: 從主服務器或從服務器“複製”(區域傳輸)解析庫副本
緩存DNS服務器(轉發器)

(一)主從服務器工作原理:
1.主從服務器同步機制:
推:主服務器節點發生變化立即主動推送給從服務器
拉:從服務器定時從主服務器詢問拉取數據

2.區域傳輸:
完全傳輸:傳送整個解析庫
增量傳輸:傳遞解析庫變化的那部分內容

3.解析答案:
肯定答案:
否定答案:請求的條目不存在等原因導致無法返回結果
權威答案:
非權威答案:

4.區域解析庫: 由衆多資源記錄(RR)組成:
資源記錄:Resource Record, RR

5.記錄類型:
SOA: Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄
NS: Name Server,專用於標明當前區域的DNS服務器
A: FQDN到IPv4地址解析;
AAAA: FQDN到IPv6地址解析;
PTR: IP 到FQDN域名解析;
CNAME: Canonical Name,別名記錄
MX: Mail eXchanger,郵件交換器
TXT: 對域名進行標識和說明的一種方式,一般做驗證記錄時會使用此項,如:SPF(反垃圾郵件)記錄,https驗證等

6.資源記錄定義的格式:
語法:name [TTL] IN rr_type value
(1)name: FQDN全稱域名,如www.test.com. ;當前域的名稱可省略不寫,直接寫成www系統會自動補全;@可用於引用當前區域的名字;
(2) TTL: 存在的資源記錄緩存時長;可從全局繼承,後面每條記錄可省略,如有特殊設定,則需要在記錄上顯示添加;全局設定如:$TTL 1D ;默認單位爲秒;
(3)IN: 表示Internet資源,照抄即可,條目中可繼承上一條記錄,省略不寫
(4)rr_type: 資源記錄類型,如A,CNAME,NS等
(5)value: 資源記錄類型對應的值,如A記錄對應的值爲域名解析對應的IP地址

每條資源記錄中:
(1)正向解析中,同一個域名可以通過多條記錄對應多個IP,此時DNS服務器會以輪詢方式響應,實現負載均衡
(2)同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機

區域數據庫文件基本格式:

$TTL 1D
@       IN SOA  master  admin (
                  0       ; serial   #;serial 表示註釋
                  1D      ; refresh
                  1H      ; retry
                  1W      ; expire
                  3H )    ; minimum                                                                                                                  
       NS      master
www    A   192.168.37.100

可簡寫爲:

$TTL 1D
@       IN SOA  master  admin ( 0 1D 1H 1W 3H )                                                                                                               
        NS      master
www     A       192.168.37.100

SOA記錄格式
@ :表示當前域
$TTL: 表示自己去其他DNS的域名解析的結果緩存的時間;1D表示一天,默認單位是秒
IN:表示intnet的類型;可以繼承上一條記錄的;
SOA:表示資源記錄類型;一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄
serial:序列號主服務器解析庫變化時,其序列遞增
refresh:刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔
retry:重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
expire:過期時長:從服務器聯繫不到主服務器時,多久後停止服務
minimum:不存在的記錄的緩存時長
NS:指定誰提供DNS服務;

7.各資源記錄詳細格式:
SOA記錄格式:
name: 當前區域的名字,例如 test.com.
value: 有多部分組成
(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
(2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換
(3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL

test.com. 86400 IN SOA ns.test.com.  mail.test.com. ( 1 2H 10M 1W  1D )

NS記錄:
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns1.test.com.
注意:
(1) 相鄰的兩個資源記錄的name相同時,後續的可省略
(2) 對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄

test.com. IN NS ns1.test.com.
test.com. IN NS ns2.test.com.
ns1.test.com. IN A 192.168.37.100
ns2.test.com. IN A 192.168.37.101

A記錄
name: 某主機的FQDN,例如:www.test.com.
value: 主機名對應主機的IP地址
例如:

www.test.com. IN A 1.1.1.1
www.test.com. IN A 2.2.2.2

mx1.test.com. IN A 3.3.3.3
mx2.test.com. IN A 4.4.4.4

$GENERATE 1-254  HOST$  IN A 192.168.37.$                   #連續範圍主機對應寫法

*.test.com. IN A 5.5.5.5

PTR記錄:
name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定後綴:in-addr.arpa.,所以完整寫法爲:4.3.2.1.in-addr.arpa.

100.37.168.192.in-addr.arpa.   IN    PTR      www.magedu.com.

CNAME記錄:
name: 別名的FQDN
value: 真正名字的FQDN
例如:

www.test.com. IN CNAME websrv.test.com.
websrv.test.com.  IN	A	192.168.37.100

五、搭建DNS服務:使用bind工具

環境準備:
1.安裝包yum install bind
2.配置文件

  • 主配置文件:/etc/named.conf
  • 區域名稱存放文件:/etc/named.rfc1912.zones
  • 區域數據庫存放路徑:/var/named/
  • 正向解析區域數據庫模板文件:/var/named/named.localhost
  • 反向解析區域數據庫模板文件:/var/named/named.loopback
  • 從服務器數據庫文件存放路徑:/var/named/slaves

3.啓動服務systemctl start named.service

(一)只緩存DNS服務器

1.設置DNS主配置文件

vim /etc/named.conf
(1)設置監聽主機爲本機:整行註釋掉或改爲localhost

     //   listen-on port 53 { localhost; };

(2)設置允許查詢的主機:整行註釋掉或改爲any

    //      allow-query     { any; };

以上兩條配置可爲局域網內客戶端訪問互聯網域名提供解析服務;

2.添加區域管理名稱

[root@CentOS7 ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {                                                                                                                                                     
        type master;
        file "test.com.zone";
};

3.添加區域數據庫

vim /var/named/test.com.zone
$TTL   1D
@      IN SOA master admin (1 3H 1M 1D 3H )
       NS master
master IN A 192.168.37.100
www    IN A 192.168.37.20
mail   IN A 192.168.37.30
ftp    IN A 192.168.37.40  

4.修改數據庫文件所屬組以及權限

chgrp named /var/named/test.com.zone 
chmod 640 /var/named/test.com.zone 

5.啓動服務/重新加載配置文件

systemctl start named
rndc reload

在這裏插入圖片描述
客戶機測試:
在這裏插入圖片描述

(二)主從複製DNS服務器

所有服務器虛擬機環境都禁用防火牆和selinux

1.主DNS服務器

(1)配置主配置文件,設置允許爲其他主機提供服務,添加允許同步的從服務器IP

[root@master ~]#vim /etc/named.conf
options {
//      listen-on port 53 { localhost; };
//      allow-query     { any; };
        allow-transfer {192.168.37.103;};       #添加允許同步的從服務器IP

(2)添加區域名稱:

[root@master ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {
	type master;
	file "test.com.zone";
};

(3)創建數據庫文件:指定從服務器地址;需手工修改版本號

[root@master ~]#vim  /var/named/test.com.zone
    $TTL   1D
    @      IN SOA master admin (1 3H 1M 1D 3H )         #需修改版本號
           NS master
           NS slave                    #指定從服務器域
    master IN A 192.168.37.100          
    www    IN A 192.168.37.20
    slave  IN A 192.168.37.103     #從服務器域名對應的IP地址

[root@master ~]chgrp named /var/named/test.com.zone    #修改數據庫文件所屬組
[root@master ~]chmod 640 /var/named/test.com.zone      #修改數據文件權限

(4)啓動服務/重新加載配置文件

[root@master ~]systemctl start named
[root@master ~]rndc reload
2.從DNS服務器

(1)設置允許爲其他主機提供服務;設置同步安全策略,不允許其他主機同步從服務器

vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { localhost; };
        allow-transfer {none;};

(2)配置區域名稱:

[root@slave slaves]# vim /etc/named.rfc1912.zones 
    zone "test.com" IN {   #區域名稱與主節點區域名稱一致
      type slave;           #區域類型
      masters {192.168.37.100;};       #指定從的主節點IP
      file "slaves/test.com.zone.slave";
    };

(3)啓動服務/同步服務配置

[root@slave slaves]# systemctl start named
[root@slave slaves]# rndc reload
3.客戶端測試:

設定主從DNS 地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.37.101
DNS1=192.168.37.100
DNS2=192.168.37.103
PREFIX=24
DEFROUTE=yes
NAME="System eth0"
dig www.test.com

在這裏插入圖片描述
模擬主服務器宕機:

[root@master ~]#systemctl stop named

再次測試客戶機:

在這裏插入圖片描述

(三)DNS子域委派

父DNS

1.主配置文件

[root@father ~]# vim /etc/named.conf
(1)開啓對外服務功能:
    options {
    //      listen-on port 53 { 127.0.0.1; };
    //      allow-query     { localhost; };
(2)關閉安全驗證:
    dnssec-enable no;
    dnssec-validation no; 

2.配置父域的區域名稱文件:

[root@father ~]#vim /etc/named.rfc1912.zones 
    zone "baidu.com" IN {
            type master;
            file "baidu.com.zone";
    };  

[root@CentOS7 cd]#named-checkconf

3.父域的區域文件數據庫:

[root@father ~]#vim /var/named/baidu.com.zone
$TTL 1D
@      IN SOA master admin ( 0 1D 1H 1D 1D )                                                                                                                               
          NS  master
shanghai  NS  ns.shanghai                #指定委派的子域DNS服務器
ns.shanghai A 192.168.37.103

[root@CentOS7 cd]#named-checkzone baidu.com /var/named/baidu.com.zone

4.啓動服務

子DNS

1.主配置文件:配置可提供對外服務功能

[root@father ~]# vim /etc/named.conf
開啓對外服務功能:
        options {
        //      listen-on port 53 { 127.0.0.1; };
        //      allow-query     { localhost; };
        }

2.區域名稱文件:創建子區域信息

zone "shanghai.baidu.com" IN {
        type master;
        file "shanghai.baidu.com.zone";

};

3.創建子域的區域數據庫

[root@CentOS7 ~]# vim /var/named/shanghai.baidu.com.zone 
$TTL 1D
@       IN  SOA  master admin ( 0 1H 1H 1D 1D )
            NS   master
master      A    192.168.37.103
www     CNAME    websrv
websrv      A    192.168.37.199

[root@CentOS7 ~]# chgrp named /var/named/shanghai.baidu.com.zone   #修改數據庫組爲named組
[root@CentOS7 ~]# chmod 640 /var/named/shanghai.baidu.com.zone  #修改區域數據庫權限爲640

4.啓動服務/重新加載配置文件

[root@CentOS7 ~]# systemctl start named
[root@CentOS7 ~]# rndc reload

(四)轉發DNS服務器

1.轉發服務器配置

[root@CentOS7 cd]#vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
      
        forward only;
        forwarders {192.168.37.103;};
      
        dnssec-enable no;
        dnssec-validation no;
}
[root@CentOS7 cd]#systemctl start named		#啓動服務

2.指定轉到的服務器配置

[root@CentOS7 cd]#vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

        dnssec-enable no;
        dnssec-validation no;

[root@CentOS7 cd]#systemctl start named 		#啓動服務

(五)智能DNS服務器(CDN)

場景:企業站點分不同地區服務器存放,爲不同地區用戶訪問提供更快速訪問,用戶訪問提交到DNS調度器,DNS調度器根據不同地區的IP用戶,找到對應地區距離近的主機上,返回對應應用服務器IP給用戶,用戶直接訪問離自己近的主機。

在這裏插入圖片描述

[root@CentOS7 named]#vim /etc/named.conf
acl beijingnet {
        192.168.37.0/24;
        192.168.38.0/24;
};
acl shanghainet {
        172.16.0.0/16;
        172.18.0.0/16;
};
acl othernet {
        any;
};

options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
};


logging {
};


view view_beijing {
        match-clients { beijingnet;};               #match-clients中名稱對應acl名稱
        include "/etc/named.rfc1912.zones.bj";
};

view view_shanghai {
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.sh";                                                              
};

view view_othernet {
        match-clients { othernet;};
        include "/etc/named.rfc1912.zones.other";
};

include "/etc/named.root.key";

[root@CentOS7 named]#vim /etc/named.rfc1912.zones
zone "." IN {             #把named.conf中的根域移動到區域文件中
        type hint;
        file "named.ca";
};

zone "magedu" IN {
        type master;
        file "magedu.com.zone.bj";
};

[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
[root@CentOS7 named]#chgrp named /etc/named.rfc1912.zones.*

[root@CentOS7 named]#vim /var/named/magedu.com.zone.bj
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   192.168.37.200  

[root@CentOS7 named]#vim /var/named/magedu.com.zone.sh
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   172.16.0.200  

[root@CentOS7 named]#vim /var/named/magedu.com.zone.other
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   10.0.0.200

配置時需要注意:
數據文件中SOA記錄小括號()兩邊有空格,至少右邊的括號左側需要空格;正常情況括號內的值爲紅色,如有白色則可能會帶來問題,rndc reload 檢測不出來此情況。
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章