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 numbedns_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 )