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記錄的。
web

@ @表示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
vim

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
ide

最後咱們再看根區域的文件,根區域文件中配置的是全球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,順帶咱們禁用iptablesspa

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

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

相關文章
相關標籤/搜索