Linux下DNS簡單部署(主從域名服務器)


 

一、DNS簡介
DNS(Domain Name System),域名系統,因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。DNS服務器的作用就是就好比生活中的電話簿、114查號台一樣,為各種網絡程序找到對應目標主機的IP地址或對應的主機域名。

二、DNS功能
每個IP地址都可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數點隔開。有了主機名,就不要死記硬背每台IP設備的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協議所要完成的功能。

主機名到IP地址的映射有兩種方式:
1)靜態映射,每台設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射表,而且只供本設備使用;
2)動態映射,建立一套域名解析系統(DNS),只在專門的DNS服務器上配置主機到IP地址的映射,網絡上需要使用主機名通信的設備,首先需要到DNS服務器查詢主機所對應的IP地址。

通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。在解析域名時,可以首先采用靜態域名解析的方法,如果靜態域名解析不成功,再采用動態域名解析的方法。可以將一些常用的域名放入靜態域名解析表中,這樣可以大大提高域名解析效率。

正向解析:根據主機名稱(域名)查找對應的IP地址(實際應用中最多的)
反向解析:根據IP地址查找對應的主機域名(不常用,一般用於搭建郵件服務器時。)

根據服務器與所提供域名解析記錄的關系,將DNS服務器分為不同的角色:
1)緩存域名服務器,也稱為 唯高速緩存服務器
通過向其他域名服務器查詢獲得域名->IP地址記錄
將域名查詢結果緩存到本地,提高重復查詢時的速度

2)主域名服務器
特定DNS區域的官方服務器,具有唯一性
負責維護該區域內所有域名->IP地址的映射記錄

3)從域名服務器(通俗一點就是用於備份DNS服務器的)
也稱為 輔助域名服務器
其維護的 域名->IP地址記錄 來源於主域名服務器
搭建DNS服務應用的軟件為:BIND(Berkeley Internet Name Daemon)

三、DNS服務環境部署記錄

1)安裝DNS服務所需要的軟件包
[root@test ~]# yum -y install bind bind-chroot bind-util bind-libs 
------------------------------------------------------------------------------------------------
解釋:
bind           提供了域名服務的主要程序及相關文件
bind-utils     提供了對DNS服務器的測試工具程序(如nslookup、dig等)
bind-chroot    為bind提供一個偽裝的根目錄以增強安全性(將“/var/named/chroot/”文件夾作為BIND的根目錄)
------------------------------------------------------------------------------------------------
 
2)DNS服務器的配置(服務端要能聯網)
[root@test ~]# cp /etc/named.conf /etc/named.conf.bak
[root@test ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };      #使用53端口監聽,默認監聽的是127.0.0.1,這里修改為any(或者直接修改為服務端的ip地址,如服務器ip為192.168.1.24)
        listen-on-v6 port 53 { ::1; };            #監聽ipv6的IP地址選項
        directory       "/var/named";             #DNS的根目錄,由於安裝了bind-chroot的所致,因此服務的實際工作目錄為/var/named/chroot/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
        recursion yes;                    #可以遞歸查詢
         
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
  
logging {                               #named服務的日志文件信息
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                        #根(.)域的配置及信息(也可以通過其它上級域名轉發功能來配置緩存域名服務器,可以去了解下)
                                                                      
        type hint;
        file "named.ca";
};
 
[root@test ~]# chmod 770 /var/named/
[root@test ~]# ls -lh /etc/named.conf 
-rw-r-----. 1 root named 984 Nov 20  2015 /etc/named.conf
[root@test ~]# /etc/init.d/named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@test ~]# ps -ef|grep name
named     1592     1  0 15:03 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
root      1614 32378  0 15:03 pts/0    00:00:00 grep name
 
[root@test ~]# netstat -tunlp|grep named
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1592/named         
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      1592/named         
tcp        0      0 ::1:53                      :::*                        LISTEN      1592/named         
tcp        0      0 ::1:953                     :::*                        LISTEN      1592/named         
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1592/named         
udp        0      0 ::1:53                      :::*                                    1592/named
 
3)客戶端測試
將上面服務器的ip地址添加到客戶端的/etc/resolv.conf文件里
[root@test2 ~]# cat /etc/resolv.conf
nameserver 192.168.1.24                          //此處的192.168.1.24是上面DNS服務器的ip地址
 
[root@test2 ~]# ping www.baidu.com
PING www.a.shifen.com (119.75.213.51) 56(84) bytes of data.
64 bytes from 119.75.213.51: icmp_seq=1 ttl=55 time=2.58 ms
64 bytes from 119.75.213.51: icmp_seq=2 ttl=55 time=2.29 ms
.......
 
[root@test2 ~]# dig www.baidu.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55147
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5
 
;; QUESTION SECTION:
;www.baidu.com.         IN  A
 
;; ANSWER SECTION:
www.baidu.com.      1100    IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   200 IN  A   119.75.213.50
www.a.shifen.com.   200 IN  A   119.75.213.51
 
;; AUTHORITY SECTION:
a.shifen.com.       1100    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns2.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns3.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns1.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns5.a.shifen.com.
 
;; ADDITIONAL SECTION:
ns5.a.shifen.com.   1100    IN  A   119.75.222.17
ns3.a.shifen.com.   1100    IN  A   61.135.162.215
ns4.a.shifen.com.   1100    IN  A   115.239.210.176
ns1.a.shifen.com.   1100    IN  A   61.135.165.224
ns2.a.shifen.com.   1100    IN  A   180.149.133.241
 
;; Query time: 1 msec
;; SERVER: 192.168.1.233#53(192.168.1.233)
;; WHEN: Wed Jun 21 15:12:20 2017
;; MSG SIZE  rcvd: 260
 
------------注意事項-------------
客戶端必須要跟服務器端能夠通信(能ping通)及關閉selinux
 
---------------------------------------擴展-------------------------------------------
上面在/etc/named.conf文件里沒有自定義域名去進行解析設置,下面說下自定義域名的設置:
1) DNS主域名服務器配置
 
[root@test ~]# cp /etc/named.conf /etc/named.conf2.bak
[root@test ~]# vim /etc/named.conf               #追加下面內容,即添加wangshibo.com域名配置。如果有多個域名,就如下添加多個類似配置。
......
zone "wangshibo.com" IN {                       #指定區名。正向解析
        type master;                            #服務器類別,master為主域名
        file "wangshibo.com_zone";              #正向解析區域文件名wangshibo.com_zone,在/var/named目錄下創建
        allow-transfer {192.168.1.23;};         #指定從(輔助)域名服務器IP。即DNS從服務器的ip是192.168.1.23
};
zone "1.168.192.in-addr.arpa" IN {        #域名對應的ip地址網段為192.168.1.0,此處必須按照相 。反向解析                                          同的格式寫
        type master;
        file "192.168.1.zone";               #反向解析文件名192.168.1.zone
        allow-transfer {192.168.1.23;};
};
 
[root@test ~]# vim /var/named/wangshibo.com_zone
$TTL 1D
@       IN SOA  ns1.wangshibo.com. mail.www.wangshibo.com. (
                                        2014102101    #主DNS的此解析文件沒改動一次,都要修改一次這個值,然后重啟naned或rndc reload重啟,從DNS就會自動同步過去
                                        1D    
                                        1H     
                                        1W    
                                        3H )  
@               IN      NS      ns1.wangshibo.com.            #主域名的域名地址。NS是域名服務器
ns1.wangshibo.com.    IN      A       192.168.1.24            #主域名的ip地址
@               IN      NS      ns2.wangshibo.com.            #從域名的域名地址。NS是域名服務器
ns2.wangshibo.com.    IN      A       192.168.1.23            #從域名的ip地址
@               IN      MX 10   mail.ww.wangshibo.com.        #郵件服務器的域名地址
mail.www.wangshibo.com.  IN   A       192.168.1.4            
www.wangshibo.com.    IN      A       192.168.1.2
ftp.wangshibo.com     IN      A       192.168.1.3
win7.wangshibo.com.   IN      A       192.168.1.224
linux.wangshibo.com.  IN      CNAME   ns1.wangshibo.com.
smb.wangshibo.com.    IN      CNAME   ns1.wangshibo.com.
dhcp.wangshibo.com.   IN      CNAME   ns1.wangshibo.com.
 
[root@test ~]# vim /var/named/192.168.1.zone
$TTL 1D                       
@       IN SOA  ns1.wangshibo.com. mail.www.wangshibo.com. (
                                        2014102101    #主DNS的此解析文件沒改動一次,都要修改一次這個值,然后重啟naned或rndc reload重啟,從DNS就會自動同步過去
                                        1D
                                        1H 
                                        1W     
                                        3H )   
@               IN      NS      ns1.wangshibo.com.
@               IN      NS      ns2.wangshibo.com.
24              IN      PTR     ns1.wangshibo.com.
23              IN      PTR     ns2.wangshibo.com.
@               IN      MX 10   mail.www.wangshibo.com.
4               IN      PTR     mail.www.wangshibo.com.
2               IN      PTR     www.wangshibo.com.
3               IN      PTR     ftp.wangshibo.com.
23             IN      PTR     win7.wangshibo.com.
 
[root@test ~]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
 
在客戶端測試
[root@test2 ~]# cat /etc/resolv.conf
search wangshibo.com
nameserver 192.168.1.24
 
[root@test2 ~]# dig www.wangshibo.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.wangshibo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29152
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
 
;; QUESTION SECTION:
;www.wangshibo.com.     IN  A
 
;; ANSWER SECTION:
www.wangshibo.com.  86400   IN  A   192.168.1.2
 
;; AUTHORITY SECTION:
wangshibo.com.      86400   IN  NS  ns2.wangshibo.com.
wangshibo.com.      86400   IN  NS  ns1.wangshibo.com.
 
;; ADDITIONAL SECTION:
ns1.wangshibo.com.  86400   IN  A   192.168.1.24
ns2.wangshibo.com.  86400   IN  A   192.168.1.23
 
;; Query time: 1 msec
;; SERVER: 192.168.1.24#53(192.168.1.24)       #注意這行,說明是主DNS從域名服務器解析的
;; WHEN: Wed Jun 21 15:39:09 2017
;; MSG SIZE  rcvd: 119
 
 
1) DNS從域名服務器配置
從域名服務器的ip為192.168.1.23
服務的安裝過程在上面已介紹,此處省略
[root@test33 ~]# cp /etc/named.conf /etc/named.conf.bak
[root@test33 ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };
        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; };
        recursion yes;
 
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
 
logging {                          
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                  
                                                               
        type hint;
        file "named.ca";
};
 
zone "wangshibo.com" IN {
        type slave;
        file "wangshibo.com_zone";
        masters {192.168.1.24;};
};
zone "1.168.192.in-addr.arpa" IN {
        type slave;
        file "192.168.1.zone";
        masters {192.168.1.24;};
};
 
[root@test33 ~]# chmod 770 /var/named/
[root@test33 ~]# ll /var/named/ -d
drwxrwx---. 6 root named 4096 Jun 21 15:44 /var/named/
 
[root@test33 ~]# service named restart
Stopping named:                                            [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
 
客戶端測試
[root@test2 ~]# dig @192.168.1.23 www.wangshibo.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> @192.168.1.23 www.wangshibo.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12862
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
 
;; QUESTION SECTION:
;www.wangshibo.com.     IN  A
 
;; ANSWER SECTION:
www.wangshibo.com.  86400   IN  A   192.168.1.2
 
;; AUTHORITY SECTION:
wangshibo.com.      86400   IN  NS  ns2.wangshibo.com.
wangshibo.com.      86400   IN  NS  ns1.wangshibo.com.
 
;; ADDITIONAL SECTION:
ns1.wangshibo.com.  86400   IN  A   192.168.1.24
ns2.wangshibo.com.  86400   IN  A   192.168.1.23
 
;; Query time: 1 msec
;; SERVER: 192.168.1.23#53(192.168.1.23)                 #注意這行,說明是從DNS從域名服務器解析的
;; WHEN: Wed Jun 21 15:53:47 2017
;; MSG SIZE  rcvd: 119
 
最后,在客戶機的/etc/resolv.conf文件里添加上面主從DNS地址,就可以正常解析上面在/var/named/192.168.1.zone里設置的域名了
# vim /etc/resolv.conf
nameserver 192.168.1.24
nameserver 192.168.1.23

-----------------------------------------注意事項--------------------------------------------
a)如果還是無法解析,請返回主域名服務器的/var/named目錄給區域配置文件加上權限(單純是為了練習的話,可以加到最大權限到777)
b)以上的練習都是在關閉防火牆與seLinux的狀態下操作的,如果防火牆開啟,可自行去添加規則

最后務必查看下/var/log/messages日志的內容,查看DNS主從是否啟動正常,是否實現了同步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM