在CentOS的VPS上安装DNS服务器
时间:2014-05-18 23:50 来源:linux.it.net.cn 作者:IT网
DNS是域名系统(Domain Name System)的缩写,它的作用是将主机名解析成IP(正向解析),从IP地址查询其主机名(反向解析)。
DNS的工作原理
(1)客户机发出查询请求
当被询问到有关本域中的主机名称的时候,DNS服务器会直接做出回答。如果所查询的主机名称属于其它域的话,则会检查缓存中有没有相关资料,如果没有发现则会转向root服务器查询,然后root服务器会将该域名的授权(authoritative)服务器(可能会超过一台)的地址告知本地服务器,然后会向其中的一台服务器查询,并将这些服务器名单存到缓存中以备将来之需(省去再向root查询的步骤)。
(2)远方服务器回应查询
将查询结果回应给客户,并同时将结果存储一个备份在自己的缓存里面,如果在存放时间尚未过时之前再接到相同的查询,则以存放于缓存里面的资料来做回应。
DNS服务器分类
1.主域名服务器(master)
主域名服务器是一个域或区域的管理权威。这个服务器的主要责任就是解析域或区域内的所有主机的名称。可以使用一个或多个辅域名服务器作为主域名服务器的备份。
2.辅域名服务器(slave)
辅域名服务器是备份服务器。它们不是域区源数据存放的地方,但它们也授权响应域名的查询。辅域名服务器通常从域的主域名服务器获得域区数据。辅服务器也被称为从属服务器。
3.唯高速缓存服务器(hint)
缓存服务器负责临时存储主域名服务器己解析过域名记录。
打算用两个vps,一个做主域名服务器,一个做辅助域名服务器。系统用的是CentOS5.6(32bit)。
Linux上常用的是bind,包括以下软件包:
bind bind-libs bind-utils bind-chroot caching-nameserver
bind是DNS服务器软件
bind-libs是bind使用的库
bind-utils是bind查询工具
caching-nameserver唯高速缓存服务器
一、安装DNS服务器
1.开始安装DNS服务器:
yum install bind bind-libs bind-utils bind-chroot
这里更新源上的版本是bind 9.3.6-16.P1.el5,DNS的配置文件放在/var/named/chroot目录下。
2.复制配置规范文件:
cp /usr/share/doc/bind-9.3.6/sample/etc/* /var/named/chroot/etc
cp -a /usr/share/doc/bind-9.3.6/sample/var/named/* /var/named/chroot/var/named
相关配置文件说明:
主配置文件:/var/named/chroot/etc/named.conf 设置一般的named参数,指向该服务器使用的域数据库的信息源。
根域名服务器指向文件:/var/named/chroot/var/named/named.root 指向根域名服务器,用于唯高速缓存服务器的初始配置。
正向解析文件:/var/named/chroot/var/named/localhost.zone localhost区文件,用于将名字localhost转换为本地回送IP地址(127.0.0.1),正向解析。
反向解析文件:/var/named/chroot/var/named/named.local localhost区文件,用于将本地回送IP地址(127.0.0.1)转换成名字localhost,反向解析。
3.尝试启动DNS服务器:
service named restart
显示:
Stopping named: [ OK ]
Starting named: [FAILED]
查看系统日志:
cat /var/log/messages |grep named
发现错误:
my named[1384]: /etc/named.conf:100 configuring key ‘ddns_key’: bad base64 encoding
是没有ddns_key造成的,执行/usr/sbin/dns-keygen来生成TSIG keys。然后替换named.conf中
secret “use /usr/sbin/dns-keygen to generate TSIG keys”;引号内的内容。
/usr/sbin/dns-keygen
5L6JQccNVZ53CHA3iW4VnPgDZXdcX3U3pnhL2txKUsaPqwBRddE58LpA7uiI
编辑/var/named/chroot/etc/named.conf文件,添加ddns_key:
vim /var/named/chroot/etc/named.conf
修改如下:
key ddns_key
{
algorithm hmac-md5;
secret “5L6JQccNVZ53CHA3iW4VnPgDZXdcX3U3pnhL2txKUsaPqwBRddE58LpA7uiI”;
};
添加好ddns_key后,重启named服务成功,但是DNS服务器还不能使用,需要进行其他配置。
4.我们看到在named.conf文件中有这样几个区块:
options //设置data相关文件,对data/目录要有写的权限
logging //debug log
view “localhost_resolver” //本地解析,caching only nameserver
view “internal” //限定同一个局域网的内部用户使用
key ddns_key //设置ddns key
view “external” //限制外部用户请求这个DNS服务器
5.首先设置/var/named/chroot/var/named/data目录的用户和组为named:named:
cd /var/named/chroot/var/named
chown named:named data
6.为/var/named/chroot/var/named目录添加写权限:
cd /var/named/chroot/var
chmod g+w named
如果这个目录没有写权限的话,named服务可以启动,但是系统日志里会有,”the working directory is not writable”错误。
7.修改name.conf中view “external”区域内设置:
vim /var/named/chroot/etc/named.conf
recursion yes; //打开递归
allow-query-cache { any; }; //允许查询缓存
8.再重启DNS服务器:
service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
启动成功。
此时查看日志:
tail -30 /var/log/messages |grep named
没有报错即可。
9.设置开机自启动:
chkconfig –level named 345 on
此时这个DNS服务器就可以使用了。
windows系统下修改网络连接里的DNS服务器地址用ping、nslookup命令测试。
linux系统修改/etc/resolv.conf里的nameserver地址,使用host、dig、nslookup命令测试。
二、配置区域主域名服务器
以test.com域为例子:
www.test.com 192.168.1.100 //web服务
ns.test.com 192.168.1.101 //域名服务
work.test.com 192.168.1.100
mail.test.com 192.168.1.103 //邮件服务
ftp.test.com 192.168.1.104 //文件服务
1.编辑/var/named/chroot/etc/named.rfc1912.zones文件:
vim /var/named/chroot/etc/named.rfc1912.zones
在最后添加正向解析区域test.com:
zone “test.com” IN {
type master;
file “test.com.zone”;
allow-update { none; };
};
然后添加反向解析区域1.168.192.in-addr.arpa:
zone “1.168.192.in-addr.arpa” IN {
type master;
file “test.com.resv”;
allow-update { none; };
};
2.创建正向解析数据文件/var/named/chroot/var/named/test.com.zone:
cd /var/named/chroot/var/named
cp localhost.zone test.com.zone
3.编辑test.com.zone文件:
vim test.com.zone
修改如下
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.test.com.
www IN A 192.168.1.100
ns IN A 192.168.1.101
work IN CNAME www
mail IN A 192.168.1.103
@ IN MX 10 mail.test.com.
ftp IN A 192.168.1.104
4.创建反向解析数据文件/var/named/chroot/var/named/test.com.resv:
cp named.local test.com.resv
5.编辑test.com.resv文件:
vim test.com.resv
修改如下
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.com.
100 IN PTR www.test.com.
101 IN PTR ns.test.com.
103 IN PTR mail.test.com.
104 IN PTR ftp.test.com.
6.编辑named.conf,将test.com区域加入到view “external”中:
vim /var/named/chroot/etc/named.conf
由于zone “test.com”是写在named.rfc1912.zones文件中的,在view “external”中添加:
include “/etc/named.rfc1912.zones”;
7.重启服务:
service named restart
此时客户端请求解析test.com域会直接使用设置的参数,不会向根去询问。
三、配置辅域名服务器
配置辅域名服务器相对来说简单不少,只要主配置文件中加入一个区域,然后指定可以更新信息的主域名服务器就可以了,无需配置区域数据库文件。
1.编辑/var/named/chroot/etc/named.rfc1912.zones文件:
vim /var/named/chroot/etc/named.rfc1912.zones
在最后添加正向解析区域test.com:
zone “test.com” IN {
type slave;
file “slaves/test.com.hosts”;
masters { 1.1.1.1; }; //这里填主DNS服务器IP
};
然后添加反向解析区域1.168.192.in-addr.arpa:
zone “1.168.192.in-addr.arpa” IN {
type slave;
file “slaves/test.com.resv”;
masters { 1.1.1.1; }; //这里填主DNS服务器IP
};
2.编辑named.conf,将named.rfc1912.zones文件加入到view “external”中:
vim /var/named/chroot/etc/named.conf
在view “external”中添加:
include “/etc/named.rfc1912.zones”;
3.设置/var/named/chroot/var/named/slaves目录用户和组为root:named:
cd /var/named/chroot/var/named
chown root:named slaves
为/var/named/chroot/var/named/slaves添加写权限:
chmod g+w slaves
named用户对slaves目录没有写权限会同步不了主域名服务器上的解析数据文件。
4.重启DNS服务:
service named restart
5.查看/var/named/chroot/var/named/slaves目录:
产生test.com.hosts test.com.resv文件,说明更新成功。
需要注意:
1)主从服务器中正/反向zone名称必须一致。
2)从服务器中file可指定相对路径,也可指定绝对路径。
3)需将辅助DNS服务器的首选DNS服务器指向为主DNS服务器。
(责任编辑:IT)
DNS是域名系统(Domain Name System)的缩写,它的作用是将主机名解析成IP(正向解析),从IP地址查询其主机名(反向解析)。 DNS的工作原理 (1)客户机发出查询请求 当被询问到有关本域中的主机名称的时候,DNS服务器会直接做出回答。如果所查询的主机名称属于其它域的话,则会检查缓存中有没有相关资料,如果没有发现则会转向root服务器查询,然后root服务器会将该域名的授权(authoritative)服务器(可能会超过一台)的地址告知本地服务器,然后会向其中的一台服务器查询,并将这些服务器名单存到缓存中以备将来之需(省去再向root查询的步骤)。 (2)远方服务器回应查询 将查询结果回应给客户,并同时将结果存储一个备份在自己的缓存里面,如果在存放时间尚未过时之前再接到相同的查询,则以存放于缓存里面的资料来做回应。 DNS服务器分类 1.主域名服务器(master) 主域名服务器是一个域或区域的管理权威。这个服务器的主要责任就是解析域或区域内的所有主机的名称。可以使用一个或多个辅域名服务器作为主域名服务器的备份。 2.辅域名服务器(slave) 辅域名服务器是备份服务器。它们不是域区源数据存放的地方,但它们也授权响应域名的查询。辅域名服务器通常从域的主域名服务器获得域区数据。辅服务器也被称为从属服务器。 3.唯高速缓存服务器(hint) 缓存服务器负责临时存储主域名服务器己解析过域名记录。 打算用两个vps,一个做主域名服务器,一个做辅助域名服务器。系统用的是CentOS5.6(32bit)。 Linux上常用的是bind,包括以下软件包: bind bind-libs bind-utils bind-chroot caching-nameserver bind是DNS服务器软件 bind-libs是bind使用的库 bind-utils是bind查询工具 caching-nameserver唯高速缓存服务器 一、安装DNS服务器 1.开始安装DNS服务器: yum install bind bind-libs bind-utils bind-chroot 这里更新源上的版本是bind 9.3.6-16.P1.el5,DNS的配置文件放在/var/named/chroot目录下。 2.复制配置规范文件: cp /usr/share/doc/bind-9.3.6/sample/etc/* /var/named/chroot/etc cp -a /usr/share/doc/bind-9.3.6/sample/var/named/* /var/named/chroot/var/named 相关配置文件说明: 主配置文件:/var/named/chroot/etc/named.conf 设置一般的named参数,指向该服务器使用的域数据库的信息源。 根域名服务器指向文件:/var/named/chroot/var/named/named.root 指向根域名服务器,用于唯高速缓存服务器的初始配置。 正向解析文件:/var/named/chroot/var/named/localhost.zone localhost区文件,用于将名字localhost转换为本地回送IP地址(127.0.0.1),正向解析。 反向解析文件:/var/named/chroot/var/named/named.local localhost区文件,用于将本地回送IP地址(127.0.0.1)转换成名字localhost,反向解析。 3.尝试启动DNS服务器: service named restart 显示: Stopping named: [ OK ] Starting named: [FAILED] 查看系统日志: cat /var/log/messages |grep named 发现错误: my named[1384]: /etc/named.conf:100 configuring key ‘ddns_key’: bad base64 encoding 是没有ddns_key造成的,执行/usr/sbin/dns-keygen来生成TSIG keys。然后替换named.conf中 secret “use /usr/sbin/dns-keygen to generate TSIG keys”;引号内的内容。 /usr/sbin/dns-keygen 5L6JQccNVZ53CHA3iW4VnPgDZXdcX3U3pnhL2txKUsaPqwBRddE58LpA7uiI 编辑/var/named/chroot/etc/named.conf文件,添加ddns_key: vim /var/named/chroot/etc/named.conf 修改如下: key ddns_key { algorithm hmac-md5; secret “5L6JQccNVZ53CHA3iW4VnPgDZXdcX3U3pnhL2txKUsaPqwBRddE58LpA7uiI”; }; 添加好ddns_key后,重启named服务成功,但是DNS服务器还不能使用,需要进行其他配置。 4.我们看到在named.conf文件中有这样几个区块: options //设置data相关文件,对data/目录要有写的权限 logging //debug log view “localhost_resolver” //本地解析,caching only nameserver view “internal” //限定同一个局域网的内部用户使用 key ddns_key //设置ddns key view “external” //限制外部用户请求这个DNS服务器 5.首先设置/var/named/chroot/var/named/data目录的用户和组为named:named: cd /var/named/chroot/var/named chown named:named data 6.为/var/named/chroot/var/named目录添加写权限: cd /var/named/chroot/var chmod g+w named 如果这个目录没有写权限的话,named服务可以启动,但是系统日志里会有,”the working directory is not writable”错误。 7.修改name.conf中view “external”区域内设置: vim /var/named/chroot/etc/named.conf recursion yes; //打开递归 allow-query-cache { any; }; //允许查询缓存 8.再重启DNS服务器: service named restart Stopping named: [ OK ] Starting named: [ OK ] 启动成功。 此时查看日志: tail -30 /var/log/messages |grep named 没有报错即可。 9.设置开机自启动: chkconfig –level named 345 on 此时这个DNS服务器就可以使用了。 windows系统下修改网络连接里的DNS服务器地址用ping、nslookup命令测试。 linux系统修改/etc/resolv.conf里的nameserver地址,使用host、dig、nslookup命令测试。 二、配置区域主域名服务器 以test.com域为例子: www.test.com 192.168.1.100 //web服务 ns.test.com 192.168.1.101 //域名服务 work.test.com 192.168.1.100 mail.test.com 192.168.1.103 //邮件服务 ftp.test.com 192.168.1.104 //文件服务 1.编辑/var/named/chroot/etc/named.rfc1912.zones文件: vim /var/named/chroot/etc/named.rfc1912.zones 在最后添加正向解析区域test.com: zone “test.com” IN { type master; file “test.com.zone”; allow-update { none; }; }; 然后添加反向解析区域1.168.192.in-addr.arpa: zone “1.168.192.in-addr.arpa” IN { type master; file “test.com.resv”; allow-update { none; }; }; 2.创建正向解析数据文件/var/named/chroot/var/named/test.com.zone: cd /var/named/chroot/var/named cp localhost.zone test.com.zone 3.编辑test.com.zone文件: vim test.com.zone 修改如下 $TTL 86400 @ IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.test.com. www IN A 192.168.1.100 ns IN A 192.168.1.101 work IN CNAME www mail IN A 192.168.1.103 @ IN MX 10 mail.test.com. ftp IN A 192.168.1.104 4.创建反向解析数据文件/var/named/chroot/var/named/test.com.resv: cp named.local test.com.resv 5.编辑test.com.resv文件: vim test.com.resv 修改如下 $TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.test.com. 100 IN PTR www.test.com. 101 IN PTR ns.test.com. 103 IN PTR mail.test.com. 104 IN PTR ftp.test.com. 6.编辑named.conf,将test.com区域加入到view “external”中: vim /var/named/chroot/etc/named.conf 由于zone “test.com”是写在named.rfc1912.zones文件中的,在view “external”中添加: include “/etc/named.rfc1912.zones”; 7.重启服务: service named restart 此时客户端请求解析test.com域会直接使用设置的参数,不会向根去询问。 三、配置辅域名服务器 配置辅域名服务器相对来说简单不少,只要主配置文件中加入一个区域,然后指定可以更新信息的主域名服务器就可以了,无需配置区域数据库文件。 1.编辑/var/named/chroot/etc/named.rfc1912.zones文件: vim /var/named/chroot/etc/named.rfc1912.zones 在最后添加正向解析区域test.com: zone “test.com” IN { type slave; file “slaves/test.com.hosts”; masters { 1.1.1.1; }; //这里填主DNS服务器IP }; 然后添加反向解析区域1.168.192.in-addr.arpa: zone “1.168.192.in-addr.arpa” IN { type slave; file “slaves/test.com.resv”; masters { 1.1.1.1; }; //这里填主DNS服务器IP }; 2.编辑named.conf,将named.rfc1912.zones文件加入到view “external”中: vim /var/named/chroot/etc/named.conf 在view “external”中添加: include “/etc/named.rfc1912.zones”; 3.设置/var/named/chroot/var/named/slaves目录用户和组为root:named: cd /var/named/chroot/var/named chown root:named slaves 为/var/named/chroot/var/named/slaves添加写权限: chmod g+w slaves named用户对slaves目录没有写权限会同步不了主域名服务器上的解析数据文件。 4.重启DNS服务: service named restart 5.查看/var/named/chroot/var/named/slaves目录: 产生test.com.hosts test.com.resv文件,说明更新成功。 需要注意: 1)主从服务器中正/反向zone名称必须一致。 2)从服务器中file可指定相对路径,也可指定绝对路径。 3)需将辅助DNS服务器的首选DNS服务器指向为主DNS服务器。 (责任编辑:IT) |