DNS服務器的配置

實驗環境:CentOS6.0
ServerIP:192.168.0.1
ClientIP:192.168.0.2
Port:53 [相關服務端口可以在/etc/service中查看]
 
#yum install bind bind-chroot -y
 
示例1:
具有forwarding的Caching only DNS服務器的配置:
 
#vim /etc/named.conf
***********************************************************************************
options {
        listen-on port 53 { any; };     //監聽在這臺主機系統上的任何一個網絡接口
        directory               "/var/named";     //數據庫(zone file)默認放置的目錄
        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; };     //針對客戶端,任何人都能查詢DNS
        recursion yes;     //將自己視爲客戶端的一種查詢模式
        forward only;     //讓DNS服務器僅進行forward  
        forwarders {     //將DNS查詢請求轉遞給哪些上層DNS服務器
        168.95.1.1;
        139.175.10.20;
        };
};
***********************************************************************************
 
#/etc/init.d/named start
#netstat -tunlp|grep named    (查看53端口)
#tail -n 30 /var/log/messages (每次啓動查看下擁有重要信息的日誌文件)
 
測試:
將客戶端的/etc/reslov.conf內DNS的IP配置成該服務器IP即可,dig解析出來的正確數據中,SERVER的IP是192.168.0.1即可。
 
 
示例2:DNS服務器配置:
 
1.DNS的環境規劃
 
正解區域:Linux.jjf
反解區域:192.168.0.0/24
DNS服務器自己尋找.(root)
 
故,需要配置的文件如下:
1>named.conf (主配置文件)
2>named.linux.jjf (主要的linux.jjf的正解文件)
3>named.192.168.0 (主要的192.168.0.0/24的反解文件)
4>named.ca (有bind軟件提供的.的正解文件)
 
2.主配置文件/etc/named.conf的設置
 
#vim /etc/named.conf
******************************************************************************************************************
options {
        listen-on port 53 { any; };
        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;
        allow-transfer  { none; };      //不允許Slave DNS對整個領域的數據進行傳送
        };
 
zone "." IN {
        type hint;
        file "named.ca";
 
};
 
zone "linux.jjf" IN {                   //文件名無限制,便於記憶即可
        type master;
        file "named.linux.jjf";
};
 
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "named.192.168.0";
};
******************************************************************************************************************
 
3.最上層.(root)數據庫文件的設置
 
#vim /var/named/named.ca
 
該文件基本不用修改,有BIND軟件自己提供。當然,也可以在網站下載最新的數據文件ftp://rs.internic.net/domain/named.root
 
 
4.正解數據庫文件的設置
 
注:
 
1>正解文件一定要有的RR標誌:
.關於本區域的基礎設置方面:緩存記憶時間(TTL)、域名(ORIGN)等;
.關於Master/Slave的認證方面(SOA);
.關於本區域的域名服務器所在主機名與IP對應(NS、A);
.關於其它正反解相關的資源記錄(A、MX、CNAME等).
2>配置正解數據庫文件時一定要從首行開始、若首行有空格,則代表延續前一個domain的意思。
3>@這個符號代表Zone(域)的意思。點(.)很重要,因爲它代表FQDN而不是僅有hostname。
 
#vim /var/named/named.linux.jjf
******************************************************************************************************************
;對整個域相關性較高的設置包括NS、A、MX、SOA等標誌的設置
$TTL 600
@                       IN SOA           master.linux.jjf.   287523394.qq.com. (2013010101 3H 15M 1W 1D);
@                       IN NS            master.linux.jjf.      ;DNS服務器名稱
master.linux.jjf.       IN A             192.168.0.1            ;DNS服務器IP
@                       IN MX            10 www.linux.jjf.      ;領域名的郵件服務器
 
;針對192.168.0.1這部主機的所有相關正解設置
www.linux.jjf.          IN A            192.168.0.1
centos.linux.jjf.       IN CNAME        www.linux.jjf.
ftp.linux.jjf.          IN CNAME        www.linux.jjf.
forum.linux.jjf         IN CNAME        www.linux.jjf.
 
;其他幾部主機的主機名正解設置
slave.linux.jjf.        IN A            192.168.0.2
sust.linux.jjf.         IN A            192.168.0.2
client1.linux.jjf.      IN A            192.168.0.3
client2                 IN A            192.168.0.4     ;簡化的寫法
;加上了.表示這是個完整的主機名(FQDN),即就是“hostname+domain name”,如果沒有加點的話,表示僅爲hostname而已。
*******************************************************************************************************************
 
5.反解數據庫文件的設置:
 
#vim /var/named/named.192.168.0
*******************************************************************************************************************
$TTL 600
@       IN SOA  master.linux.jjf.       287523394.qq.com.       (2013010101 3H 15M 1W 1D)
@       IN NS   master.linux.jjf.
1       IN PTR  master.linux.jjf.
 
1       IN PTR  www.linux.jjf.
2       IN PTR  slave.linux.jjf.
2       IN PTR  sust.linux.jjf.
3       IN PTR  client1.linux.jjf.
4       IN PTR  client2.linux.jjf.
*******************************************************************************************************************
 
6.DNS的啓動、查看與防火牆
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
#iptables -A INPUT -p UDP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
#iptables -A INPUT -p TCP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
 
7.測試與更新數據
 
修改客戶端/etc/reslov.conf文件:nameserver 192.168.0.1
在客戶端用dig進行檢測,正解、反解的結果是否是我們所預想的結果。
 
更新數據的步驟:
.先針對要更改的那個Zone的數據庫文件去做更新,就是加入RR的標誌;
.在更改該zone file 的序號(Serial),使其變大,該序號會影響Master/Slave判定是否更新;
.重啓named即可。
 
 
示例3:Master/Slave DNS協同工作
 
Master 192.168.0.1中以下更改均在示例2的基礎上
 
#vim /etc/named.conf
********************************************************************************************************************
在域文件選項下添加allow-transfer {192.168.0.2}:
如:
zone "linux.jjf" IN {                  
        type master;
        file "named.linux.jjf";
        allow-transfer { 192.168.0.2; }; //新添加的項
};
 
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "named.192.168.0";
        allow-transfer { 192.168.0.2; }; //新添加的項
};
********************************************************************************************************************
 
#vim /var/named/named.linux.jjf
********************************************************************************************************************
修改:
序列號  2013010101——>2013010102
 
添加:
@  IN NS slave.linux.jjf.
slave.linux.jjf.  IN A 192.168.0.2
********************************************************************************************************************
 
#vim /var/named/named.192.168.0
********************************************************************************************************************
修改:
序列號2013010103——>2013010102
 
添加:
@ IN NS slave.linux.jjf.
2 IN PTR  slave.linux.jjf.
********************************************************************************************************************
 
#/etc/init.d/named restart
#tail -n 30 /var/log/messages |grep named
 
 
Slave DNS的配置192.168.0.2:
 
#yum install bind bind-chroot -y
 
#vim /etc/named.conf
*******************************************************************************************************************
options {
        listen-on port 53 { any; };
        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;
        allow-transfer  { none; };      
        };
 
zone "." IN {
        type hint;
        file "named.ca";
 
};
 
zone "linux.jjf" IN {                   
        type slave;
        file "slaves/named.linux.jjf"; //該數據文件由bind程序自動依據master數據建立,存儲於/var/named/slaves/下
        masters { 192.168.0.1; };
};
 
zone "0.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/named.192.168.0.1";//該數據文件由bind程序自動依據master數據建立,存儲於/var/named/slaves/下
        masters { 192.168.0.1; };
};
**********************************************************************************************************************
 
#/etc/init.d/named restart
#tail -n 30 /var/log/messages  
查看日誌關於bind的詳細信息,slave會自動從master中獲取zone file,如果日誌提示權限問題,可能會是寫入全限問題,修改即可。一般而言,bind會自動處理/var/named/slaves的權限,使之有效執行數據的同步傳輸。
 
 
示例4.DNS服務器的子域授權
 
 
1.上層master DNS服務器:只需要添加zone file 的NS與A即可
 
#vim /var/named/named.linux.jjf
*********************************************************************************************************************
修改:
序號2013010102——>2013010103
 
添加:
 
key.linux.jjf. IN NS dns.key.linux.jjf. //將域key.linux.jjf授權給dns.key.linux.jjf
dns.key.linux.jjf. IN A 192.168.0.3
**********************************************************************************************************************
Slave DNS無需改動,應爲主機重啓bind後,Slave會自己同步。
 
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
此時dig dns.key.linux.jjf肯定不通,因爲已經將key.linux.jjf域授權給dns.key.linux.jjf,而dns.key.linux.jjf並未設置ok。
 
2.下層DNS服務器:需要有完整的Zone相關設置      (192.168.0.3)
 
# yum install bind bind-chroot -y
 
#vim /etc/named.conf
**********************************************************************************************************************
options {
        listen-on port 53 { any; };
        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;
        allow-transfer  { none; };      
        };
 
zone "." IN {
        type hint;
        file "named.ca";
 
};
zone "key.linux.jjf" IN {
type master;
file "named.key.linux.jjf";
};
*********************************************************************************************************************
 
#vim /var/named/named.key.linux.jjf
*********************************************************************************************************************
$TTL 600
@       IN SOA          dns.key.linux.jjf.      287523394.qq.com. (2013010101  3H 15M 1W 1D)
@       IN NS           dns.key.linux.jjf.
dns     IN A            192.168.0.3
www     IN A            192.168.0.3
@       IN MX           10 www.key.linux.jjf.
********************************************************************************************************************
 
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
#iptables -A INPUT -p UDP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
#iptables -A INPUT -p TCP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
 
此時,無論客戶端的DNS設置的是哪一個,都可以dig通dns.key.linux.jjf
 
 
示例5.依據不同接口給予不同的DNS主機名(通過view功能)
 
建立名爲intranet的名字代表客戶端爲192.168.0.0/24的來源;
建立名爲internet的名字代表客戶端爲非192.168.0.0/24的來源;
intranet使用的zone file 爲前面所建立的zone file,internet使用的zone file則在原本的文件名後面累加inter的擴展名,並修訂各標誌的結果
 
#vim /etc/named.conf
*******************************************************************************************************************
options {
        listen-on port 53 { any; };
        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;
        allow-transfer  { none; };      //不允許Slave DNS對整個領域的數據進行傳送
};
acl intranet { 192.168.0.0/24; };
acl internet { ! 192.168.0.0/24; any; }; //!代表反向選擇
 
view "lan" { //只是個名字而已
match-clients  { "intranet"; }; //內網來源
zone "." IN {
        type hint;
        file "named.ca";
 
};
 
zone "linux.jjf" IN {                  
        type master;
        file "named.linux.jjf";
allow-transfer { 192.168.0.2; };
};
 
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "named.192.168.0";
allow-transfer { 192.168.0.2; };
};
};
 
view "wan" {
match-clients  { "internet"; }; //外網來源
zone "." IN {
        type hint;
        file "named.ca";
 
};
 
zone "linux.jjf" IN {                  
        type master;
        file "named.linux.jjf.inter"; //文件名字一定不能相同
allow-transfer { 192.168.0.2; };
};
 
};
****************************************************************************************************************
 
#vim /var/named/named.linux.jjf.inter
****************************************************************************************************************
;修改序列號
;修改對應的、外網能解析到的DNS IP  (即本機主機名所對應的IP地址)
;對整個域相關性較高的設置包括NS、A、MX、SOA等標誌的設置
$TTL 600
@                       IN SOA           master.linux.jjf.   287523394.qq.com. (2013010103 3H 15M 1W 1D);
@                       IN NS            master.linux.jjf.      
master.linux.jjf.       IN A             192.168.1.1           
@                       IN MX            10 www.linux.jjf.      
 
;針對192.168.0.1這部主機的所有相關正解設置
www.linux.jjf.          IN A            192.168.1.1
centos.linux.jjf.       IN CNAME        www.linux.jjf.
ftp.linux.jjf.          IN CNAME        www.linux.jjf.
forum.linux.jjf         IN CNAME        www.linux.jjf.
 
;其他幾部主機的主機名正解設置
slave.linux.jjf.        IN A            192.168.1.2
sust.linux.jjf.         IN A            192.168.1.2
client1.linux.jjf.      IN A            192.168.1.3
client2                 IN A            192.168.1.4     
****************************************************************************************************************
 
#/etc/init.d/named restart
查看日誌信息無誤後、就可以使用了。
 
 
 
示例6.利用RNDC控制DNS服務器(利用密鑰進行管理控制)
 
1.先建立密鑰的相關數據
 
#rndc-confgen
注:
*******************************************************************************************************************
執行rndc-confgen沒反應,這是由於rndc-confgen 調用 /dev/random,而/dev/random又通過/proc/interrupts 產生隨機數不足,導致
rndc-confgen 一直等待
解決方法1:
手動生成一個 randomfile 文件,如test(向test輸入若干數據即可)
# rndc-confgen -r test 
解決方法2:
#rndc-confgen -r /dev/urandom
********************************************************************************************************************
 
2.建立rndc.key文件
 
#vim /etc/rndc.key
*********************************************************************************************************************
key "rndc-key" {
       algorithm hmac-md5;
       secret "NocOScUIwsE1LNa0gJZUWA==";
};
*********************************************************************************************************************
 
3.修改named.conf
*********************************************************************************************************************
放於options之外!
controls {
       inet 127.0.0.1       port 953
       allow { 127.0.0.1; } keys { "rndc-key"; };
 };
*********************************************************************************************************************
 
4.#/etc/init.d/named restart
 
利用man rndc 查看相關用法即可
 
 
例7.搭建DDNS服務器
 
DDNS提供機制,讓客戶端能夠自己到DDNS服務器上面實現IP與主機名對應的修改。
 
1.DDNS Server端的設置
 
#dnssec-keygen -a [算法] -b [密碼長度] -n [類型]  名稱
 
#cd /etc/named/
#dnssec-keygen -a HMAC-MD5 -b 512 -n HOST  linux
 
#vim /etc/named.conf
*****************************************************************************************************
key "linux" {
        algorithm hmac-md5;
        secret "4m/1Fa1aKfbfoJiLtFA+MSEGZ/97EXe5gXw16eJDBz97+gEM1Y/+t48j BdpasaZ5w2gfy6snO1hzcSiCzAt3ag==";
 
};
 
 zone "linux.jjf" IN {
                type master;
                file "named.linux.jjf";
                allow-transfer { 192.168.0.2; };
                allow-update { key linux; };
 
        };
********************************************************************************************************
 
#chmod g+w /var/named
#chown named /var/named/named.linux.jjf
#/etc/init.d/named restart
#setsebool -P named_write_master_zones=1
 
 
2.客戶端的更新
 
將服務器端產生的兩個密鑰拷貝到客戶端目錄中
 
#nsupdate -k Klinux.+157+52335.private
> server 192.168.0.1
> update delete client2.linux.jjf
> update add client10.linux.jjf 600 A 192.168.0.4
> send
這樣客戶端就可以隨時依據情況更改所授權域的主機名修改。
 
 
 
注:
 
1.通常DNS是以UDP這個傳輸速度較快的協議查詢的,但是萬一沒有辦法查詢到完整的信息時,就會再次以TCP這個協議來重新查詢;
2.DNS採用階梯式管理機制;
3.從主機名查詢到IP的流程稱爲:正解(A);
4.從IP反解析到主機名的流程稱爲:反解(PTR),只有ISP有權力設置反解;
5.SOA:即就是開始驗證的縮寫;
6:NS:即名稱服務器,一般後面記錄的數據是DNS服務器;
7.一臺簡單的正解DNS服務器,基本上要有兩個Zone才行:一個是hint(記錄.的Zone)、一個是關於自己域的正解Zone;
8.在網絡正常的情況下,客戶端永遠只訪問客戶端自己設置的第一臺DNS服務器;
9.客戶端在使用“dhcp”模式獲取IP時,dhcp服務器默認會設置客戶端/etc/reslov.conf內DNS的IP,可以使用PEERDNS=no參數取消此功能。
10.在RHEL6中,/etc/init.d/named的啓動腳本已經通過mount --bind /var/named /var/named/chroot/var/named進行了目錄綁定。
11.cache-only DNS Server這是一種沒有自己公開的DNS數據庫的服務器,只需要.這個zone file,只有緩存搜尋結果的功能,完全由對外的查詢來提供它的數據源,查詢服務一律從自己的緩存和.找起,在公司中,一般出於安全考慮建立該服務器於防火牆中。
12.forwarding DNS服務器相對於cache-only DNS Server而言,沒有.這個zone file,將原本自己要往.查詢的任務丟給上層DNS服務器去處理即可。
13.dig命令輸出結果格式如下:
[domain] [ttl] IN [[RR type]  [RR data]]
[待查數據] [暫存時間(秒)]  IN [[資源類型] [資源內容]]
14.正解文件RR相關信息
[domain] IN [[RR type] [RR data]]
主機名. IN A IPV4的IP地址
主機名. IN AAAA IPV6的IP地址
域名. IN NS 管理這個域名的服務器主機名字
域名. IN SOA 管理這個域名的七個重要參數
域名. IN MX 順序數字 接收郵件的服務器主機名
主機別名. IN CNAME 實際代表這個主機別名的主機名字
15.SOA後面接的七個參數(按順序):
 
Master DNS 服務器主機名
管理員的E-mail、但由於@在zone file中有特別含義,故用.代替@
序號——Serial(數據庫文件的序號,序號越大代表數據庫文件越新)、不能超過2的32次方,即4 294 967 296
更新頻率——Refresh>=2*Retry(秒)、
失敗重新嘗試時間——Retry(秒)、Refresh+Retry<Expire
失效時間(秒),持續失敗該時間後,Slave將不更新數據 Expire>=Retry*10  Expire>=7Days
緩存時間(秒)即就是TTL
 
16.進行反解時,要注意的就是要將IP反轉過來寫,並且結尾加上.in-addr.arpa.才行;而後面的主機名儘量使用完整的FQDN,即加上小數點(.)
17.一個IP可以對應多個主機名、一個主機名可以對應多個IP;
18.由INTERNIC負責維護.,全世界共有13臺管理.的DNS服務器;
19.對於Master和Slave在網絡上的地位是相同的,並不是只有當Master宕機後才用Slave。
20.當外部DNS Server設置錯誤時,本地的DNS Server可能會包“lame server”的提示,可以在option選項中添加選項,取消這種錯誤提示
如:
logging {
                category lame-servers { null; };
        };
21.啓動時,日誌報錯“couldn't add command channel 127.0.0.1#953:not found”通常是由於rndc key設置有問題所致。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章