BIND


Bind 是由BSD維護的一套域名解析系統,今天我們在CENTOS6.4中實現以下功能
1, 緩存DNS服務器
2, 主DNS服務器
3, 輔DNS助服務器
4, 子域授權
5, Acl和view
6, 日誌系統
首先,我們查看是否安裝了bind , rpm –qa |grep bind,否則使用yum install bind 安裝
 bind-utils-9.8.2-0.17.rc1.el6.x86_64  爲bind的客戶端工具
bind-libs-9.8.2-0.17.rc1.el6.x86_64   爲bind的庫文件
bind-9.8.2-0.17.rc1.el6.x86_64  爲bind的主文件
一, 緩存DNS服務器的實現
BIND安裝完成後即爲緩存DNS服務器,我們解析域名的一般先查詢緩存DNS,如果緩存DNS沒有,則需要去由緩存DNS代爲查詢,當然我們需要對其配置文件作一些設置,我們只需要對/etc/named.conf文件進行簡單註釋就可以達到緩存DNS 的效果,爲了更好的認識DNS的配置文件,我們決定手動書寫/etc/name.conf文件
[root@dns named]# vim /etc/named.conf
options {
        directory "/var/named";  //定義區域文件所在的位置
};
zone "." IN {      //聲明根域
        type hint;
        file "named.ca";
};
zone "localhost" IN {   //聲明本地正向域
        type master;
        file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN { //聲明本地反向域
        type master;
        file "127.0.0.zone";
};
我們在/var/named下創建解析文件,以本地的正向與反向解析爲例,我們創建localhost.zone
我們首先來看解析數據庫的格式
NAME [TTL] IN  RR_TYPE  VALUE
RR_TYPE的類型有很多種,SOA ,NS, A ,AAA  ,  PTR , MX
SOA ,Start Of Authority, 起始資源錄,不能省略的資源記錄類型,來看看我是怎樣書寫SOA記錄的。

@ @表示zone的名字,那我們zone的名字叫 localhost,那@就代表localhost
. .代表這條記錄爲的FQDN,而不是一個主機名,主機名+域名=FQDN
; 代表註釋

 

發現我沒有寫TTL值,那什麼是TTL值呢,爲什麼可以不寫呢
在解析數據庫中支持宏,而TTL就是其中的一種,常見的還有$ORIGIN
$TTL  TTL全名叫Time To live,存活時間,就是緩存服務器在迭代查詢後資源記錄保留的時間
$ORIGIN 這個設定可以重新設定zone的定義,在預設情況下這個正解的zone是由named.conf所設定的
@               IN      SOA     localhost.      admin.localhost.
Localhost. 爲此區域的Master DNS
admin.localhost. 表示管理員的郵箱地址,因爲@被當做zone的名字了,所以只能用點號(.)
表示@ 
接下來是SOA的5個重要參數,
2013081601 serial值,用於同步從DNS,此值需要手動修改,所以每次修改完別忘了修改,不然不能立馬生效的,要等到刷新時常纔可以和主DNS保持同步。
1H 刷新時常,多久和主DNS聯繫一次,看主DNS還活着嘛,並且同步數據
10M 重試時間,和主DNS聯繫不上時,過10分鐘再試一次,然後過10分鐘再試
7D 過期時間,7天后如果還聯繫不到主DNS,就代表主DosNS掛了,自己也要陪葬,對外比提供解析服務
1D 否定回答的TTL值,如果查詢到沒有此記錄,那在緩存服務器中保留的時間爲1D

NS,Name Server,名字服務器
                IN      NS      localhost.                                       
我們發現前面的NAME裏面沒有值,其實是自動繼承上面的@,如果前面不寫的話,那就是集成上面的值,
這條記錄說明我們有一個Name-Server的FQDN爲localhost.

A記錄或者AAA記錄 地址記錄

localhost.      IN      A       127.0.0.1                                          
說明localhost對應的IP地址爲 127.0.0.1
反向解析與此類似,我們看看反向解析的文件
最後一條爲PTR記錄 pointer,IP地址向域名解析的時候使用PTR記錄
1代表主機名,自動與@ 即127.0.0.結合生成FQDN,說明localhost.的ip地址爲127.0.0.1

最後我們再看根區域的文件,根區域文件中配置的是全球13臺根DNS相對應IP地址,我們只需要將別人的根文件複製到我們這裏就可以
dig -t NS . @172.16.0.1>>/var/named/named.ca

要對我們做出的配置做出測試,我們需要用到兩條命令,named-checkzone ,named-checkconf

我們來啓動bind,bind的守護進程爲named,監聽端口爲UDP 53,其實BIN9以後出現了一個新的工具rndc,監聽端口爲953,順帶我們禁用iptables

[root@dns named]# service named start
我們來查看named進程監聽的兩個端口一個爲53 ,另一個爲953
[root@dns named]# netstat -utlnp
[root@dns named]# service iptables stop

我們將客戶機的DNS設置爲緩存服務就可以實現
Linux客戶機
[root@dns named]# echo DNS1=172.16.11.17 >> /etc/resolv.conf

二, 主DNS的實現
我們在此DNS服務器上配置一個叫sysbo.com的區域
zone "sysbo.com" IN {
        type master;
        file "sysbo.com.zone";
};
在/var/named/添加新的文件sysbo.com.zone

重新加載配置文件 rndc reload,稍後我們會介紹dig命令還有rndc
我們添加添加反向解析
 zone "11.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.11.zone";
};
我們來看區域配置文件  
最後別忘了該權限,默認爲640權限,文件屬組爲named,
so,我們修改權限
[root@dns named]# chown :named 172.16.11.zone
使用dig 命令檢測


這樣子我們的主就配置成功了
三,輔助DNS
接下來我們看看輔助DNS的配置,輔助DNS要在主DNS新增記錄,我們新增記錄ns2.sysbo.com

接下來我們在172.16.1.1中修改配置文件


這樣子就就好了,我們rndc reload 就可以在/var/named下瞅見傳送過來的sysbo.com.zone與172.16.11.zone了,反向解析與此類似,就是修改兩個文件

四,實現子域,
子域的實現也是非常簡單,首先,我們現在父域中添加一條記錄,添加一條子域的NS記錄並且他所對應的A記錄即可。


sysbo有個子域,子域的DNS由ns.dep.sysbo.com負責,接下來,我們在192.168.0.11中建立子域,在192.168.0.11中創建子域的過程和上面創建主域的過程一樣,在/etc/named.conf 創建dep.sysbo.com的區域,然後/var/named/創建dep.sysbo.com.zone這樣的區域文件,過程和創建主域類似,這裏不再詳述了

五,ACL和VIEW聯合實現智能DNS
假設我是一家IDC的管理員,爲了解決南北通信的問題,北方聯通,南方電信,我們的website 來自全國各地的人來訪問
我們來定義兩個訪問控制列表,當然是在我們的/etc/name.conf中定義

acl unicom {
        172.16.11.0/24;
        127.0.0.1/24;
};
acl telcom {
        172.16.111.0/24;
        192.168.0.0/24;
};
view "UNI" {
        match-clients { unicom; };   //這裏匹配來自unicom的客戶,他解析
        recursion yes;    //sysbo.com的時候,回去找sysbo.com.uni.zone
zone "sysbo.com" IN {
        type master;
        file "sysbo.com.uni.zone";
};
P
zone "11.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.11.zone";
};
};
view "TEL" {        //匹配來自telcom的客戶,他解析sysbo.com
        match-clients { telcom; };   //的時候去找sysbo.com.tel.zone
        recursion yes;
zone "sysbo.com" IN {
        type master;
        file "sysbo.com.tel.zone";
};
};
我們來測試,我們的智能DNS,哈哈
再看看另外一個

我們看到的是同樣是解析www.sysbo.com 卻解析到了不同的結果,這就是解決了南北問題
六,日誌系統
接下來,我們看如何配置日誌系統,bind 的日誌系統主要涉及到兩個東西,一個是channal(通道),另外一個是category(類別)
Channel,定義日誌輸出方式,一般有兩種輸出方式,文本文件和rsyslog,這裏我們只介紹文本文件。
Category, 定義bind的哪個功能模塊的產生出來的日誌,如query (查詢系統),有15種類別可供選擇。
Channel 和 category都定義在logging中,而logging是在/etc/named.conf中定義,OK,我們現在定義一個查詢日誌系統。


我們使用dig 
www.sysbo.com來查詢,然後再查看bindquery.log文件
[root@dns log]# cat /var/log/bindquery.log
17-Aug-2013 13:13:41.297 queries: info: client 127.0.0.1#57594: view UNI: query: 
www.sysbo.com IN A + (127.0.0.1)

這樣子,我們就看到了查詢的日誌信息。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章