DNS(bind)服務器的安裝與配置

Bind服務器:

      bind(Berkeley Internet Name Domain Service),它是一款實現DNS服務器的開源軟件,現在爲最廣泛的DNS服務器軟件

 Socket: 套接字,及IP:port(IP地址端口對) 端口: TCP:0~65535  UDP:0~65535

 注: 小於1024的端口爲知名端口,只有root用戶有權限開放和關閉。


1.bind的安裝

 包名: bind
 進程: named
 協議: dns
 使用端口: 53(tcp,udp)

 相關的包:

 

[root@localhost ~]# rpm -qa bind*
  bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64  #提供一些客戶端工具
  bind-9.8.2-0.37.rc1.el6_7.4.x86_64   #bind主程序包
  bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64  #服務器端和客戶端使用的公共庫文件
  bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64 #將named進程的活動範圍限定在chroot目錄中,保證安全性
  bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64 #開發使用的頭文件和庫文件(編譯安裝時使用)

[root@localhost ~]# yum install bind*
已加載插件:fastestmirror, refresh-packagekit, security
設置安裝進程
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * c6-media: 
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
解決依賴關係
--> 執行事務檢查
---> Package bind.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-chroot.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-devel.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-dyndb-ldap.x86_64 0:2.3-8.el6 will be 安裝
---> Package bind-libs.x86_64 32:9.8.2-0.30.rc1.el6 will be 升級
---> Package bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be an update
---> Package bind-sdb.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
--> 處理依賴關係 libpq.so.5()(64bit),它被軟件包 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64 需要
---> Package bind-utils.x86_64 32:9.8.2-0.30.rc1.el6 will be 升級
---> Package bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be an update
--> 執行事務檢查
---> Package postgresql-libs.x86_64 0:8.4.20-3.el6_6 will be 安裝
--> 完成依賴關係計算

依賴關係解決

==========================================================================================
 軟件包                架構         版本                              倉庫           大小
==========================================================================================
正在安裝:
 bind                  x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates       4.0 M
 bind-chroot           x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates        74 k
 bind-devel            x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates       383 k
 bind-dyndb-ldap       x86_64       2.3-8.el6                         base           72 k
 bind-sdb              x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates       311 k
正在升級:
 bind-libs             x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates       886 k
 bind-utils            x86_64       32:9.8.2-0.37.rc1.el6_7.4         updates       186 k
爲依賴而安裝:
 postgresql-libs       x86_64       8.4.20-3.el6_6                    updates       202 k

事務概要
==========================================================================================
Install       6 Package(s)
Upgrade       2 Package(s)

總下載量:6.0 M
確定嗎?[y/N]:y
下載軟件包:
(1/8): bind-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm                      | 4.0 MB     00:04     
(2/8): bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm               |  74 kB     00:00     
(3/8): bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm                | 383 kB     00:00     
(4/8): bind-dyndb-ldap-2.3-8.el6.x86_64.rpm                        |  72 kB     00:00     
(5/8): bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm                 | 886 kB     00:01     
(6/8): bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm                  | 311 kB     00:00     
(7/8): bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm                | 186 kB     00:00     
(8/8): postgresql-libs-8.4.20-3.el6_6.x86_64.rpm                   | 202 kB     00:00     
------------------------------------------------------------------------------------------
總計                                                      677 kB/s | 6.0 MB     00:09     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>
 Package: centos-release-6-6.el6.centos.12.2.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
確定嗎?[y/N]:y
運行 rpm_check_debug 
執行事務測試
事務測試成功
執行事務
  正在升級   : 32:bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64                            1/10 
  正在安裝   : 32:bind-9.8.2-0.37.rc1.el6_7.4.x86_64                                 2/10 
  正在安裝   : postgresql-libs-8.4.20-3.el6_6.x86_64                                 3/10 
  正在安裝   : 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64                             4/10 
  正在安裝   : 32:bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64                          5/10 
  正在安裝   : bind-dyndb-ldap-2.3-8.el6.x86_64                                      6/10 
  正在升級   : 32:bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64                           7/10 
  正在安裝   : 32:bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64                           8/10 
  清理       : 32:bind-utils-9.8.2-0.30.rc1.el6.x86_64                               9/10 
  清理       : 32:bind-libs-9.8.2-0.30.rc1.el6.x86_64                               10/10 
  Verifying  : 32:bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64                           1/10 
  Verifying  : 32:bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64                           2/10 
  Verifying  : 32:bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64                          3/10 
  Verifying  : 32:bind-9.8.2-0.37.rc1.el6_7.4.x86_64                                 4/10 
  Verifying  : 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64                             5/10 
  Verifying  : 32:bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64                            6/10 
  Verifying  : bind-dyndb-ldap-2.3-8.el6.x86_64                                      7/10 
  Verifying  : postgresql-libs-8.4.20-3.el6_6.x86_64                                 8/10 
  Verifying  : 32:bind-utils-9.8.2-0.30.rc1.el6.x86_64                               9/10 
  Verifying  : 32:bind-libs-9.8.2-0.30.rc1.el6.x86_64                               10/10

已安裝:
  bind.x86_64 32:9.8.2-0.37.rc1.el6_7.4                                                   
  bind-chroot.x86_64 32:9.8.2-0.37.rc1.el6_7.4                                            
  bind-devel.x86_64 32:9.8.2-0.37.rc1.el6_7.4                                             
  bind-dyndb-ldap.x86_64 0:2.3-8.el6                                                      
  bind-sdb.x86_64 32:9.8.2-0.37.rc1.el6_7.4                                              

作爲依賴被安裝:
  postgresql-libs.x86_64 0:8.4.20-3.el6_6                                                

更新完畢:
  bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.4  bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.4

完畢!


安裝完成後bind會自動創建用戶named系統用戶

注: 由於早期的linux都爲root用戶權限,服務的複雜導致BUG越來越多,***利用漏洞***系統,獲得root權限後控制了整個系統,爲了防止類似事件發生,服務軟件用root權限啓動,啓動後自動放棄root.由低權限的系統用戶(named)來運行進程,如果******也只有很低級的權限而不至於控制整個系統。


2.bind 的配置文件:

[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named   
/etc/named.conf   #主配置文件
/etc/named.iscdlv.Key
/etc/named.rfc1912.zones#區域配置文件
/etc/named.root.Key  #根區域的key文件實現數字簽名
/etc/rndc.conf   #遠程服務控制器的配置文件
/etc/rndc.Key     #遠程控制器加密密鑰
/etc/sysconfig/named
/var/named/named.ca   #13個根文件存放位置
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback


主配置文件: /etc/named.conf
 
  定義區域
  定義各區域的全局配置
  定義視圖
  定義日誌


註釋省略:

options { #服務器的全局配置選項及一些默認設置
        listen-on port 53 { any; }; #監聽端口,也可寫爲 { 127.0.0.1; 192.168.139.46; }
         listen-on-v6 port 53 { ::1; }; #對ip6支持
        directory       "/var/named";  #區域文件存儲目錄
        dump-file       "/var/named/data/cache_dump.db"; #dump cach的目錄directory
        statistics-file "/var/named/data/named_stats.txt";
         memstatistics-file "/var/named/data/named_mem_stats.txt";

         pid-file        "/var/run/named/named.pid"; #存着named的pid
        forwarders     { 168.95.1.1; 139.175.10.20; }; # 如果域名服務器無法解析時,將請求交由168.95.1.1; 139.175.10.20來解析
        allow-query    { any; };   #指定允許進行查詢的主機,當然是要所有的電腦都可以查啦
        allow-transfer { none; }; #指定允許接受區域傳送請求的主機,說明白一點就是輔dns定義,比如輔dns的ip是192.168.139.5,那麼可以這樣定義{ 192.168.139.5; },要不然主輔dns不能同步,當然,{}裏的也可以用下面提到的acl。
        // those options should be used carefully because they disable port
         // randomization
         // query-source    port 53;     
         // query-source-v6 port 53;
 };
 logging { #指定服務器日誌記錄的內容和日誌信息來源
        channel default_debug {
                 file "data/named.run";
                 severity dynamic;
         };
 };
#這裏定義一個acl列表
acl "acl1" {
         192.168.139.0/200; 192.168.1.0/200 
 };

 view localhost_resolver { #定義一個視圖
        match-clients      { any; }; #查詢者的源地址,any表示localhost_resolver視圖對任何主機開放,如果寫成{ acl1; },那麼就只有acl1表裏的ip可以遞歸查詢了
        match-destinations { any; }; #查詢者的目標地址,這裏也可以寫成{ localhost; acl1; }
        recursion yes;  3設置進行遞歸查詢
        include "/etc/named.rfc1912.zones"; #包含文件,這裏也就是載入/etc/named.rfc1912.zones
 };


bind客戶端工具:

[root@localhost ~]# rpm -ql bind-utils
/usr/bin/dig   #常用的DNS服務器測試工具
/usr/bin/host    #輕量級DNS測試工具
/usr/bin/nslookup  #DNS查詢工具,在衆多平臺都有使用
/usr/bin/nsupdate   #更新工具
/usr/share/man/man1/dig.1.gz #以上工具的man文檔
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz


host命令:  host -t  資源記錄類型 名稱

[root@localhost ~]# host -t A www.baidu.com   #baidu的A記錄
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 119.75.217.109
www.a.shifen.com has address 119.75.218.70

3.dig命令的使用:
 語法: dig -t 資源記錄類型(如NS  A )名稱@server-IP

 工作機制:  不加“@server-ip” 的話根據/etc/resolv.conf文件解析查詢

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
domain DHCP
search DHCP HOST
nameserver 124.207.160.106
nameserver 219.239.26.42
nameserver 144.144.144.144   #通過這些ip來查詢DNS


[root@localhost ~]# dig -t NS www.baidu.com  #查詢百度的NS記錄

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48075
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 # 表示權威應答

;; QUESTION SECTION:
;www.baidu.com.   IN NS 

;; ANSWER SECTION:
www.baidu.com.  506 IN CNAME www.a.shifen.com.  #別名爲a.shifen.com

;; AUTHORITY SECTION:
a.shifen.com.  523 IN SOA ns1.a.shifen.com. baidu_dns_master.baidu.com. 1509110003 5 5 86400 3600#起始授權

;; Query time: 6 msec
;; SERVER: 124.207.160.106#53(124.207.160.106)# 通過第一個ip:124.207.160.106查詢,ip按順序來查詢
;; WHEN: Wed Sep 16 23:17:02 2015
;; MSG SIZE  rcvd: 115

如果後邊加@server-ip則會跳過/etc/resole.conf配置文件,用指定DNS服務ip查詢


[root@localhost ~]# dig -t NS www.baidu.com @8.8.8.8

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS www.baidu.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9503
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com.   IN NS

;; ANSWER SECTION:
www.baidu.com.  291 IN CNAME www.a.shifen.com.

;; AUTHORITY SECTION:
a.shifen.com.  599 IN SOA ns1.a.shifen.com. baidu_dns_master.baidu.com. 1509110003 5 5 86400 3600

;; Query time: 154 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)   #指定的DNS查詢,ip 8.8.8.8
;; WHEN: Wed Sep 16 23:26:09 2015
;; MSG SIZE  rcvd: 115


查詢反向解析: dig -x server-ip

[root@localhost ~]# dig -x 8.8.8.8  #反向解析google的域名服務

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12388
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2#權威應答

;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa.  IN PTR

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 62709 IN PTR google-public-dns-a.google.com.#google公共dns

;; AUTHORITY SECTION:
8.8.8.in-addr.arpa. 692 IN NS ns3.google.com.  #google的反向解析
8.8.8.in-addr.arpa. 692 IN NS ns1.google.com.
8.8.8.in-addr.arpa. 692 IN NS ns4.google.com.
8.8.8.in-addr.arpa. 692 IN NS ns2.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.  292900 IN A 216.239.32.10  #google的A記錄
ns3.google.com.  263708 IN A 216.239.36.10

;; Query time: 19 msec
;; SERVER: 124.207.160.106#53(124.207.160.106)
;; WHEN: Wed Sep 16 23:30:39 2015
;; MSG SIZE  rcvd: 186


追蹤解析過程: dig -t 資源記錄類型  名稱 +trace

[root@localhost ~]# dig -t A www.baidu.com +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t A www.baidu.com +trace
;; global options: +cmd
.   247435 IN NS i.root-servers.net.
.   247435 IN NS m.root-servers.net.
.   247435 IN NS f.root-servers.net.
.   247435 IN NS k.root-servers.net.
.   247435 IN NS b.root-servers.net.
.   247435 IN NS c.root-servers.net.
.   247435 IN NS a.root-servers.net.
.   247435 IN NS e.root-servers.net.
.   247435 IN NS h.root-servers.net.
.   247435 IN NS j.root-servers.net.
.   247435 IN NS l.root-servers.net.
.   247435 IN NS g.root-servers.net.
.   247435 IN NS d.root-servers.net.    #首先找13臺根域
;; Received 496 bytes from 124.207.160.106#53(124.207.160.106) in 1193 ms

com.   172800 IN NS f.gtld-servers.net.
com.   172800 IN NS j.gtld-servers.net.
com.   172800 IN NS d.gtld-servers.net.
com.   172800 IN NS l.gtld-servers.net.
com.   172800 IN NS g.gtld-servers.net.
com.   172800 IN NS e.gtld-servers.net.
com.   172800 IN NS c.gtld-servers.net.
com.   172800 IN NS m.gtld-servers.net.
com.   172800 IN NS b.gtld-servers.net.
com.   172800 IN NS i.gtld-servers.net.
com.   172800 IN NS h.gtld-servers.net.
com.   172800 IN NS k.gtld-servers.net.
com.   172800 IN NS a.gtld-servers.net.   #然後找.com.一級域
;; Received 503 bytes from 192.5.5.241#53(192.5.5.241) in 115 ms

baidu.com.  172800 IN NS dns.baidu.com.
baidu.com.  172800 IN NS ns2.baidu.com.
baidu.com.  172800 IN NS ns3.baidu.com.
baidu.com.  172800 IN NS ns4.baidu.com.
baidu.com.  172800 IN NS ns7.baidu.com.  #再找baidu.com.二級域
;; Received 201 bytes from 192.42.93.30#53(192.42.93.30) in 252 ms

www.baidu.com.  1200 IN CNAME www.a.shifen.com.
a.shifen.com.  1200 IN NS ns4.a.shifen.com.
a.shifen.com.  1200 IN NS ns3.a.shifen.com.
a.shifen.com.  1200 IN NS ns1.a.shifen.com.
a.shifen.com.  1200 IN NS ns2.a.shifen.com.
a.shifen.com.  1200 IN NS ns5.a.shifen.com.  #接着找到www三級域及到達。www.baidu.com.
;; Received 228 bytes from 61.135.165.235#53(61.135.165.235) in 12 ms


DNS(bind)服務的具體配置:

 配置主要有:

  正向解析
  反向解析
  輔助解析
  主輔區域傳送


配置域主服務器

階段

1.在bind的主配置文件中添加該域

2.在/var/named中創建該域的zone文件

3.編輯zone文件添加需要的信息

4.測試是否有語法錯誤

5.設置區域文件的權限

6.檢測防火牆或selinux設置

7.啓動bind服務

8.使用host或nslookup命令   檢測域信息是否正常


首先在配置文件中添加域:vim /etc/named.conf

options {
        listen-on port 53 { any; }; #把127.0.0.1本地修改爲any;
        listen-on-v6 port 53 { ::1; };#ipv6不用,刪除此行
        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; };#localhost改爲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 "." IN {
        type hint;
        file "named.ca";
};

zone "hong.com" IN {  #添加正向解析域
        type master;
        file "hong.com.zone";
};

zone "0.168.192.in-addr.arpa" IN {   #添加反向解析域
        type master;
        file "0.168.192.zone";

};


include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


接下來配置正向區域文件: 
 目錄位於; /var/named/

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp named.localhost hong.com.zone  #拷貝本地模板編輯到正向區域文件
[root@localhost named]# vim hong.com.zone   #vim編輯正向區域文件


$TTL 86400  #緩存時間
@       IN  SOA          ns.hong.com. admin.hong.com. (  #DNS服務器名
                                        0       ; serial  #序列號
                                        1D      ; refresh  #服務器更新時間
                                        1H      ; retry  #重新更新時間間隔
                                        1W      ; expire #多久之後提示失敗
                                        3H )    ; minimum  #緩存記憶時間
@       IN      NS      ns.hong.com.   
@       IN      MX  10  mail.hong.com.  #10爲優先級,必須指定
ns      IN      A       192.168.0.107
mail    IN      A       192.168.0.107
www     IN      A       192.168.0.107
ftp     IN      CNAME   mail

編輯反向區域文件:

[root@localhost named]# cp named.localhost 0.168.192.zone
[root@localhost named]# vim 0.168.192.zone

$TTL 86400
@       IN SOA  ns.hong.com. admin.hong.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        
@       IN      NS      ns.hong.com.
107     IN      NS      ns.hong.com.
107     IN      PTR     mail.hong.com.
107     IN      PTR     www.hong.com. #反向區域不需要指定CNAME記錄


配置好正向,反向區域文件後,我們檢查一下是否有語法錯誤:

 named-checkconf
 named-checkzone "反向區域名"  /PATH/TO/反向區域名稱

[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "0.168.192.zone" /var/named/0.168.192.zone 
zone 0.168.192.zone/IN: 107.0.168.192.zone/NS 'ns.hong.com' (out of zone) has no addresses records (A or AAAA)
zone 0.168.192.zone/IN: loaded serial 0
OK


顯示OK說明配置語法沒有問題,這個OK很重要啊。。我的心都跟着跳啊。。。

接下來我們設置區域文件的權限:

 文件屬主: root
 文件屬組:  named
 權限爲: 640

[root@localhost named]# chown root:named /var/named/hong.com.zone 
[root@localhost named]# chown root:named /var/named/0.168.192.zone 
[root@localhost named]# chmod 640 /var/named/hong.com.zone
[root@localhost named]# chmod 640 /var/named/0.168.192.zone 
[root@localhost named]# ll hong.com.zone 0.168.192.zone 
-rw-r-----. 1 root named 236 9月  17 00:50 0.168.192.zone 
-rw-r-----. 1 root named 282 9月  17 00:40 hong.com.zone

配置防火牆(iptables)和selinux設置:

 可用命令:getenforce  #查詢selinux狀態
   setenforce 0  #設置selinux

[root@localhost named]# getenforce 
Enforcing #強制
[root@localhost named]# setenforce 0
[root@localhost named]# getenforce
Permissive  #現在表示selinux不起作用

設置防火牆: /etc/sysconfig/iptables
 添加三條記錄把53和953端口放開

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-AINPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT  #添加記錄通過53和952端口
-AINPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-AINPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重啓防火牆: service iptables restart 即可


啓動bind服務:

 service named start

配置host 文件:
 /etc/resolv.conf  添加服務器ip地址

# Generated by NetworkManager
domain DHCP
search DHCP HOST
nameserver 124.207.160.106
nameserver 219.239.26.42
nameserver 144.144.144.144
nameserver 192.168.0.107
  
至此搭建成功,測試一下

我們使用本地windows系統測試一下

C:\Users\f>nslookup
默認服務器:  bjdns.drpeng.com.cn
Address:  124.207.160.106

> server 192.168.0.108
默認服務器:  [192.168.0.108]
Address:  192.168.0.108

> set q=PTR  
> 192.168.0.108
服務器:  [192.168.0.108]
Address:  192.168.0.108

108.0.168.192.in-addr.arpa      name = mail.hong.com  #反向解析成功
108.0.168.192.in-addr.arpa      name = ns.hong.com
108.0.168.192.in-addr.arpa      name = www.hong.com
0.168.192.in-addr.arpa  nameserver = ns.hong.com
ns.hong.com     internet address = 192.168.0.108
>#解析成功


> server 192.168.0.108
默認服務器:  [192.168.0.108]
Address:  192.168.0.108

> set q=A
> www.hong.com
服務器:  [192.168.0.108]
Address:  192.168.0.108

> set q=NS #查詢NS記錄
> hong.com
服務器:  [192.168.0.108]
Address:  192.168.0.108

hong.com        nameserver = ns.hong.com
ns.hong.com     internet address = 192.168.0.108
>
> set q=CNAME  #別名記錄
> ftp.hong.com
服務器:  [192.168.0.108]
Address:  192.168.0.108

ftp.hong.com    canonical name = mail.hong.com
hong.com        nameserver = ns.hong.com
ns.hong.com     internet address = 192.168.0.108
>

測試沒有問題,即可正向解析又可以反向解析。。


rndc的使用:
 
 rndc(Remote Name Domain Controller)遠程名稱域控制器

 rndc 通過一個 TCP 連接與名字服務器通信,發送經過數字簽名認證的命令。在當前版本的rndc 和 named 中,唯一
支持的認證算法是 HMAC-MD5,在連接的兩端使用共享密鑰。它爲命令請求和名字服務器的響應提供 TSIG類型的認
證。所有經由通道發送的命令都必須被一個服務器所知道的 key_id 簽名。

 監聽端口:tcp:953

 語法:

  rndc [-b address] [-c config] [-s server] [-p port][-k key-file ] [-y key] [-V] command

 command is one of the following:
   reload   Reload configuration file and zones. #重新加載配置文件和區域文件
   reconfig  Reload configuration file and new zones only. #重新加載配置文件和新的區域文件
   freeze   Suspend updates to all dynamic zones.
   stats   Write server statistics to the statistics file. #將服務器統計信息寫入統計文件中
   stop   Save pending updates to master files and stop the server.
   halt   Stop the server without saving pending updates.
   flush   Flushes all of the server's caches. #清空DNS緩存
   status   Display status of the server. #顯示bind服務器的工作狀態


 rndc的調試和日誌:

  調試:顯示程序運行中的詳細信息(會產生I/O,正常情況下建議關閉)
  調試級別:0,1,2,3...
  提升調試級別:
  rndc trace
  rndc trace LEVEL
  rndc notrace
  打開查詢日誌:記錄查詢動作(會增加磁盤I/O)
  ndc querylog

[root@localhost named]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4
CPUs found: 1
worker threads: 1
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

輔助DNS配置:

 新建一個虛擬機,這裏還是用CentOS6.6作爲輔助DNS


 1. 同樣在輔助DNS服務器安裝bind服務並做相應的配置: 編輯/etc/named.rfc1912.zones,添加以下記錄:


zone "hong.com" IN {
        type slave;
        file "slaves/hong.com.zone";
        masters{ 192.168.0.108; };
};

zone "0.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/0.168.192.zone";
        masters{ 192.168.0.108; };

};


檢測一下語法是否有錯:

[root@localhost slaves]# named-checkconf #沒有提示信息說明沒有錯誤



2. 編輯主DNS服務器所在的ns1主機上的區域文件/var/named/hong.com.zone 和/var/named/0.168.192.zone中添加相應記錄:

正向區域:
$TTL 86400
@       IN  SOA          ns1.hong.com. admin.hong.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      ns1
@       IN      NS      ns2 #添加NS記錄
@       IN      MX  10  mail
ns1     IN      A       192.168.0.108
ns2     IN      A       192.168.0.106 #添加ns2的A記錄
mail    IN      A       192.168.0.108
www     IN      A       192.168.0.108
www     IN      A       192.168.0.106
ftp     IN      CNAME   www

反向區域:

$TTL 86400
@       IN SOA  ns1.hong.com. admin.hong.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

@       IN      NS      ns1.hong.com.
@       IN      NS      ns2.hong.com.#添加NS記錄
108     IN      PTR     ns1.hong.com.
106     IN      PTR     ns2.hong.com.#添加ns2PTR記錄
108     IN      PTR     www.hong.com.
106     IN      PTR     www.hong.com.#www記錄
108     IN      PTR     mail.hong.com.

添加完記錄同樣檢測一下語法:

[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "hong.com.zone" /var/named/hong.com.zone 
zone hong.com.zone/IN: loaded serial 0
OK
[root@localhost named]# named-checkzone "0.168.192.zone" /var/named/0.168.192.zone 
zone 0.168.192.zone/IN: loaded serial 0
OK
[root@localhost named]#

沒有問題,在主DNS上測試一下是否有記錄

[root@localhost named]# dig -t NS hong.com @192.168.0.108

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS hong.com @192.168.0.108
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24224
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;hong.com.   IN NS

;; ANSWER SECTION:
hong.com.  86400 IN NS ns1.hong.com.
hong.com.  86400 IN NS ns2.hong.com. #已經有ns2記錄

;; ADDITIONAL SECTION:
ns1.hong.com.  86400 IN A 192.168.0.108 #A記錄也已經存在
ns2.hong.com.  86400 IN A 192.168.0.106

;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Thu Sep 17 06:34:08 2015
;; MSG SIZE  rcvd: 94

反向解析:

[root@localhost named]# dig -x 192.168.0.108 @192.168.0.108

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 192.168.0.108 @192.168.0.108
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15453
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;108.0.168.192.in-addr.arpa. IN PTR

;; ANSWER SECTION:
108.0.168.192.in-addr.arpa. 86400 IN PTR ns1.hong.com.
108.0.168.192.in-addr.arpa. 86400 IN PTR www.hong.com.
108.0.168.192.in-addr.arpa. 86400 IN PTR mail.hong.com.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 86400 IN NS ns2.hong.com.#輔助ns2已經存在
0.168.192.in-addr.arpa. 86400 IN NS ns1.hong.com.

;; ADDITIONAL SECTION:
ns1.hong.com.  86400 IN A 192.168.0.108
ns2.hong.com.  86400 IN A 192.168.0.106  #對應的A記錄
;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Thu Sep 17 06:36:23 2015
;; MSG SIZE  rcvd: 171


輔助DNS上查看一下是否同步


[root@localhost slaves]# dig -t axfr hong.com @192.168.0.108

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr hong.com @192.168.0.108
;; global options: +cmd
hong.com.  86400 IN SOA ns1.hong.com. admin.hong.com. 0 86400 3600 604800 10800
hong.com.  86400 IN NS ns1.hong.com.
hong.com.  86400 IN NS ns2.hong.com.
hong.com.  86400 IN MX 10 mail.hong.com.
ftp.hong.com.  86400 IN CNAME www.hong.com.
mail.hong.com.  86400 IN A 192.168.0.108
ns1.hong.com.  86400 IN A 192.168.0.108
ns2.hong.com.  86400 IN A 192.168.0.106    #可以看到都已經同步過來
www.hong.com.  86400 IN A 192.168.0.108
www.hong.com.  86400 IN A 192.168.0.106
hong.com.  86400 IN SOA ns1.hong.com. admin.hong.com. 0 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Wed Sep 16 18:42:44 2015
;; XFR size: 11 records (messages 1, bytes 263)


我們可以查看到輔助DNS服務器上是否有區域文件

[root@localhost slaves]# ls
0.168.192.zone  hong.com.zone  #正向反向區域文件已經存在

進入區域文件:

$ORIGIN .
$TTL 86400      ; 1 day
hong.com                IN SOA  ns1.hong.com. admin.hong.com. (
                                0          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      ns1.hong.com.
                        NS      ns2.hong.com.
                        MX      10 mail.hong.com.
$ORIGIN hong.com.  #ORIGIN意思爲每個資源記錄末尾自動附加所定義的內容
ftp                     CNAME   www
mail                    A       192.168.0.108
ns1                     A       192.168.0.108
ns2                     A       192.168.0.106
www                     A       192.168.0.108
                        A       192.168.0.106
#輔助DNS裏的區域文件是不能手動修改的。。由主DNS服務器同步而來。。


到此我們的服務配置完成。。。


DNS服務器的基本配置就這麼多哈,下面來簡單總結下:

1、每個DNS服務器必須要有一個對應的NS資源記錄;

2、創建slave的時候,其配置文件類型必須是type slve; 必須指定主服務器的 IP地址 ;

3、可以使用dig -t axfr test.com @server_IP 從主DNS服務器拉取所有解析庫資源記錄;

4、主輔同步完成後,將自動在slave服務器上的slaves/目錄下生成zone文件,這些區域文件是從主DNS同步過來的,一般爲只讀,不建議更改slave的zone文件;

5、在主DNS上修改區域文件時,必須將SOA記錄的serial加1 因爲slave是通過serial值來進行判斷更新的(windows系統上是自動完成的);

6、DNS的日誌默認全部保存在/var/log/messege 文件中;

7、DNS的解析依賴於解析庫,所以就算是所配置的內容是完全不存在的也可以解析(且正向解析和反向解析的解析庫是各自獨立的)。需要注意,正向解析裏沒有PTR記錄,而反向解析庫裏不需要A記錄、MX記錄和CNAME記錄



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