在CentOS/RedHat中使用bind搭建主域名服务器,记录一下。
1,安装必要软件
yum install bind bind-utils bind-chroot caching-nameserver -y
其中,bind是主程序,bind-utils提供测试工具(如nslookup等),bind-chroot提供伪装目录增强安全性,caching-nameserver是作为缓存域名服务器的。
安装完成以后,bind在系统中的服务名为named,可以通过以下方式来启动服务:
service named start
或者 /etc/init.d/named start
2,配置
因为安装了bind-chroot,故named的主配置文件位于/var/named/chroot/etc/,但目前没有配置文件,需要手动创建一个
[root@localhost etc]# cd /var/named/chroot/etc/ //进入配置目录
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
//手动创建配置文件,参数p表示复制过来以后属主不会变化
[root@localhost etc]# vi named.conf //编辑named.conf文件
去掉注释,去掉ipv6,甚至可以去掉日志那一段,把127.0.0.1/localhost均改为any,然后添加域名记录,指定区域数据库文件(包含了正向解析和反向解析的数据库),最后的named.conf内容如下:
options {
listen-on port 53 { any; };
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; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "baidu.com" IN {
type master;
file "baidu.com.zone";
allow-update { none;};
};
zone "8.8.8.in-addr.arpa" IN {
type master;
file "8.8.8.arpa";
allow-update { none;};
};
编辑完成以后,可以用下面的命令测试语法正确与否:
[root@localhost etc]# named-checkconf named.conf
[root@localhost etc]# //没有任何返回值表明测试成功
3,编辑区域数据库文件
域名的区域数据库文件不在named.conf目录,而是位于/var/named/chroot/var/named/目录下
区域数据库文件有两个,根据第2步named.conf中的配置,一个是提供正向解析的baidu.com.zone文件,一个是反向解析的8.8.8.arpa文件。
首先是正向解析文件。如果你不知道文件的写法,也不用着急,named提供了一个样例。
[root@localhost named]# cd /var/named/chroot/var/named/ //进入目录
[root@localhost named]# cp -p localdomain.zone baidu.com.zone
//从样例复制一个正向解析文件
[root@localhost named]# vi baidu.com.zone //编辑正向解析文件
我们可以试着为baidu.com添加几个二级域名,形成如下所示的格式:
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost
www IN A 8.8.8.10
ftp IN A 8.8.8.20
mail IN A 8.8.8.30
编辑完成以后,可以用如下named-checkzone命令检验语法的正确性:
[root@localhost named]# named-checkzone baidu.com baidu.com.zone
zone baidu.com/IN: loaded serial 42
OK
然后是反向解析文件,named同样提供了一个反向解析的样例:
[root@localhost named]# cp -p named.zero 8.8.8.arpa
[root@localhost named]# vi 8.8.8.arpa
向其中填写IP与域名的对应关系,注意每一个域名最后都有一个点,最终的反向解析文件内容:
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
10 IN PTR www.baidu.com.
20 IN PTR ftp.baidu.com.
30 IN PTR mail.baidu.com.
编辑完成同样可以用如下命令测试语法是否正确:
[root@localhost named]# named-checkzone baidu.com 8.8.8.arpa
zone baidu.com/IN: loaded serial 1997022700
OK
4,测试
经过前3步的设置,主域名服务器已搭建完成,接下来我们来测试一下
[root@localhost named]# service named restart //重启服务
[root@localhost named]# vi /etc/resolv.conf //把本机DNS设置为本机IP
[root@localhost named]# nslookup www.baidu.com //测试正向解析
Server: 172.16.104.21
Address: 172.16.104.21#53
Name: www.baidu.com
Address: 8.8.8.10
[root@localhost named]# nslookup 8.8.8.20 //测试反向解析
Server: 172.16.104.21
Address: 172.16.104.21#53
20.8.8.8.in-addr.arpa name = ftp.baidu.com.
至此,主域名服务器已经搭建成功。