1.域名服务器 (named)
2.DNS解析库函数
3.DNS服务器运行调试所用的工具
是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。不论你的邮件服务器,WEB服务器或者其他的services如何的安全可靠,DNS的故障会给你带来用户根本无法访问这些服务。
官网:https://www.isc.org/downloads/BIND/
bind项目包含:
1.bind是linux的DNS服务器程序。
2.bind-chroot是bind的一个功能,使bind可以在一个chroot的模式下运行。也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性。因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。
3.bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具。主要:dig,host,nslookup,nsupdate。使用这些工具可以进行域名解析和DNS调试工作。
4.caching-nameserver提供构建缓存域名服务器的基本配置文件,这些文件在构建主从域名时可以作为参考。
一、安装
yum -y install gcc-c++ openssl openssl-devel
wget ftp://ftp.isc.org/isc/bind9/9.9.7/bind-9.9.7.tar.gz
mkdir bind9.9.7
tar -zxvf bind-9.9.7.tar.gz
cd bind-9.9.7
./configure --enable-largefile --enable-threads --disable-openssl-version-check --prefix=/home/slim/bind9.9.7 --with-libtool
make
make install
为了方便升级,建立软连接
ln -s /home/slim/bind9.9.7/ ./bind
查看安装版本:
./bind/sbin/named -v
对于.configure参数的说明:
--prefix=/usr/local/bind 指定bind9的安装目录,默认是/usr/local
--enable-threads 开启多线程的支持;如果你的系统有多个CPU,那么可以使用这个选项
--disable-openssl-version-check 关闭openssl的检查
--with-openssl=/usr/local/openssl 指定openssl的安装路径
--sysconfdir=/etc 设置named.conf配置文件放置的目录,默认是--prefix选项指定的目录下的/etc下
--localstatdir=/var 设置 run/named.pid 放置的目录,默认是--prefix选项指定的目录下的/var下
--with-libtool 将BIND的库文件编译为动态共享库文件,这个选项默认是未选择的。
如果不选这个选项,那么编译后的named命令会比较大,lib目录中的库文件都是.a后缀的
如果选上这个选项,那么编译后的named命令会很小,lib目录中的库文件则是.so后缀
二、配置
mkdir -p chroot/{etc,var,dev}
mkdir -p chroot/var/{named,run}
mkdir -p chroot/var/named/{zone,data,log,dynamic}
touch chroot/dev/random
cd chroot/etc
1.生成rndc控制命令的key文件
bind9 规定,如果要使用rndc 来控制dns 。必须先生成验证文件rndc.conf和密锁
/home/slim/bind/sbin/rndc-confgen > /home/slim/chroot/etc/rndc.conf
2.生成named.conf
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
修改配置named.conf:
key "rndc-key" {
algorithm hmac-md5;
secret "WTHTSrZYMNFPjOGjMUHQUQ==";
};
controls {
inet 127.0.0.1 port 6953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options{
listen-on port 6053{
192.168.13.102;
};
version "vdns3.0";
directory "/home/slim/chroot/var/named";
pid-file "/home/slim/chroot/var/run/named.pid";
session-keyfile "/home/slim/chroot/var/run/session.key";
dump-file "/home/slim/chroot/var/named/data/cache_dump.db";
statistics-file "/home/slim/chroot/var/named/data/named_stats.txt";
memstatistics-file "/home/slim/chroot/var/named/data/named_mem_stats.txt";
allow-query{
any;
};
allow-query-cache{
any;
};
allow-transfer{
none;
};
/* Path to ISC DLV key */
bindkeys-file "/home/slim/chroot/etc/named.iscdlv.key";
managed-keys-directory "/home/slim/chroot/var/named/dynamic";
};
logging {
channel default_debug {
file "/home/slim/chroot/var/named/data/named.run";
severity dynamic;
};
channel queries_info {
file "/home/slim/chroot/var/named/log/query.log" versions 1 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category queries {
queries_info;
default_debug;
};
channel notify_info {
file "/home/slim/chroot/var/named/log/notify.log" versions 8 size 128m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category notify {
notify_info;
default_debug;
};
};
zone "." in{
type hint;
file "named.root";
};
zone "localhost" in{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" in{
type master;
file "localhost.rev";
allow-update { none; };
};
zone "test.com" IN {
type master;
file "zone/test.com.zone";
};
3.下载named.root配置文件
cd chroot/var/named
4.创建localhost.zone文件
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
4.创建文件localhost.rev
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
cd zone
5.创建test.com.zone
$TTL 86400
@ IN SOA test.com. admin.test.com. (
57 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dns.test.com.
IN MX 5 mail
dns IN A 192.168.13.102
mail IN A 192.168.13.102
www IN A 192.168.100.90
注意:bind的配置文档是区分大小写的。检查配置:
检测主配置文件内容
./bind/sbin/named-checkconf ./chroot/etc/named.conf
测试正向区域文件
./bind/sbin/named-checkzone localhost. chroot/var/named/localhost.zone
测试反向区域文件
./bind/sbin/named-checkzone 127.0.0.1 chroot/var/named/localhost.rev
./bind/sbin/named-checkzone test.com. chroot/var/named/zone/test.com.zone
三、启动
/home/slim/bind/sbin/named -gc /home/slim/chroot/etc/named.conf &
此处启动了调试,有问题会打印出出错信息。当调试正常后启动需要去掉g这个参数。
查看dns服务是否启动,端口是否激活:
netstat -an | grep :6053
查看运行状态:
/home/slim/bind/sbin/rndc -c /home/slim/chroot/etc/rndc.conf -s 127.0.0.1 -p 6953 status
version: 9.9.7 (vdns3.0) <id:e87fa9ae>
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 101
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
四、测试
dig @192.168.13.102 -p 6053 www.test.com
14-Apr-2015 08:13:19.615 client 192.168.36.54#45767 (www.test.com): query: www.test.com IN A + (192.168.36.54)
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @192.168.36.54 -p 6053 www.test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14708
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.test.com. IN A
;; ANSWER SECTION:
www.test.com. 86400 IN A 192.168.100.90
;; AUTHORITY SECTION:
test.com. 86400 IN NS dns.test.com.
;; ADDITIONAL SECTION:
dns.test.com. 86400 IN A 192.168.13.102
;; Query time: 2 msec
;; SERVER: 192.168.36.54#6053(192.168.36.54)
;; WHEN: Tue Apr 14 08:13:19 2015
;; MSG SIZE rcvd: 80
参考文章:
BIND配置文件详解