一、介紹
DNS(Domain Name System)域名系統,是一種用於TCP/IP應用程序的分佈式數據庫,他提供主機名字和IP地址之間的轉換及有關電子郵件的選路信息。DNS最常用的版本是BIND(Berkeley Internet Name Domain)——伯克利Internet域名服務器。
1、服務器類型
緩存DNS服務器:不需要註冊,內部客戶端使用,數據由客戶端請求後將結果緩存到服務器上
主DNS服務器(master):保存本域的NS記錄、主機A記錄、MX記錄、子域服務器記錄等數據庫更新由管理員手動完成
輔助DNS服務器(slave):也叫從服務器,數據庫跟新從主服務器或其他輔助DNS服務器那裏同步獲取
子域服務器:需要在父域服務器授權
2、域名分級結構
頂級域:“.”也稱之爲根域,全球總共有13臺根服務器,裝完bind後在/var/named/named.ca 中保存的就是全球的13臺根DNS信息
一級域:
國家域:.cn, .hk, .iq, .us, .jp, .uk
組織域:.com, .net, .edu, .org, .gov, .mil, .cc, .mobi
反向域:arpa FQDN <--IP
3、解析過程
(1)客戶端client發起查詢請求www.shohu.com,客戶機首先查詢自己的緩存了有沒有,然後在查看自己的hosts文件,如果沒有,把請求提交給local DNS
(2)local DNS接受到請求後,首先檢查本地緩存中,有沒有客戶請求的地址,如果有就直接將緩存中的結果相應給客戶,否則就開始迭代查詢,去找根服務器root DNS
(3)根服務器root DNS接收到local DNS的請求並查找自己的區域文件記錄,發現沒有www.sohu.com的記錄,但是我這裏有.com的記錄,我把.com以下的解析都授權給.com了, 然後將.com的地址迴應給local DNS
(4)local DNS收到根root DNS的返回結果後,就知道了.com的地址,並且這不是client所需要的結果,所以local DNS再去找.com
(5).com接收到local DNS的請求後查詢自己的區域文件記錄。發現他這裏也沒有www.sohu.com的記錄,但是有sohu.com的記錄,並且已經將解析權限授權給了sohu.com,然後將sohu.com的地址迴應給local DNS
(6)local DNS收到.com的迴應,發現依然不是最終clent需求的的結果,於是乎local DNS再去找sohu.com
(7)sohu.com接收到local DNS的請求後,查詢自己的區域文件記錄,自己這裏就有local DNS所要的答案,於是就將結果迴應給localDNS
(8)local DNS收到sohu.com的結果後,發現這就是clent請求的地址,於是local DNS現將結果緩存一份然後就將最終結果通知clent
(9)client收到最終結果後就可以順利的訪問到www.sohu.com了
二、測試命令彙總
bind的測試工具就包含在bind-utils軟件包中,
1、dig
基本語法:dig -t 資源記錄類型 名稱 @server(使用那臺DNS服務器去查詢,也可以不跟)
dig -t A #主機A記錄 NS #NS服務器記錄 MX #郵件記錄 x #反向解析 axfr #查詢所有記錄,也叫區域傳輸 實例: 使用DNS服務器172.16.0.1查詢NS記錄root-server.net # dig -t NS root-server.net @172.16.0.1 使用DNS服務器172.16.0.1查詢全球13臺根DNS的NS記錄 # dig -t NS . @172.16.0.1 使用DNS服務器172.16.0.1查詢www.sohu.com # dig -t A www.sohu.com @172.16.0.1
2、host
基本語法與dig命令基本相同:host -t 資源記錄類型 名稱
例如:
# host -t A www.baidu.com
3、rndc
這個命令功能可以查看DNS服務的運行狀態,可以重新加載配置文件和清空緩存
rndc status #查看服務器狀態 rndc reload #重新裝載配置文件及區域解析庫文件 rndc reconfig #僅重讀配置文件 rndc flash #清空緩存 rndc trace #提升調試級別,級別越高信息越詳細 rndc trace LEVEL rndc trace 3 #指定調試級別爲3 rndc notrace #關閉調試 rndc querylog #打開查詢日誌功能
4、named-checkconf
檢查配置文件有沒有錯誤,直接輸入named-checkconf命令就可以測試,沒返回任何信息就是沒有錯誤。
5、named-checkzone
檢查區域庫文件有沒有錯誤
基本語法:named-checkzone "區域名" 區域庫文件路徑
例如:
[root@localhost named]# named-checkzone "lyd.com" /var/named/lyd.com.zone zone lyd.com/IN: loaded serial 20130826 OK
如果返回OK表示沒有錯誤
三、實現過程
1、安裝
安裝很簡單,如果配置好yum源的話直接yum安裝,如果沒有yum源可以把光盤做成yum源,或者直接掛載光盤安裝就可以了。可以一起將bind-utils工具包裝上
# yum install bind bind-utils
2、主配置文件介紹
主配置文件:/etc/name.conf,每個語句都要使用分號結尾; 定義各區域的全局配置;options{}; 定義視圖;view {}; 定義日誌:logging {}; 定義區域:zong "." IN {}; #這裏定義的是根提示 引用其他配置文件:include ""; 程序文件:/usr/sbin/named 區域配置文件:/etc/named.rfc1912.zones 配置文件中的控制命令 allow-transfer {}; #允許區域傳送的主機地址 allow-query {}; #允許查詢的主機地址 allow-recursion {}; #允許遞歸的客戶端列表,一般只給本地客戶端做遞歸 allow-update {}; #允許更新的主機
3、配置最簡單的DNS緩存服務器
(1)修改主配置文件
# vi /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; #註釋掉或者改成本機的IP // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; #允許查詢的客戶端IP範圍改成all或者直接註釋, }
(2)然後啓動服務就可以了
[root@localhost ~]# service named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ]
注意:Centos6啓動可能要等一會才能啓動,Centos5上沒有這問題。
(3)啓動成功後就是一臺DNS緩存服務器了
4、區域配置
(1)編輯區域配置文件/etc/named.rfc1912.zones添加一個正向區域
# vi /etc/named.rfc1912.zones
zone "lyd.com" IN { type master; #定義區域類型 file "lyd.com.zone" #指定區域庫文件 };
檢查配置文件有沒有錯誤
# named-ceckconf
(2)添加區域庫文件
# vi /var/named/lyd.com.zone
$TTL 3600 @ IN SOA ns.lyd.com. admin.lyd.com. ( 2013082601 #序列號 2H #刷新時間 10M #重試時間 7D #過期時間 6H) #否定回答的ttl IN NS ns #主及NS記錄 IN MX 10 mail #郵件記錄 ns IN A 172.16.3.3 #主機A記錄 mail IN A 172.16.3.2 www IN A 172.16.3.5 www IN A 172.16.3.6 ftp IN CNAME www #別名記錄
修改區域配置文件權限
# chown :named lyd.com.zone
檢查區域配置文件有沒有語法錯誤
# named-checkzone "lyd.com" /var/named/lyd.com.zone
重新加載配置文件
# rndc reload
驗證結果
5、反向區域
(1)添加區域配置文件
# vi /etc/named.rfc.1912.zones
zone "3.16.172.in-addr.arpa" IN { type master; file "172.16.3.zone"; };
檢查配置文件
# named-checkconf
(2)添加區域庫配置文件
$TTL 3600 @ IN SOA ns.lyd.com. admin.lyd.com. ( 20130826 2H 10M 7D 6H) IN NS ns.lyd.com. 3 IN PTR ns.lyd.com. 2 IN PTR mail.lyd.com. 5 IN PTR www.lyd.com. 6 IN PTR www.lyd.com.
修改區域庫文件權限
# chown :named 172.16.3.zone
檢查區域庫文件有沒有錯誤
# named-checkzone "3.16.172.in-addr" /var/named/172.16.3.zone
重新加載配置文件和庫文件
# rndc reload
驗證
四、主從複製
先介紹一下環境吧,前邊的DNS 作爲主DNS服務器IP:172.16.3.3
再配置一臺服務器安裝DNS做輔助DNS服務器IP:172.16.3.4
1、配置主DNS配置文件
zone "lyd.com" IN { type master; file "lyd.com.zone"; allow-transfer { 172.16.3.4; }; #允許區域傳輸的地址 }; zone "3.16.172.in-addr.arpa" IN { type master; file "172.16.3.zone"; allow-transfer { 172.16.3.4; }; };
# named-checkconf
2、配置主DNS的區域庫文件添加從DNS的NS記錄和主機A記錄
$TTL 3600 @ IN SOA ns.lyd.com. admin.lyd.com. ( 2013082601 #修改完區域文件後增大序列號 2H 10M 7D 6H) IN NS ns IN NS ns2 #從DNS的NS記錄 IN MX 10 mail ns IN A 172.16.3.3 ns2 IN A 172.16.3.4 #從DNS的A記錄 mail IN A 172.16.3.2 www IN A 172.16.3.5 www IN A 172.16.3.6 ftp IN CNAME www
# named-checkzone "lyd.com" /var/named/lyd.com.zone
反向區域要添加從DNS的NS和PTR記錄,修改序列號
3、配置從服務器添加區域配置文件
zone "lyd.com" IN { type slave; #區域類型爲slave從 file "slaves/lyd.com.zone"; masters { 172.16.3.3; }; #指定主DNS allow-transfer { none; }; #不允許任何主機區域傳送 }; zone "3.16.172.in-addr.arpa" IN { #反向區域 type slave; file "slaves/172.16.3.zone"; masters { 172.16.3.3; }; allow-transfer { none; }; };
檢查配置文件有沒有錯誤
named-checkconf
啓動服務
service named start
4、在從DNS驗證
區域文件已經傳送過來了。
注意:區域文件傳送不成功防火牆端口開放或者關閉防火牆,SELinux是否關閉
五、轉發
1、轉發所有針對非本機負責解析的區域的請求
options { forward only; #only僅佔發,first轉發返回沒結果時自己去查詢 forwarders { 172.16.0.1; }; };
2、僅轉發特定區域的請求
zone "sohu.com" IN { type forward; forward only; forwarders { 172.16.0.1; }; };
轉發前提:接收轉發請求的服務器必須能夠爲請求者做遞歸查詢
3、註釋以下行
// dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // managed-keys-directory "/var/named/dynamic"; // include "/etc/named.root.key";
這幾行都在主配置文件中但不是連續的,都找出來註釋掉
4、測試指定使用172.16.3.3做解析
六、子域
域內:劃分出小域即爲子域
授權:委派,將請求委派給子域來管理
在父域區域記錄中添加子域的NS記錄
1、在父域給子域授權
$TTL 3600 @ IN SOA ns.lyd.com. admin.lyd.com. ( 2013082601 2H 10M 7D 6H) IN NS ns IN NS ns2 IN NS dep #子域的NS記錄 IN MX 10 mail dep IN A 172.16.3.7 #子域的A記錄 ns IN A 172.16.3.3 ns2 IN A 172.16.3.4 mail IN A 172.16.3.2 www IN A 172.16.3.5 www IN A 172.16.3.6 ftp IN CNAME www
2、在子域服務器上建立子域區域,和區域庫文件
父域是可以直接解析子域的,子域默認是不能解析父域的,但可以進行轉發進行訪問父域
未完待續
七、view試圖
八、壓力測試