DNS服务器bind安装与配置

系统版本:centos5.8

内核版本:64位


实验环境:



服务器名称 IP地址
主DNS 192.168.1.107
辅助DNS 192.168.1.108
web1 10.0.0.21(VIP:192.168.1.201)
web2 10.0.0.22(VIP:192.168.1.202)
web3 10.0.0.23(VIP:192.168.1.203)

注意:这里192.168.1.0/24模拟的是外网IP段;10.0.0.0/24模拟的是内网段!


一、bind的安装:

1)在centos5.8操作系统中用yum进行安装

注意:要事先配置好在线yum源


安装部署:

[root@dns-M ~]# yum -y install bind bind-chroot ypbind bind-utils 

[root@dns-M ~]# rpm -qa |grep bind

bind-chroot-9.3.6-25.P1.el5_11.4

bind-libs-9.3.6-25.P1.el5_11.4

bind-9.3.6-25.P1.el5_11.4

ypbind-1.19-12.el5_6.1

bind-utils-9.3.6-25.P1.el5_11.4

[root@dns-M ~]# yum -y install caching-nameserver


2)了解配置文件的位置

[root@dns-M ~]# /etc/init.d/named start

Starting named:                                            [  OK  ]

[root@dns-M ~]# ps -ef |grep named

named     3731     1  0 17:52 ?        00:00:00 /usr/sbin/named -u named -c /etc/named.caching-nameserver.conf -t /var/named/chroot

root      3740  3577  0 17:52 pts/2    00:00:00 grep named

[root@dns-M ~]# netstat -tunlp|grep named

tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      3731/named          

tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      3731/named          

tcp        0      0 ::1:53                      :::*                        LISTEN      3731/named          

tcp        0      0 ::1:953                     :::*                        LISTEN      3731/named          

udp        0      0 127.0.0.1:53                0.0.0.0:*                               3731/named          

udp        0      0 ::1:53                      :::*                                    3731/named          

[root@dns-M ~]# ll /etc/named*

lrwxrwxrwx 1 root named 51 Oct 11 17:50 /etc/named.caching-nameserver.conf -> /var/named/chroot/etc/named.caching-nameserver.conf

lrwxrwxrwx 1 root named 41 Oct 11 17:50 /etc/named.rfc1912.zones -> /var/named/chroot/etc/named.rfc1912.zones

[root@dns-M ~]# ll /var/named/chroot/etc/

total 16

-rw-r--r-- 1 root root   405 Sep 30 10:41 localtime

-rw-r----- 1 root named 1230 Sep  3 11:26 named.caching-nameserver.conf

-rw-r----- 1 root named  955 Sep  3 11:26 named.rfc1912.zones

-rw-r----- 1 root named  113 Oct 11 17:46 rndc.key


二、bind常规服务器配置(一个较简单的DNS服务器设置流程主要分为以下三步)

1)建立主配置文件named.conf,该文件的最主要目的是设置DNS服务器能够管理哪些区域(zone)以及这些区域所对应的区域文件名和存放路径。

2)建立区域文件,按named.conf中指定的路径建立区域文件,该文件主要记录该区域的资源记录。

3)重新加载配置文件或重新启动named服务使配置生效。


工作过程:

(1)客户端需要获得http://www.pp.org这台主机所对应的IP地址,将查询请求发送给DNS服务器。

(2)服务器接收到请求后,查询主配置文件named.conf,检查是否能够管理pp.org区域,而named.conf中记录着能够解析pp.org区域,并提供pp.org区域文件所在路径及文件名。

(3)服务器则根据named.conf文件中提供的路径和文件名找到pp.org区域所对应的配置文件,并从中找到http://www.pp.org主机对应的IP地址。

(4)将查询结果反馈给客户端,完成整个查询过程。


1)主配置文件named.conf

   named.conf是bind的核心文件,它包含了bind的基本配置,但并不包含区域数据。named.conf文件定义了DNS服务器的工作目录所在位置,所有的区域数据文件都存放在该目录下,该文件还定义了DNS服务器能够管理哪些区域,如果DNS服务器可以管理某个区域,它将完成该区域的域名解析工作。

   如果没有安装caching-nameserver*包,则我们需要手动建立named.conf文件,为了便于管理,通常把该文件建立在/etc目录下。


  创建主配置文件named.conf文件,修改主配置文件,添加根区域、域名的正向区域和反向区域:

[root@dns-M ~]# cd /var/named/chroot/etc/

[root@dns-M etc]# cp -p named.caching-nameserver.conf named.conf

[root@dns-M etc]# cat named.conf 

//

// named.caching-nameserver.conf

//

// Provided by Red Hat caching-nameserver package to configure the

// ISC BIND named(8) DNS server as a caching only nameserver 

// (as a localhost DNS resolver only). 

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

// DO NOT EDIT THIS FILE - use system-config-bind or an editor

// to create named.conf - edits to this file will be lost on 

// caching-nameserver package upgrade.

//

options {

        listen-on port 53 { any; };                          ---->端口53,全部接收

        listen-on-v6 port 53 { ::1; };

        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";


        // Those options should be used carefully because they disable port

        // randomization

        // query-source    port 53;

        // query-source-v6 port 53;


        allow-query     { any; };

        allow-query-cache { any; };

};

logging {                                    ---->日志记录

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

view localhost_resolver {                   ---->定义域名空间的一个视图

        match-clients      { any; };

        match-destinations { any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";  ---->包含其他文件到配置文件

};


2)区域文件存放位置,以包含的方式建立

[root@dns-M etc]# cp -p named.rfc1912.zones  named.rfc1912.zones.bak

[root@dns-M etc]# tail -11  named.rfc1912.zones 

zone "pp.org" IN {

        type master;

        file "pp.org.zone";

        allow-update { none; };

};

zone "1.168.192.in-addr.arpa" IN {

        type master;

        file "pp.org.local";

        allow-update { none; };

};


3)配置正向和反向解析区域

授权DNS服务器管理pp.org区域,并把该区域的区域文件命名为pp.org.zone

[root@dns-M etc]# cd /var/named/chroot/var/named/

[root@dns-M named]# cp -p localhost.zone   pp.org.zone   --->正向解析文件

[root@dns-M named]# cp -p named.local   pp.org.local     --->反向解析文件

(1)创建正向解析区域文件资源记录

[root@dns-M named]# cat pp.org.zone

$TTL    86400

@               IN SOA  dns.pp.org.       root.pp.org. (

                                        201             ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum


                IN NS           dns.pp.org.

                IN MX  10       mail.pp.org.

dns.pp.org.     IN  A           192.168.1.107

www1            IN A            192.168.1.201

www2            IN A            192.168.1.202

www3            IN A            192.168.1.203

(2)创建反向解析区域文件资源记录

[root@dns-M named]# cat pp.org.local 

$TTL    86400

@       IN      SOA    dns.pp.org. root.pp.org.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

          IN       NS      dns.pp.org.

201       IN      PTR     www1.pp.org.

202       IN      PTR     www2.pp.org.

203       IN      PTR     www3.pp.org.


(3)把配置文件做软链接:

[root@dns-M named]# ln -s /var/named/chroot/etc/named.conf  /etc/named.conf

(4)启动服务并查看日志信息:

[root@dns-M named]# service named restart

Stopping named:                                            [  OK  ]

Starting named:                                            [  OK  ]

[root@dns-M named]# tail -f /var/log/messages 

Oct 11 22:04:36 localhost named[3466]: command channel listening on ::1#953

Oct 11 22:04:36 localhost named[3466]: zone 0.in-addr.arpa/IN/localhost_resolver: loaded serial 42

Oct 11 22:04:36 localhost named[3466]: zone 0.0.127.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700

Oct 11 22:04:36 localhost named[3466]: zone 1.168.192.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700

Oct 11 22:04:36 localhost named[3466]: zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial 42

Oct 11 22:04:36 localhost named[3466]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700

Oct 11 22:04:36 localhost named[3466]: zone localdomain/IN/localhost_resolver: loaded serial 42

Oct 11 22:04:36 localhost named[3466]: zone localhost/IN/localhost_resolver: loaded serial 42

Oct 11 22:04:36 localhost named[3466]: zone pp.org/IN/localhost_resolver: loaded serial 201

Oct 11 22:04:36 localhost named[3466]: running


(5)测试DNS服务器

Linux自身做客户端测试,配置DNS解析文件:

[root@dns-M named]# cat /etc/resolv.conf

; generated by /sbin/dhclient-script

nameserver 192.168.1.107


开始用nslookup测试:

[root@dns-M ~]# nslookup 

> www1.pp.org

Server:         192.168.1.107

Address:        192.168.1.107#53


Name:   www1.pp.org

Address: 192.168.1.12

> 192.168.1.13

Server:         192.168.1.107

Address:        192.168.1.107#53


13.1.168.192.in-addr.arpa       name = www2.pp.org.

> 192.168.1.150

Server:         192.168.1.107

Address:        192.168.1.107#53


150.1.168.192.in-addr.arpa      name = www3.pp.org.


(6)使用rndc管理named服务

  rndc是bind安装包提供的一种控制域名服务运行的工具,它可以运行在其他计算机上,通过网络与DNS服务器进行连接,然后根据管理员的指令对named进程进行远程控制,此时,管理员不需要DNS服务器的根用户权限。

rndc.conf----------------->rndc key-------------->named.conf(启动端口:53与953)

  

  使用rndc可以在不停止DNS服务器工作的情况下进行数据的更新,使修改后的配置文件生效,在实际情况下,DNS服务器是非常繁忙的,任何短时间的停顿都会给用户的使用带来影响,因此,使用rndc工具可以使dns服务器更好地为用户提供服务。

  rndc与DNS服务器实时连接时,需要通过数字证书进行认证,而不是传统的用户名/密码方式。在当前版本下,rndc和named都只支持HMAC-MD5认证算法,在通信两端使用共享密钥。rndc在连接通道中发送命令时,必须使用经过服务器认可的密钥加密。为了生成双方都认可的密钥,可以使用rndc-confgen命令产生密钥和相应的配置,再把这些配置分别放入named.conf和rndc的配置文件rndc.conf中。


a.执行rndc-confgen命令,得到密钥和相应的配置

#rndc-confgen


b.在/etc目录下创建rndc.conf文件,根据提示输入上述输出中不带注释的内容

[root@dns-M etc]# rndc-confgen  >/etc/rndc.conf

[root@dns-M etc]# cat /etc/rndc.conf 

# Start of rndc.conf

key "rndckey" {

        algorithm hmac-md5;

        secret "/tOYcvjvRndwJlwk2m0yrQ==";

};


options {

        default-key "rndckey";

        default-server 127.0.0.1;

        default-port 953;

};

# End of rndc.conf


# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndckey" {

#       algorithm hmac-md5;

#       secret "/tOYcvjvRndwJlwk2m0yrQ==";

# };

# controls {

#       inet 127.0.0.1 port 953

#               allow { 127.0.0.1; } keys { "rndckey"; };

# };

# End of named.conf


c.根据提示,把后部分内容放入原有的/etc/named.conf文件最后面

[root@dns-M etc]# tail -11 /etc/named.conf

###############rndc conf######################

key "rndckey" {

      algorithm hmac-md5;

      secret "/tOYcvjvRndwJlwk2m0yrQ==";

};


controls {

      inet 127.0.0.1 port 953

              allow { 127.0.0.1; } keys { "rndckey"; };

};

############rndc conf end######################


d.重启named进程后,就可以使用rndc工具对named进行控制了

#service named restart

#rndc reload