天天看點

CentOS 7搭建DNS服務

整個Internet大家庭中連接配接了數以億計的伺服器,個人主機,其中大部分的網站、郵件伺服器都使用了域名形式的位址。很顯然這種位址形式要比使用IP位址更加直覺,且更容易被使用者記住。

在Windows搭建DNS服務,可以參考部落格:Windows Server 2016搭建DNS服務

如果想要搭建并管理好DNS伺服器,那麼必須了解的知識點有:

DNS系統在網絡中的作用就是維護一個位址資料庫,其中記錄了各種主機域名和IP位址的對應關系,以友善客戶程式提供正向和反向的位址查詢服務,即:

正向解析:根據域名查找IP位址,即将指定的域名解析為相對應的IP位址;

反向解析:根據IP位址查域名,即将指定的IP位址解析為相對應的域名。

DNS的組成:

CentOS 7搭建DNS服務

常見的頂級域名、國家域名:

CentOS 7搭建DNS服務
CentOS 7搭建DNS服務

DNS服務的工作原理:

CentOS 7搭建DNS服務

根據所管理的區域位址資料的來源不同,DNS系統可以分為不同的類型,在同一台DNS伺服器中,相對于不同的區域來說,也擁有不同的身份,常見的幾種類型如下:

緩存域名伺服器:隻提供域名解析結果的緩存功能,目的在于提高查詢速度和效率,但是沒有自己控制的區域位址資料。建構緩存域名伺服器是,必須設定根域或指定其他DNS伺服器作為解析來源;

主域名伺服器:維護某一個特定DNS區域的位址資料庫,對其中的解析記錄具有自主要制權,是指定區域中唯一存在的權威伺服器、官方伺服器。建構主域名伺服器時,需要自行建立所負責區域的位址資料檔案;

從域名伺服器:與主域名伺服器提供完全相同的DNS解析服務,通常用于DNS伺服器的熱備份。對于客戶機來說,無論使用主域名伺服器還是從域名伺服器,查詢的結果都是一樣的。差別在于:從域名伺服器提供的解析結果不是由自己決定的,而是來自于主域名伺服器。建構從域名伺服器時,需要指定主域名伺服器的位置,以便伺服器能自動同步區域的位址資料庫。

DNS伺服器的角色隻是針對某一個特定的區域而言,比如:一個區域的主域名伺服器可以同時是另一個區域的從域名伺服器。

接下來詳細介紹如何在CentOS 7 中搭建DNS服務:

搭建主域名伺服器:

[root@localhost ~]# yum -y install bind*
#通過yum的方式安裝bind服務           

複制

編寫主配置檔案

[root@localhost ~]# vim /etc/named.conf
#編寫bind服務的主配置檔案
                                        …………                    #省略部分内容
 12 options {
 13         listen-on port 53 { any; };                   
 # 指定域名服務監聽的網絡端口,預設是本機,不能對外提供服務,
 #建議改為any ,表示任意主機,也可以删除;
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";                 
 # 指定從/var/named目錄下讀取DNS資料檔案;
 16         dump-file       "/var/named/data/cache_dump.db";               
 # 當執行導出指令時将DNS伺服器的緩存資料存儲到指定的檔案中;
 17         statistics-file "/var/named/data/named_stats.txt";
# 指定named服務的統計檔案,
#當執行統計指令時會将記憶體中的統計資訊追加到該檔案中;
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         allow-query     { any; };  
 # 允許哪些用戶端通路DNS服務,預設是本機,
 #建議改為“any”,表示任意主機,也可以删除;
                                             …………                     #省略部分内容

 56 zone "benet.com" in {                             
 57         type master;     
 #類型為主區域
 58         file "benet.com.zone";
 59 };
# 添加正向解析資料檔案的資訊 ,伺服器類型是主伺服器,
#檔案名為“benet.com.zone”
 60 zone "10.168.192.in-addr.arpa" in {
 61         type master;
 62         file "192.168.10.arpa";
 63 };
#編寫反向區域檔案           

複制

區域類型:master(主區域);slave(輔助區域);hint(根區域)

編寫區域配置檔案

[root@localhost ~]# cd /var/named
[root@localhost named]# cp named.localhost benet.com.zone
#複制原本正向區域的模闆
[root@localhost named]# cp named.loopback 192.168.10.arpa
#複制原本反向區域的模闆
[root@localhost named]# vim benet.com.zone 
#編寫正向區域配置檔案
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      ns1.benet.com.
ns1     IN      A       192.168.10.1
www     IN      A       192.168.10.10
ftp     IN      CNAME   www
serial:序列号。可以供從伺服器判斷何時擷取新資料的。

refresh:指定多長時間從伺服器要與主伺服器進行核對,

retry:如果從伺服器試圖檢查主伺服器的序列号時,
主伺服器沒有響應,則經過這個時間後将重新進行檢查

expire:将決定從伺服器在沒有主伺服器的情況下權威地持續提供域資料服務的時間長短

minimum:高速緩存否定回答的存活時間                                    

複制

配置選項詳解:

CentOS 7搭建DNS服務
[root@localhost named]# vim 192.168.10.arpa 
#編寫反向區域配置檔案
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      ns1.benet.com.
1       IN      PTR     ns1.benet.com.
10      IN      PTR     www.benet.com.           

複制

編寫完成後

[root@localhost named]# named-checkconf -z /etc/named.conf
#檢查對應的資料庫檔案
zone benet.com/IN: loaded serial 0
zone 10.168.192.in-addr.arpa/IN: loaded serial 0
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
[root@localhost named]# named-checkconf /etc/named.conf
#檢查主區域配置檔案
[root@localhost named]# named-checkzone benet.com benet.com.zone
#檢查區域配置檔案
zone benet.com/IN: loaded serial 0
OK
[root@localhost named]# systemctl start named
#啟動DNS服務
[root@localhost named]# nslookup
> www.benet.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.benet.com
Address: 192.168.10.10
> ns1.benet.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   ns1.benet.com
Address: 192.168.10.1           

複制

主域名伺服器經過測試沒問題!

搭建從域名伺服器

[root@localhost ~]# yum -y install bind*
#安裝bind服務
[root@localhost ~]# vim /etc/named.conf
#編寫主配置檔案
                                          ………………               #省略部分内容
 12 options {
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         allow-query     { any; };
 20         forwarders { 192.168.10.1; };
#轉發器,本機解析不了轉發到192.168.10.1
                                          ………………                  #省略部分内容
 57 zone "benet.com" in {
 58         type slave;
 #區域類型為輔助區域 
 59         masters { 192.168.10.1; };
 #主伺服器為192.168.10.1
 60         file "slaves/benet.com.zone";
 #複制下來的檔案儲存到/var/named/slaves/目錄下
 61         allow-transfer { 192.168.10.1; };
 #允許從伺服器上下載下傳正向區域配置檔案
 62 };
 63 zone "10.168.192.in-addr.arpa" {
 64         type slave;
 65         masters { 192.168.10.1; };
 66         file "slaves/192.168.10.arpa";
 67 };     
 [root@localhost slaves]# named-checkconf -z /etc/named.conf
 #檢查named服務資料庫配置檔案
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
[root@localhost /]# systemctl start named
[root@localhost /]# nslookup
> www.benet.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.benet.com
Address: 192.168.10.10
> ns1.benet.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   ns1.benet.com
Address: 192.168.10.1
[root@localhost /]# ls /var/named/slaves/
benet.com.zone
#從主域名伺服器複制的正向區域檔案           

複制

從域名伺服器驗證完成!

在Windows客戶機上如果出現錯誤可使用指令“ipconfig /flushdns”重新整理一下本地的DNS緩存!