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