CentOS 7.3 搭建DNS服務器

一、DNS服務簡介

1. DNS服務簡介

DNS(Domain Name System)域名系統。

目前提供網絡服務的應用使用唯一的32位的IP地址來標識,但是由於數字比較複雜、難以記憶,因此產生了域名系統(DNS),通過域名系統,可以使用易於理解和形象的字符串名稱來標識網絡應用(如www.baidu.com、www.taobao.com)。訪問互聯網應用可以使用域名,也可以通過IP地址直接訪問該應用,在使用域名訪問網絡應用時,DNS負責將域名解析爲IP地址。


2. 主機名和域名的區別?

主機名是內網的名字;域名是外網的名字。

主機名和域名其實是兩個完全可以不同的名字,但是有很多軟件(如郵件系統postfix)會默認認爲它們一致。

全世界共有有13臺DNS根域服務器。


頂級域名:

.com    .org    .edu    .gov    .net    .mil    .info

商業     組織    教育    政府    通訊    軍事    信息

 

根域:

cn      hk      us     jp     tw     in

.com.cn      .net.us    .edu.cn


3. DNS服務器特點

  • 分佈式的數據庫

  • 解決了數據不一致,避免了名字衝突

  • 有緩存機制,提高了性能和可靠性


4. 域名解析過程

爲了將一個名字解析成一個IP地址,用戶應用程序調用一個稱爲解析器的庫程序,將名字作爲參數傳遞給它,形成DNS用戶;然後DNS用戶發送查詢請求給本地域名服務器,服務器首先在其管轄區域內查找名字,名字找到後,把對應的IP地址返回給DNS客戶。完整的名字解析過程如下圖所示:

無標題.png


二、系統環境

系統平臺: CentOS 7.3

DNS Server: 192.168.8.88

更改主機名,寫/etc/hosts記錄

#  vim /etc/hosts

    192.168.8.88           test.com         --最後添加DNS服務器IP地址和主機名/別名

關閉防火牆

#  systemctl  stop  firewalld               --臨時關閉防火牆 

#  systemctl  disable  firewalld          --永久關閉防火牆

關閉selinux

臨時關閉:

#  setenforce 0

永久關閉:

#  vim  /etc/selinux/config

    SELINUX=disabled                 --將enforcing改爲disabled


#  reboot                                    --重啓系統永久生效


三、CentOS下的DNS服務

準備兩臺機器

1.png

1.  在DNS服務器上安裝bind軟件

BIND全稱是(Berkeley Internet Name Domain),是美國加利福尼亞大學伯克利分校開發的一個域名服務軟件包,Linux使用這個軟件包來提供域名服務,該軟件實現了DNS協議。BIND的服務端軟件是被稱作named的守護進程。

#  yum  -y  install bind*

如果已經安裝過了,顯示“無需任何處理”

2.png

 

安裝好後查看軟件包

#  rpm  -qa  |  grep  ^bind

bind-pkcs11-libs-9.9.4-51.el7_4.1.x86_64

bind-pkcs11-utils-9.9.4-51.el7_4.1.x86_64

bind-license-9.9.4-51.el7_4.1.noarch

bind-lite-devel-9.9.4-51.el7_4.1.x86_64

bind-libs-9.9.4-51.el7_4.1.x86_64

bind-pkcs11-9.9.4-51.el7_4.1.x86_64

bind-dyndb-ldap-11.1-4.el7.x86_64

bind-9.9.4-51.el7_4.1.x86_64                   --提供了域名服務的主要程序及相關文件

bind-sdb-9.9.4-51.el7_4.1.x86_64

bind-pkcs11-devel-9.9.4-51.el7_4.1.x86_64

bind-utils-9.9.4-51.el7_4.1.x86_64          --提供了對DNS服務器的測試工具程序(如nslookup、dig等)

bind-sdb-chroot-9.9.4-51.el7_4.1.x86_64

bind-devel-9.9.4-51.el7_4.1.x86_64

bind-libs-lite-9.9.4-51.el7_4.1.x86_64

bind-chroot-9.9.4-51.el7_4.1.x86_64      --爲bind提供一個僞裝的根目錄以增強安全性(將“/var/named/chroot/”目錄作爲BIND的根目錄)

3.png


2. 啓動DNS服務

systemctl start named.service         --啓動DNS服務

systemctl enable named.service     --設置爲開機啓動

netstat -anlp | grep named             --查看監聽端口爲53

4.png

named作爲標準的系統服務腳本,通過“systemctl start/restart/stop named.service”的形式可以實現對服務器程序的控制

named默認監聽TCP、UDP協議的53端口,以及TCP的953端口:

其中UDP 53端口一般對所有客戶機開放,以提供解析服務;

TCP 53端口一般只對特定從域名服務器開放,提高解析記錄傳輸通道;TCP 953端口默認只對本機(127.0.0.1)開放,用於爲rndc遠程管理工具提供控制通道

 

配置文件的目錄:

沒有安裝bind-chroot軟件包

  • 配置文件爲/etc/named.conf

  • 數據文件在/var/named目錄下

 

安裝了bind-chroot軟件包

  • 配置文件爲/var/named/chroot/etc/named.conf    --默認沒有

  • 數據文件在/var/named/chroot/var/named目錄

 

從上面看到裝了bind-chroot,籠環境爲/var/named/chroot/


3. 查看配置文件/etc/named.conf

#  vim  /etc/named.conf

  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.      # 該目錄中可以查看named配置案例

 12 options {                                       # options是全局服務器的配置選項,在這裏指定的參數,對配置中的任何區域都有效
 13         listen-on port 53 { 127.0.0.1; };       # 指定域名服務監聽的網絡端口,建議寫本機IP,減少服務器消耗
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";           # 指定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     { localhost; };         # 允許哪些客戶端訪問DNS服務,此處改爲“any”,表示任意主機
 20
 31         recursion yes;                          # 開啓遞歸查詢
 32 
 33         dnssec-enable yes;                      # 開啓加密
 34         dnssec-validation yes;                  # 在遞歸查詢服務器上開啓DNSSEC驗證
 35 
 36         /* Path to ISC DLV key */
 37         bindkeys-file "/etc/named.iscdlv.key";
 38 
 39         managed-keys-directory "/var/named/dynamic";
 40 
 41         pid-file "/run/named/named.pid";
 42         session-keyfile "/run/named/session.key";
 43 };
 44 
 45 logging {                                       # named服務的日誌文件信息
 46         channel default_debug {
 47                 file "data/named.run";
 48                 severity dynamic;
 49         };
 50 };
 51 # 每一個zone就是定義一個域的相關信息以及指定了named服務從哪些文件中獲得DNS各個域名的數據文件
 52 zone "." IN {                           # 根(.)域的配置及信息(配置緩存域名服務器,可以自己去了解)
 53         type hint;                      # 服務器類型
 54         file "named.ca";                # 文件路徑位置
 55 };
 56 
 57 include "/etc/named.rfc1912.zones";     # include代表該文件是子配置文件
 58 include "/etc/named.root.key";


4. 域名服務器的配置

配置步驟:

  • 編輯/etc/named.rfc1912.zones     --記錄你的域和域對應的數據文件在哪

  • 編輯/var/named/data/*.zone        --就是數據文件,記錄域名和IP的對應


例1:正向解析(將域名解析成IP)

(一)修改DNS服務的配置文件

#  vim  /etc/named.conf                                         --主配置文件 

options {
        listen-on port 53 { 192.168.8.88; };    # 將127.0.0.1改爲本機IP:192.168.8.88
        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";
        allow-query     { any; };               # 將localhost改爲any,表示所有人都能對我的DNS服務進行查詢

5.png


(二)添加域的信息寫在子配置文件

vim  /etc/named.rfc1912.zones          --文件最後添加正向解析數據文件的信息
zone "test.com" IN {
        type master;
        file "data/test.com.zone";
};

6.png


(三)編輯正向解析文件

#  vim  /var/named/data/test.com.zone   --編輯正向解析文件(將域名解析成IP)

$TTL 1D                 # 緩存時間
@       IN SOA  dns.test.com. dns.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@                       IN      NS      dns.test.com.           # DNS服務器的域名地址
dns.test.com.           IN      A       192.168.8.88            # DNS服務器的IP地址
@                       IN      MX 10   mail.www.test.com.      # 郵件服務器的域名地址
mail.www.test.com.      IN      A       192.168.8.4             # 郵件服務器IP地址
www.test.com.           IN      A       192.168.8.88            # 域名爲test.com的IP地址
ftp.test.com.           IN      A       192.168.8.3             # 域名爲ftp的IP地址

7.png


  • serial:序列號。可以供從服務器判斷何時獲取新數據的,這裏我設成今天的日期。更新數據文件必須要更新這個序列號,否則從服務器將不更新

  • refresh:指定多長時間從服務器要與主服務器進行覈對

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

  • expire:將決定從服務器在沒有主服務器的情況下權威地持續提供域數據服務的時間長短

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

  • SOA記錄:每個區僅有一個SOA記錄,該區一直延伸到遇見另一個SOA記錄爲止。SOA記錄包括區的名字,一個技術聯繫人和各種不同的超時值

  • IN記錄:使用“IN”,對應的是internet

  • A記錄:是DNS數據庫的核心。一個主機必須爲它的每個網絡接口得到一條A記錄

  • NS記錄:識別對一個區有權威性的服務器(即所有主服務器和從服務器),並把子域委託給其他機構。

  • MX記錄:電子郵件系統就是使用MX記錄來更有效的路由郵件。

  • PTR記錄:從IP地址到主機名的反向映射。與A記錄一樣,必須爲每個網絡接口有一條PTR記錄。


#  systemctl  restart  named.service            --配置好後,重新DNS服務


(四)客戶端測試

注意:客戶端必須要跟服務器端通信(能ping通)及關閉selinux

vim  /etc/resolv.conf                 --修改客戶端的DNS服務器
    nameserver 192.168.8.88          --IP爲服務器的IP

以下三個解析命令,仍選其一就可以了。

#  dig  www.test.com                     --查詢DNS包括NS記錄,A記錄,MX記錄等相關信息

#  nslookup  www.test.com

#  host  www.test.com                   --測試域名系統工作是否正常

8.png

9.png

至此,正向解析OK!


例2:反向解析(將IP解析成域名)

(一)修改DNS服務的配置文件

vim  /etc/named.rfc1912.zones       --文件最後添加反向解析數據文件的信息
zone "8.168.192.in-addr.arpa" IN {      # 域名對應的IP地址網段爲192.168.8.0,此處必須按照相同的格式寫
        type master;
        file "data/192.168.8.zone";     # 反向解析文件名192.168.8.zone
};

10.png


(二)編輯反向解析文件

vim  /var/named/data/192.168.8.zone
$TTL 1D
@       IN SOA  dns.test.com. dns.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@               IN      NS         dns.test.com.
88              IN      PTR        dns.test.com.
@               IN      MX 10      mail.www.test.com.
4               IN      PTR        mail.www.test.com.
88              IN      PTR        www.test.com.
3               IN      PTR        ftp.test.com.

11.png


#  systemctl  restart  named.service       --配置好後,重啓DNS服務


(三)客戶端測試

注意:客戶端必須要跟服務器端通信(能ping通)及關閉selinux

cat  /etc/resolv.conf                           --修改客戶端的DNS服務器
    nameserver 192.168.8.88


nslookup  192.168.8.88
host  192.168.8.88                              --測試域名系統工作是否正常

12.png


至此,正向解析OK!


例3:做主從DNS服務器

準備三臺機器

13.png

(一)主DNS服務器的配置

vim  /etc/named.conf               --
options {
        listen-on port 53 { 192.168.8.88; };    # (主)DNS服務器的IP
        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";
        allow-query     { any; };               # 將localhost改爲any,表示所有人都能對我的DNS服務進行查詢


vim  /etc/named.rfc1912.zones

zone "test.com" IN {
        type master;
        file "data/test.com.zone";
        allow-transfer {192.168.8.66;};               # 指定(從)域名服務器IP
};

zone "8.168.192.in-addr.arpa" IN {
        type master;
        file "data/192.168.8.zone";
        allow-transfer {192.168.8.66;};               # 指定(從)域名服務器IP
};

14.png


(二)(主)編輯正向解析文件

vim  /var/named/data/test.com.zone

$TTL 1D
@       IN SOA  dns1.test.com. dns1.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@                       IN      NS      dns1.test.com.
dns1.test.com.          IN      A       192.168.8.88    # DNS服務器(主)的IP地址
@                       IN      NS      dns2.test.com.
dns2.test.com.          IN      A       192.168.8.66    # DNS服務器(從)的IP地址
www.test.com.           IN      A       192.168.8.88    # 域名爲test.com的(主)IP地址
www.test.com.           IN      A       192.168.8.66    # 域名爲test.com的(從)IP地址

15.png


(三)(主)反向解析文件

#  vim /var/named/data/192.168.8.zone

$TTL 1D
@       IN SOA  dns1.test.com. dns1.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@               IN      NS      dns1.test.com.
88              IN      PTR     dns1.test.com.
@               IN      NS      dns2.test.com.
66              IN      PTR     dns2.test.com.
88              IN      PTR     www.test.com.   # 域名爲test.com的(主)IP地址
66              IN      PTR     www.test.com.   # 域名爲test.com的(從)IP地址

16.png


#  systemctl  restart  named.service          --配置好後,重啓(主)DNS服務


(四)(從)DNS服務器的配置

1、重新開啓一臺linux虛擬主機,IP爲192.168.8.66

2、服務的安裝與配置

yum  -y  install  bind*

vim  /etc/named.conf

options {
        listen-on port 53 { 192.168.8.88; };    # (從)DNS服務器的IP
        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";
        allow-query     { any; };               # 將localhost改爲any,表示所有人都能對我的DNS服務進行查詢


vim  /etc/named.rfc1912.zones

zone "test.com" IN {
        type slave;                             # 服務器類別,slave爲(從)域名服務器選項
        file "data/test.com.zone";
        allow-transfer {192.168.8.88;};         # 指定(主)域名服務器IP
};

zone "8.168.192.in-addr.arpa" IN {
        type slave;                             # 服務器類別,slave爲(從)域名服務器選項
        file "data/192.168.8.zone";
        allow-transfer {192.168.8.88;};         # 指定(主)域名服務器IP
};

17.png


3. 編輯正向解析文件與反向解析文件,可直接從(主)DNS服務器中拷貝

scp  192.168.8.88:/var/named/data/test.com.zone  /var/named/data/test.com.zone
scp  192.168.8.88:/var/named/data/192.168.8.zone  /var/named/data/192.168.8.zone

18.png


#  systemctl  restart  named.service     --配置好後,重啓(從)DNS服務


(五)客戶端測試

vim  /etc/resolv.conf             --添加以下參數

    nameserver 192.168.8.88      --(主)DNS服務IP

    nameserver 192.168.8.66      --(從)DNS服務IP


nslookup  www.test.com

nslookup  192.168.8.88

nslookup  192.168.8.66

19.png


至此,DNS服務器主從正反向解析OK!

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