1. 程式人生 > >linux學習-centos7上部署DNS服務

linux學習-centos7上部署DNS服務

    DNS是Domain Name System 域名系統的簡稱,DNS可以提供為計算機,服務以及接入網際網路或者區域網的任何資源提供分層的名稱解析功能。DNS提供很多功能,但是最主要的是進行域名與IP地址的之間的解析。域名是分級的,一般分為:主機名.三級域名.二級域名.頂級域名.。注意,最後有一個點代表的是根域,是所有的域名的起點。

   

 一、安裝DNS軟體

    centos7下的DNS軟體主要是伯克利加州大學研發的BIND(Berkeley Internet Name)。bind-utils軟體包提供DNS查詢工具,如dig,host,nslookup等。

yum  -y  install  bind
yum -y install bind-utils


配置檔案解析

    BIND配置檔案主要分為主配置檔案與域資料記錄檔案,主配置檔案包括很多使用花括號的引起來的定義語句,在定義語句中可以設定很多個選項,主配置檔案的核心功能就是定義域,以及告知計算機到哪裡可以找到響應域的資料記檔案。而域資料記錄檔案則儲存具體的域名與IP之間的解析記錄,DNS通過讀域資料記錄檔案來解答客戶端的查詢請求。

    主配置檔案一般為/etc/named.conf

    典型的主配置檔案語法如下

statement_name {
option1;
option2;
... ...;
};

以下為/etc/named.conf檔案中常用的定義語句

acl 語句允許預定義一組主機,從而控制允許還是拒絕他人訪問域名伺服器,BIND預定義了一些主機訪問控制列表,其中any可以匹配任意IP地址,localhost可以·匹配·本地系統上所有的IP地址,localnets匹配本地系統所連結的任意網路,none將不匹配任何ip地址。

以下為定義的acl控制列表,一個為黑名單,一個為白名單。

acl black {
172.16.0.0/16;
192.168.9.12;
};
acl white {
10.0.0.0/8;
192.168.0.0/24;
}
options {
allow-query { white ; };
blackhole { black; };
};

 options語句用來定義全域性配置選項,在全域性配置中至少要定義一個工作路徑,預設工作路徑為var/named/,具體的常見引數如下 


directory                設定域名服務的工作目錄,預設為/var/named
dump-file                 執行rndc dumpdb備份快取資料後儲存的檔案路徑與名稱
statistics-file              執行rndc stats後,統計資訊的儲存路徑與名稱
listen-on port                  指定監聽的IPv4網路介面
allow-query                 指定哪些主機可以查詢伺服器的權威解析記錄
allow-query-cache                    指定哪些主機可以通過伺服器查詢非權威的解析資料,如遞迴查詢資料
blackhole                設定拒絕哪些主機的查詢請求
recursion                是否允許進行遞迴查詢
forwards                 指定一個IP地址,所有對本伺服器的查詢將轉發到該IP進行解析
max-cache-size                    設定快取檔案的最大容量


    zone語句用來定義域及相關選項,定義域也就意味著你希望以後維護自己公司的域名解析。該語句的中的重點選項有type域file,以下為zone語句內常用的選項及描述

type                         設定域型別,型別可以是:
                           hint:當本地找不到相關解析後,可以查詢根域名伺服器
                           maser:定義權威域名伺服器
                           slave:定義輔助域名伺服器
                           forward:定義轉發域名伺服器
file                         定義域資料檔案,檔案儲存在directory所定義的目錄下
notify                            定於域資料檔案,檔案儲存在directory所定義的目錄下
master                            定義主域名伺服器IP地址,當type設定為slave後此選項才有效
allow-update                                 允許哪些主機動態更新域資料資訊
allow-tansfer                               哪些從伺服器可以從主伺服器下載資料檔案


以下為簡單的zone語句例項,example.com是定義的域,tpye定義為本機為example.com域的主域名伺服器,該域的解析檔案儲存在example.com.zone檔案中,該檔案儲存在/var/named/目錄下。當定義方向解析域時,需要將網路地址段反過來輸入,並以固定的in-addr.arpa格式結尾。通過定義hint的根域,這樣當客戶端查詢不屬於自己維護的域名時,可以根據根伺服器進行迭代查詢,最終返回正確的結果,全球的根域名伺服器資訊儲存在named.ca檔案中,該檔案時安裝完BIND軟體後自動生成的模板檔案,我們可以在/usr/share/doc/bind-9.9.4/sample/var/named/目錄下找到它。

Zone "." IN {
    type hint;
    file "named.ca";
};
zone "example.com" IN {
    type master;
    file "example.com.zone";
};
zone "0.168.0.192.in-addr.arpa" IN {
    type master
    file "192.168.0.zone";
};

    在BIND軟體的主配置檔案中,如果定義了zone語句,還需要額外建立域資料檔案。預設域資料檔案被儲存在/var/named目錄下,檔名稱由zone語句中的file選項設定。資料檔案分為正向解析資料檔案和反向資料檔案,正向解析檔案儲存了域名到IP地址的對映記錄,反向解析檔案儲存了IP地址到域名的對映記錄,以下為常用的記錄型別及描述

SOA記錄              域權威記錄,說明本機伺服器為該域的管理伺服器
NS記錄               域名伺服器記錄
A記錄                正向解析記錄,域名到地址的對映
PTR記錄              反向解析記錄,IP地址到域名的對映
CNAME記錄            別名記錄,為主機新增別名
MX記錄               郵件記錄,指定域內的郵件伺服器,需要指定優先順序

以下就舉例說明正向解析域資料檔案,說明各個語法格式。

TTL的值為DNS記錄的快取時間,該值是其他域名伺服器將資料存放在快取中的時間,1D代表一天

SOA後面記錄的root.example.com.代表域的權威伺服器,jacob.google.com是管理員的郵箱,由於@在資料檔案中的代表特殊含義,這裡使用.來代表@符號

NS記錄代表域名伺服器記錄,如果由多個域名伺服器,則可以新增多個NS記錄,但是每個NS記錄下面都需要由對應的A記錄

A記錄為正向解析記錄,格式為在域名後面輸入相應的IP地址

IN代表Internet

MX記錄指定的郵件伺服器時,可以設定優先順序

最後CNAME記錄為別名,可以使用web.example.com來代表www.example.com具體的配置檔案如下:

$TTL 1D
@ IN SOA             root.example.com ,jacob.goole.com. (
                     0
                     1D
                     1N
                     1W
                     3H)
                 IN NS root.example.com.
                 IN MX 10  mail.example.com.
 root.example.com.     IN     A 172.16.0.254
 www.example.com.     IN     A 172.16.0.200
              IN     A  172.16.0.201
 ftp.example.com.     IN     A 172.16.0.100
 mail            IN     A  172.16.0.25
 web            IN     A  CHAME www

注意:

1、zone語句後定義的域對於資料檔案的簡寫相當重要,如果區資料為你教案不以"."結尾的名稱後會被自動加上該域名稱

2、資料檔案中@符號代表zone所以定義的域名稱

3、如果在資料檔案中某條記錄名稱為空格或者製表符,那麼BIND系統會直使用上一條記錄的名稱

4、如果同一個域名設定多個A記錄,則客戶請求該域名解析時,伺服器會以輪詢的方式將結果返回給客戶端,一定程度上實現負載均衡


二、部署域名伺服器

搭建域名伺服器,域名設定為www.chucloud.com,正向解析的域名,網路地址為172.31.208.0/24,按照以下三臺進行

伺服器IP                                    伺服器名稱                                            功能描述

172.31.208.80                           dns.chucloud.com                                域名伺服器

172.31.208.81                           ntp.chucloud.com                                 時間伺服器

                                                  mail.chucloud.com                                郵件伺服器

172.31.208.82                           www.chucloud.com                               網站伺服器 


2.1安裝軟體

yum install -y  bind-utlis




2.2修改配置檔案

chown root.named /etc/named.conf
vim /etc/named.conf

按照以下修改

acl black {                                    #黑名單
172.31.101.0/24;
};

acl white {                                    #白名單
172.31.208.0/24;
};

options {
        listen-on port 53 { any; };                                    #定義任何主機都可以使用53埠查詢
        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     { white; };                #允許白名單查詢
        blackhole       { black; };                #禁止黑名單查詢
        forwarders    {                                                 #設定轉發查詢
                            223.5.5.5;                    #公網DNS伺服器
                            114.114.114.114;
        }

image.png

定義zone

zone "." IN {                        
        type hint;
        file "named.ca";
};

zone "chucloud.com" IN {
        type master;
        file "chucloud.com.zone";
};

zone "208.31.172.in-addr.arpa" IN {
        type master;
        file "208.31.172.zone";
};

image.png

注意:

1、反向解析記錄的寫法和IP地址是反過來了,172.31.208.0 寫為208.31.172.in-addr.arpa

2.3 建立區資料檔案

    主配置檔案僅是對zone域的定義,關於域內主機的具體記錄的解析,還需要依賴於資料檔案的內容,常見的域名解析有正向解析,反向解析記錄,CNAME記錄以及MX記錄等,可以根據模板建立具體的區資料解析檔案

,這些檔案的建立可以根據軟體包中提供的named.loalhost檔案作為模板

cd /usr/share/doc/bind-9.9.4/sample/var/named/
cp /usr/share/doc/bind-9.9.4/sample/var/named/named.ca /var/named/
chown root.named /var/named/named.ca 
cp /usr/share/doc/bind-9.9.4/sample/var/named/named.localhost /var/named/chucloud.com.zone   #複製模板檔案並重命名為chucloud.com.zone
chown root.named /var/named/chucloud.com.zone
vim /var/named/chucloud.com.zone #編輯區域檔案

按照設定的內容編輯區域檔案

$TTL 1D
@	IN SOA	dns.chucloud.com. jacob.abc.com. (
					0	
					1D	
					1H	
					1W	
					3H )	
	NS	dns.chucloud.com.
	MX 10 mail.chucloud.com.
dns 		 	IN  A 172.31.208.80
ntp.chucloud.com.	IN  A 172.31.208.81
mail.chucloud.com.	IN  A 172.31.208.81
www.chucloud.com.	IN  A 172.31.208.82       #完整域名一定以.結尾
web			IN  CNAME www             #別名

image.png

注意:

1、注意@符號

2、A記錄行前面一定不能有空格,不然報錯

3、完整域名必須以"."結尾

4、加上管理員郵箱“jacob.chucloud.com. "


然後新建一個反向解析檔案208.31.172.zone,內容如下

$TTL 1D

@       IN SOA  dns.chucloud.com. jacob.chucloud.com (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      dns.chucloud.com.

        MX 10 mail.chucloud.com.

80              IN  PTR  dns.chucloud.com.

81              IN  PTR  ntp.chucloud.com.

81              IN  PTR  mail.chucloud.com.

82              IN  PTR  www.chucloud.com.

82              IN  PTR  web.chucloud.com.

注意:

1、注意@符號

2、A記錄行前面一定不能有空格,不然報錯

3、完整域名必須以"."結尾

4、因為配置檔案named.conf中反向記錄區域使用“208.31.172.in-addr.arpa“,所以只用寫最後一個IP地址最後主機位,如82

5、如果配置檔案named.conf中反向記錄使用”31.172.in-addr.arpa",則區域檔案記錄IP地址記錄應該寫82.208


三、服務管理

在域名伺服器配置完成後,需要開啟防火牆指定埠53,同時我們可以使用命令檢查配置檔案是否有錯誤

named-checkconf /etc/named.conf   #檢查配置檔案
named-checkzone 208.31.172.in-addr.arpa /var/named/208.31.172.zone #檢查反向解析zone檔案
named-checkzone chucloud.com.zone /var/named/chucloud.com.zone        #檢查正向解析zone檔案
firewall-cmd --permanent --add-port=53/tcp            #使用firewall服務時需要清理iptables規則避免衝突
firewall-cmd --permanent --add-port=53/udp
systemctl start named
systemctl enable named

image.png

四、客戶端測試

在各個主機上配置好DNS伺服器為172.31.208.80後,進行測試

yum install bind-utils  #安裝DNS解析客戶端


在172.31.208.81上

ping www.chucloud.com

ping web.chucloud.com

image.png

可見解析到172.31.208.82

ping www.baidu.com

ping www.163.com

image.png

可見DNS伺服器轉發查詢設定生效

使用域名解析名工具查詢

nslookup www.chucloud.com

nslookup 172.31.208.82

image.png

dig www.chucloud.com

host www.chucloud.com


五、思考

1、很多時候可以用chroot-bind程式,使用chroot來對DNS進行安全加固,但是我沒有實驗成功

2、CentOS7下安裝了bind-chroot之後,若要使用named-chroot.service,則需要關閉named.service。兩者只能執行一個。

3、可以配置從域名伺服器保證負載均衡和可靠性