1. 程式人生 > >DNS伺服器基本配置

DNS伺服器基本配置

DNS伺服器基本配置

前期準備:linux系統、bind安裝包,網路靜態IP的配置(本人伺服器IP設定為:192.168.240.139)

第一步:安裝bind

Tar -zxfv  bind-9.12.2-P2.tar

第二步:修改配置檔案

     主機名稱可以用:hostname netfinity修改,或者vim /proc/sys/kernel/hostname檔案中修改。 (不同:前者是臨時的;後者是永久性的)

Linux下的dns功能是通過bind軟體實現的。bind軟體安裝後,會產生幾個固有檔案,分為兩類,一類是配置檔案在/etc目錄下,一類是dns記錄檔案在/var/named目錄下。加上其他相關檔案,共同設定dns伺服器。下面是所有和dns設定相關檔案的列表與說明。

第一類:在/etc下的配置檔案

(1) 定義相應的主機名和IP:

vim /etc/hosts
127.0.0.1                localhost
192.168.240.139            netfinity

(2)/etc/host.conf檔案,內容為

vim /etc/host.conf
    order hosts,bind
	multi on
	nospoof on

“order hosts bind”指定主機名的解析順序是先到hosts,後dns伺服器。 “multi on”則是允許一個主機名對應多個ip地址。

(3)/etc/resolv.conf檔案,內容為:

“nameserver
192.168.240.139”指定了dns伺服器的地址。你如果沒有設定本機為dns伺服器,你又要能夠解析域名,就必須指定一個dns伺服器的地址。你可以最多寫上三個地址,作為前一個失敗時的候選dns伺服器。

vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.240.139

在日常使用時需要將網路設定中的DNS改成你的DNS伺服器IP,否則會跳回你之前的DNS

(4)/etc/named.conf檔案,是dns server配置的核心檔案。內容如下:

建立正向解析“named.Linuxidc.com”和反向解析“named.Linuxidc.com.rev”的記錄檔案,其他可以不用管。

   vim /etc/named.conf
    //
    // named.conf
    //
    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    // server as a caching only nameserver (as a localhost DNS resolver only).
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //

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; 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
   //正向解析
    zone "linuxidc.com" IN { # 指定區域名
            type master; # 指定工作模式 為主dns伺服器
            file "named.linuxidc.com"; # 指定配置檔案
    
    };
//反向解析
    zone "240.168.192.in-addr.arpa" IN { # 指定區域名
             type master; # 指定工作模式 為主dns伺服器
            file "named.linuxidc.com.rev";
   };
    zone "." IN {
            type hint;
            file "named.ca";
    };
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

第二類:在資源記錄檔案,位於/var/named目錄下。這個目錄是named.conf中定義的。

(1) named.linuxidc.com檔案內容如下:

$TTL 1D
@       IN SOA  @          netfinity.root.netfinity (
                                20181019        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@ IN    NS      netfinity.linuxidc.com.



netfinity IN  A 192.168.240.139

mail IN  CNAME linuxidc.com.
www IN  CNAME linuxidc.con.

在這個記錄檔案中,出現了5種類型的記錄。SOA 是授權起始(Start Of Authority)的縮寫,後面接著寫你的dns伺服器的主機名,這裡是“netfinity.Linuxidc.com.”。(注意,主機名稱後面的小圓點。凡是出現在記錄檔案了的主機名,記得都要加上這各小圓點 )NS 是名稱伺服器資源記錄,指明域中的名稱伺服器,這裡就是dns伺服器。MX是郵件交換者資源記錄,指明這個域的郵件伺服器。你可以寫多個MX記錄,指明多個郵件伺服器,優先級別由MX後的數字決定,數字越小,郵件伺服器優先權越高。A是主機記錄,把主機和ip地址對應起來。CNAME是別名記錄,它賦予一個主機不同的名稱,如www.Linuxidc.com、pop3.Linuxidc.com其實都是指向同一臺主機:netfinity.Linuxidc.com

注意:
(1)在網上的很多資料,發現了一個錯誤,就是第一行中,如果按照網上的寫法,會出錯。
@ IN SOA @ netfinity. root.netfinity.(

錯誤資訊: dns_rdata_fromtext: com.zone:2: near ‘root.netfinity.’: not a
valid number zone linuxidc.com/IN: loading master file com.zone: not a
valid number

結果把最後一個“.”去了之後,正常執行。
(2)在該檔案中的寫法是由嚴格的格式的,不能隨便寫。否則會出現下面的錯誤
如果將上面的netfinity對應行變為下面的格式:

@               IN NS           netfinity.linuxidc.com.
	netfinity       IN A            192.168.240.139
mail            IN CNAME        netfinity.linuxidc.com.
www             IN CNAME        netfinity.linuxidc.com.

錯誤資訊: dns_master_load: com.zone:10: unknown RR type ‘netfinity’

(2) named.linuxidc.com.rev檔案內容如下:

$TTL 1D
@       IN SOA  @ netfinity.root.netfinity. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
 IN     NS       netfinity.
139      IN      PTR     netfinity.linuxidc.com.
        A       127.0.0.1
        AAAA    ::1

這是“Linuxidc.com”的反向域記錄檔案,它讓dns伺服器提供由ip地址查詢主機名的服務。PTR記錄把ip和主機名對應起來。由於一些程式會要求反向查詢,所以反向查詢域的記錄檔案最好不要省略。

注意:
(1) 這個檔案中的第一行,可以寫成帶dot的格式。
(2)netfinity. root.netfinity. 這個中間不能有空格。

錯誤資訊: dns_rdata_fromtext: named.linuxidc.com.rev:2: near
‘root.netfinity.’: not a valid number zone
240.168.192.in-addr.arpa/IN: loading from master file named.linuxidc.com.rev failed: not a valid number zone
240.168.192.in-addr.arpa/IN: not loaded due to errors.
_default/240.168.192.in-addr.arpa/IN: not a valid number

第三步:DNS伺服器的服務是named,可以使用:

Service named start|stop|restart來操作。

第四步:其他報錯:

Apr 13 12:32:34 mail named[18701]: zone 0.168.192.in-addr.arpa/IN: loading maste
r file named.linuxidc.com.rev: file not found

Apr 13 12:32:34 mail named[18701]: zone linuxidc.com/IN: loading master file nam
ed.linuxidc.com: file not found


server can't find 139.240.168.192.in-addr.arpa.: NXDOMAIN

解決方法:
(1) 在/var/named下 touch named.linuxidc.com;(或者cplocalhost.zone named.linuxidc.com) ls –l named.linuxidc.com,可以看到它屬於root組的root使用者而看看其它系統自動產生的,都是屬於named組的named使用者,所以要修改: chown named.named named.linuxidc.com,這樣它就屬於named組的named使用者了。
(2) 在/var/named/資料夾下,建立named.linuxidc.com的軟連線ln –s var/named/named.linuxidc.com named.linuxidc.com 並/var/named/下的named.linuxidc.com屬於root組的root使用者。

碰到過以下兩個問題,原因不明:

dns_master_load: named.linuxidc.com:18: www.linuxidc.com: CNAME and
other data zone linuxidc.com/IN: loading from master file
named.linuxidc.com failed: CNAME and other data zone linuxidc.com/IN:
not loaded due to errors.
_default/linuxidc.com/IN: CNAME and other data zone 240.168.192.in-addr.arpa/IN: not loaded due to errors.
_default/240.168.192.in-addr.arpa/IN: not a valid numbe

dns_rdata_fromtext: 240.168.192:2: near ‘1D’: not a valid number

第五步:測試DNS
使用nslookup命令。

關機之後需重啟service named start

[1]: [linux下DNS伺服器配置 ] (http://blog.sina.com.cn/s/blog_6cef0cb50100qtoj.html )
[2]: [linux 下DNS配置錯誤分析 ] (https://blog.csdn.net/lengthbylength/article/details/5262721 )
[3]: [DNS伺服器搭建與配置 ] (http://www.cnblogs.com/heiye123/articles/7687922.html )
[4]: [ Linux配置靜態ip及resolve.conf檔案內容被清除問題 ] (https://blog.csdn.net/u010716730/article/details/78845185 )