天天看點

DNS伺服器簡單配置和view實作

簡介:

DNS伺服器的作用就是就好比生活中的電話簿、114查号台一樣,為各種網絡程式找到對應目标主機的IP位址或對應的主機域名。

DNS系統的作用:

正向解析:根據主機名稱(域名)查找對應的IP位址(實際應用中最多的)

反向解析:根據IP位址查找對應的主機域名(不常用,一般用于搭建郵件伺服器時。)

根據伺服器與所提供域名解析記錄的關系,将DNS伺服器分為不同的角色:

緩存域名伺服器

也稱為 唯高速緩存伺服器

通過向其他域名伺服器查詢獲得域名->IP位址記錄

将域名查詢結果緩存到本地,提高重複查詢時的速度

主域名伺服器

特定DNS區域的官方伺服器,具有唯一性

負責維護該區域内所有域名->IP位址的映射記錄

從域名伺服器(通俗一點就是用于備份DNS伺服器的)

也稱為 輔助域名伺服器

其維護的 域名->IP位址記錄 來源于主域名伺服器

搭建DNS服務應用的軟體為:BIND(Berkeley Internet Name Daemon)

官方站點:https://www.isc.org/

相關軟體包:

bind-9.3.3-7.el5.i386.rpm

bind-utils-9.3.3-7.el5.i386.rpm

bind-chroot-9.3.3-7.el5.i386.rpm

caching-nameserver-9.3.3-7.el5.i386.rpm

cache-nameserver軟體包實際上隻是提供了一些配置樣例檔案,對于熟悉BIND配置檔案的系統管理者來說,也可以不用安裝該軟體包

bind,提供了域名服務的主要程式及相關檔案

bind-utils,提供了對DNS伺服器的測試工具程式(如nslookup、dig等)

bind-chroot,為bind提供一個僞裝的根目錄以增強安全性(将“/var/named/chroot/”檔案夾作為BIND的根目錄)

caching-nameserver,為配置BIND作為緩存域名伺服器提供必要的預設配置檔案,這些檔案在配置主、從域名伺服器時也可以作為參考

named作為标準的系統服務腳本,通過”service named start/stop/restart“的形式可以實作對伺服器程式的控制

named預設監聽TCP、UDP協定的53端口,以及TCP的953端口:

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

TCP 53端口一般隻對特定從域名伺服器開放,提高解析記錄傳輸通道;TCP 953端口預設隻對本機(127.0.0.1)開放,用于為rndc遠端管理工具提供控制通道

如果沒有安裝bind-chroot軟體包,則主配置檔案預設位于 /etc/named.conf,資料檔案預設儲存在 /var/named/ 目錄

1、安裝軟體包

[root@centos etc]# yum -y install bind

2、修改相關目錄權限

安裝完BIND以後,BIND的主配置檔案通常是儲存在兩個位置:

/etc/named.conf  -BIND服務主配置檔案

/var/named/  -域的zone配置檔案

[root@centos etc]# cd /var/named

[root@centos named]# chown -R named:named /var/named/

[root@centos named]# chmod -R 664 /var/named/ 

[root@centos named]# chmod 775 /var/named   

[root@centos named]#chmod +x /var/named/data /var/named/dynamic /var/named/slaves

或者直接暴力 chmod -R 770 /var/named/

[root@centos named]# chown root:named /etc/named.conf

3、修改/etc/named.conf

[root@centos etc]# cat /etc/named.conf

options {

        listen-on {192.168.183.128;}; # 監聽位址

        listen-on {172.20.33.33;};   # 監聽位址  

        allow-transfer {"none";};

        recursion yes;   #   DNS是否可遞歸 

        allow-query {any;};  # 允許所有位址

        max-cache-ttl 900;

        directory "/var/named"; 

        pid-file "/var/named/named.pid";

        dump-file "/var/named/named_dump.db";

        statistics-file "/var/named/named.status";

        forward only;

        forwarders { 180.76.76.76 ; };    # 轉發位址

        query-source address 172.20.33.33;    # 轉發請求源位址

};

acl external_ip {

             172.20.32.0/22;  # 定義外網位址段

view "external" {  # 定義外網IP的區域檔案,這裡注意view的時候所有的zone都要寫在view區域裡面

              match-clients {external_ip;};

              zone "babyshen.com" in {

                        type master; # 指定我們要配置的是域主DNS伺服器

                        file "zone.babyshen.com.external";  # 指定域的zone檔案名

                        allow-update{none;};

              };

acl internal_ip {

              192.168.183.0/24;  # 定義内網位址

view "internal" {   # 定義内網IP的區域檔案,這裡注意view的時候所有的zone都要寫在view區域裡面

              match-clients  {internal_ip;};

                        type master;

                        file "zone.babyshen.com.internal";

view "default" {   # 預設的,比對不到以上執行這個

                match-clients {any;};

                allow-query {any; };

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

4、建立zone.babyshen.com.external和zone.babyshen.com.internal檔案

[root@centos named]# cat zone.babyshen.com.external

$TTL 60

@       IN SOA  babyshen.com admin.babyshen.com. (

                                        2016121201      ; serial

                                        86400   ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN      NS          ns1

ns1     IN      A           172.20.33.33

@       IN      A           172.20.33.33

www     IN      A           172.20.33.33

*       IN      A           172.20.33.33

[root@centos named]# cat zone.babyshen.com.internal

ns1     IN      A           192.168.183.128

@       IN      A           192.168.183.128

www     IN      A           192.168.183.128

*       IN      A           192.168.183.128

5、檢查檔案是否有文法錯誤

1)檢查主配置檔案是否有錯誤

[root@centos named]# named-checkconf /etc/named.conf

2)檢查區域檔案是否有錯誤

[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external 

zone babyshen.com/IN: loaded serial 2016121201

OK

[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external

6、可以實作

1)當用192.168.183.0/24這個段去解析www.babyshen.com的時候,解析位址為192.168.183.128

2)當用172.20.32.0/22這個段去解析www.babyshen.com的時候,解析位址為172.20.33.33

3)當解析其他域名的時候(不在view裡面的域名,即babyshen.com以外的域名),轉發給180.76.76.76解析

即完成了DNS的簡單部署,實作了DNS轉發和view的實作

記錄類型

1.A記錄:A記錄是來指定與主機名對應的IP位址記錄,通俗的來說A記錄就是伺服器的IP位址,域名綁定A記錄就是告訴DNS伺服器,當你輸入域名時引導你去正确的對應伺服器。A記錄就是域名的IP位址。

2.NS記錄:NS記錄為域名伺服器記錄,用來指定該域名由哪個DNS伺服器來進行解析,注冊域名後,會有一個預設的DNS伺服器,每個注冊的域名都是由一個DNS域名伺服器來進行解析,一般NS記錄出現的形式說,ns1.domain.xx.. ns2.domain.xx等等。NS記錄就是指定由哪個DNS伺服器來進行你的域名解析。

3.MX記錄:MX記錄為郵件互動記錄,它指向一個郵件伺服器,在使用mail系統時,發件人根據收件人位址的字尾來定位mail server。例如我們要發郵件給[email protected],我的郵件系統通過DNS查找到basbyshen.com這個域名,繼而查找到的MX記錄,如果MX記錄存在,我的計算機就将郵件發送到MX記錄所指定的郵件伺服器。

4.CNAME記錄:CNAME記錄為别名記錄,允許多個名字映射到一台伺服器上,通常用于提供多個服務。例如我有一台計算機域名為host.babyshen.com,需要同時提供mail服務和www服務。則全稱為www.babyshen.com,和mail.babyshen.com。實際上這兩個域名指向的都是host.babyshen.com。

5.TXT記錄:TXT記錄一般用于某個主機名或者域名的記錄,IN TXT “location:””21vianet DAXING ROOM”這段應該是說明我們這台主機的存放位置的相關資訊。TXT記錄還有拓展的應用有SPF記錄。SPF記錄一般用于反垃圾遊戲,MX記錄作用是向發信人指明某個域名的郵件伺服器有哪些。SPF記錄則正好相反,SPF記錄向收信者表明,哪些郵件伺服器是經過某個域名的認可發郵件的。主要針對僞造域名的垃圾郵件。例如我的郵件伺服器收到郵件是來自[email protected]的郵件,那這份郵件到底是不是babyshen.com發送過來的。我們可以查詢babyshen.com的SPF記錄,防止别人僞造域名來發郵件。

6.TTL:簡單的說TTL值就是一條域名解析記錄在DNS伺服器裡的存留時間,當DNS伺服器接收到解析請求時,會向域名指定的NS伺服器發出解析請求從來獲得解析記錄,獲得這條記錄後,記錄會在DNS伺服器中保留一段時間這段時間DNS伺服器不再向NS伺服器送出請求,收到解析請求後直接傳回。這個記錄在DNS伺服器上儲存的時間就是TTL值。一般增大TTL值,可以節約域名解析時間,通路網站會加速。

7.PTR值:反向解析的記錄類型,可以看出是A記錄的反向。PTR主要用于郵件伺服器,比如[email protected][email protected]發郵件,郵件伺服器收郵件時會檢視頭檔案,并分析是由哪個IP位址發出來的。然後根據這個IP位址進行反解,如果解析的結果和IP位址相對應就接受這封郵件,不對應就拒絕。

8.泛域名以及泛解析:泛域名是指在一個域名的根下,所有以同樣形式未建立的子域名。例如*.babyshen.com。

泛解析是指把*.babyshen.com的A記錄解析到某個IP位址上,通過通路任意的babyshen.com都能通路到你解析的站點上去。

9.SOA記錄:初始授權記錄,SOA記錄表明了DNS伺服器之間的聯系,SOA記錄表明了誰是這個域的所有者。一般用于主從伺服器。

<1>Serial:表示目前DNS資料庫的版本号,供從伺服器判斷是否需要從主伺服器上擷取新資料。

<2>Refresh:設定SDNS多長時間與MDNS連接配接一次。

<3>Retry:當SDNS向MDNS試圖擷取serial時候,如果MDNS無響應,多長時間重新檢查。

<4>Expire:數值決定SDNS在沒有MDNS權威的提供下解析域名的時間長短。

<5>Minimum:一些沒有生存周期的解析記錄的生存時間。

<6>Notify:可設定MDNS更新時都會主動通知SDNS。

本文轉自 baby神 51CTO部落格,原文連結:http://blog.51cto.com/babyshen/1881989,如需轉載請自行聯系原作者

繼續閱讀