DNS服务器的配置
黄凤辉 2007年10月23日星期二DNS 服务器的配置(主DNS 、辅助DNS 、DNS 的转发)一、DNS 的功能DNS 是域名解析
黄凤辉 2007年10月23日星期二
DNS 服务器的配置(主DNS 、辅助DNS 、DNS 的转发)
一、DNS 的功能
DNS 是域名解析服务。主要是将域名和IP 地址进行对应。它的主要技术方面有:DNS 的正向解析(域名->IP),DNS 的反向解析(IP->域名),DNS 的子域,DNS 的委派(将某个域名或IP 交给另一台DNS 服务器进行解析),DNS 的转发(自身如果无法解析域名或IP 就交给另一台DNS 进行解析)。
二、Linux 下DNS 配置文件的说明
DNS 的配置主要由两个文件决定:/etc/named.conf和/var/named/***。其中/etc/named.conf保存的是可以解析的域名信息(也称为,主配制文件) ,而/var/namd/***(***是文件名)保存的是DNS 服务器在此区域中可以解析出的机器域名和IP 。
首先查询本机是否已安装配置域名服务器所需要的相关软件包bind 和bind-utils
bind :DNS 服务器软件
bind-utils :包含多个DNS 查询工具软件
#rpm –aq|grep bind
三、主配置文件的常用配置和说明
DNS 服务器的主配置文件:/etc/named.conf (说明:在named.conf 配置文件中使用//和/* */来进行注释)
#vi /etc/named.conf
options {
directory "/var/named";
/*options选项用来定义一些影响整个DNS 服务器的环境,如这里的directory 用来指定文件的路径,如这里的是将其指定到 /var/named 下, 在这里你还可以指定端口等等。不指定则端口是53 */
}; //
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN { //在这个文件中zone 是用来定义域区的,一个zone 就定义一个域区
type hint; /*在这里type 类型有三种,它们分别是master,slave 和hint 它们的含义分别是:
master:表示定义的是主域名服务器
slave :表示定义的是辅助域名服务器
hint:表示是互联网中根域名服务器 */
file "named.ca"; //用来指定具体存放DNS 记录的文件
};
zone "localhost" IN { //定义一个域名为localhost 的正向区域
type master;
file "localhost.zone" ; //定义正向区域数据库文件的名字
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN { //定义一个IP 为127.0.0.*的反向域区
,黄凤辉 2007年10月23日星期二
type master;
file "named.local"; //定义反向区域数据库文件的名字
allow-update { none; };
};
zone "test.net" IN { //定义一个域名为test.net 的正向区域
type master; //定义这个域名服务器是一个主域名服务器
file "test.net” //定义正向区域数据库文件的名字为test.net
allow-update { none;};
};
zone "0.168.192.in-addr.arpa" IN { //定义一个IP 为192.168.0.*反向域区
type master;
file "net.test"; //定义反向区域数据库文件的名字为net.test
}
四、区域数据库文件的配置与说明
(1)正向区域文件
#cd /var/named/
#cp localhost.zone test.net
#vi test.net //复制模板文件localhost.zone ,生成正向区域数据库文件
@ IN SOA linux.test.net. root.test.net.
//SOA称为起始授权机构,表示授权开始
/*上面的IN 表示后面的数据使用的是INTERNET 标准。而@则代表相应的域名,如在这里代表test.net, 即表示一个域名记录定义的开始。而linux.test.net 则是这个域的主域名服务器,而root.test.net 则是管理员的邮件地址。注意这是邮件地址中用. 来代替常见的邮件地址中的@.*/
42 ; serial (d. adams)
/*本行前面的数字表示配置文件的修改版本,格式是年月日当日修改的修改的次数,每次修改这个配置文件时都应该修改这个数字,要不然你所作的修改不会更新到网上的其它DNS 服务器的数据库上,即你所做的更新很可能对于不以你的所配置的DNS 服务器为DNS 服务器的客户端来说就不会反映出你的更新,也就对他们来说你更新是没有意义的。*/
3H ; refresh
/*定义的是刷新时间,指定辅助服务器更新区域文件的时间周期,保证辅助服务器的数据是最新的 */ 15M ;retry
/*重试的时间间隔,即当从服务试图在主服务器上查询更新时连接失败,多长时间后重试 */
1W; expiry
/*过期时间,指定辅助服务器无法更新区域文件时,多长时间后所有资源记录无效 */
1D )
/*最小存活时间:指定资源记录信息存放在缓存中的时间 */
IN NS linux.test.net.
@ IN MX 10 mail.linux.test.
linux IN A 192.168.0.14
mail IN A 192.168.0.15
test1 IN A 192.168.0.133
www IN CNAME test1
,黄凤辉 2007年10月23日星期二
/*说明:
NS 记录:用于指明区域中DNS 服务器的主机名,表示是这个主机是一个域名服务器;这个记录是必不可少的!
A 记录:定义了一条A 记录,指明域名与IP 地址的对应关系
MX 记录:用于指定区域内邮件服务器的域名与IP 地址的相互关系,主机名前的数字表示邮件服务器的优先级别,当区域同有多个邮件服务器时,根据其优先级别决定其执行顺序,数字越小优先级越高! CNAME 记录:用于为区域内的主机建立别名
(2)反向区域文件
#cd /var/named
#cp named.local net.test
#vi net.test
@ IN SOA linux.test.net. root.test.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linux.test.net.
/*以上的各关键字的含义跟test.net 是相同的
14 IN PTR linux.test.net.
15 IN PTR mail.test.net
133 IN PTR test1.test.net.
/*
上面的第一列表示的是主机的IP 地址。省略了网络地址部分。如14完整应该是:192.168.0.14。 PTR 记录:反向记录指针,用于实现IP 地址与域名的逆向映射。
最后一列表示的是主机的域名。
五、修改/etc/resolv.conf文件
#vi /etc/resolv.conf
清除文件中原有的内容:加入如下内容:
search test.net
nameserver 192.168.0.6 //这个IP 是当前这个主机的IP
六、修改当前主机的DNS ,改为与本机的IP 相同!
七、启动DNS 服务
#service named start
#rndc reload
#service named restart
八、测试
#nslookup
>server 192.168.0.6
>set type=any
>test.net //正向测试看是否有结果,并判断结果是否正确
,黄凤辉 2007年10月23日星期二
>192.168.0.14 //反向测试,看是否能解析成对应的域名
上面介绍的是主DNS 的配置,接下来讲述一下辅助DNS 的配置
配置辅助域名服务器相对简单,只需要修改named.conf 文件即可,而不需要创建区域文件,因为辅助域名服务器的区域文件将从主域名服务器上自动复制到辅助域名服务器
例:假如需要配置一个符合如下条件的主域名服务器和辅助域名服务器
(1)域名为test.net ,网段地址为192.168.8.*。
(2)主域名服务器的IP 地址为192.168.8.3,主机名为master.test.net 。
(3)辅助域名服务器的IP 地址为192.168.8.4,主机名为second.test.net 。
(4)要解析的服务器有:www.test.net (IP 地址为192.168.8.3),ftp.test.net (IP 地址为192.168.8.200),vod.test.net (IP 地址为192.168.8.201)。
操作步骤如下:
第一步:将主域名服务器的网络设置为如下形式:
IP:192.168.8.3
子网掩码:255.255.255.0
DNS:192.168.8.3
将辅助域名服务器的网络设置为如下形式:
IP:192.168.8.4
子网掩码:255.255.255.0
DNS:192.168.8.4
第二步:修改主域名服务器的named.conf 文件
#vi /etc/named.conf
在include “/ect/rndc.key”前添加如下内容:
zone "test.net" IN {
type master;
file "db.test.net”
allow-update { none;};
};
zone "8.168.192.in-addr.arpa" IN {
type master;
file "db.192";
}
第三步:编辑主域名服务器的db.test.net 文件,内容如下:
#cd /var/named/
#cp localhost.zone db.test.net
#vi db.test.net
$TTL 86400
$ORIGIN test.net.
@ 1D IN SOA master.test.net. root.test.net. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
,黄凤辉 2007年10月23日星期二
1W ; expiry
1D ) ; minimum
1D IN NS master.test.net.
1D IN NS second.test.net.
master 1D IN A 192.168.8.3
second IN A 192.168.8.4
www IN CNAME master
ftp IN A 192.168.8.200
vod IN A 192.168.8.201
第四步:编辑主域名服务器的反向区域数据库文件db.192
#cd /var/named
#cp named.local db.192
#vi db.192
@ IN SOA master.test.net. root.test.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
1D IN NS master.test.net.
1D IN NS second.test.net.
3 IN PTR master.test.net.
3 IN PTR www.test.net.
4 IN PTR second.test.net.
200 IN PTR ftp.test.net.
201 IN PTR vod.test.net.
第五步:在主域名服务器上,修改/etc/resolv.conf文件,resolv.conf文件的内容如下: nameserver 192.168.8.3
search test.net
第六步:编辑辅助域名服务器的named.conf 文件,在include “/ect/rndc.key”前添加如下内容
zone "test.net" IN {
type slave;
file "db.test.net”
masters {192.168.8.3;};
};
zone "8.168.192.in-addr.arpa" IN {
type slave;
file "db.192";
masters{192.168.8.3}
}
第七步:在辅助域名服务器上,修改/etc/resolv.conf文件,resolv.conf文件的内容如下: nameserver 192.168.8.4
,黄凤辉 2007年10月23日星期二
search test.net
第八步:修改辅助域名服务器中/var/named目录的所有者,/var/named目录的默认所有者是root,应将其修改为named,否则无法从主域名服务器获取区域文件。
#chown –R named.named /var/named
另:AS4中,还应修改/var/named/chroot目录的所有都和组,因为AS4中,从主DNS 复制过来的区域数据库存放在/var/named/chroot/var/named中,所以在AS4中做如下操作:
#chown –R named.named /var/named/chroot
第九步:启动主DNS 和辅助DNS,查看/var/log/messages文件确保DNS 正确运行!查看辅助DNS 的/var/named/目录中是否生成了主DNS 的二个区域数据库文件
在/var/log/messages文件中查看有如下错误
“failed while receiving responses: permission denied”时请注意关闭主DNS 和辅助DNS 的防火墙!
接下来实现DNS 的转发
DNS 的转发指的是当自身无法解析域名或IP 就交给所指定的另一台DNS 进行解析,要实现这个功能很简单!只要在/etc/named.conf文件的options 参数中添加所转发所需要的DNS 地址就可以了,格式如下:
options {
directory "/var/named";
forwarders {*;}; //*是转发的DNS 地址,可以是多个,每个之间用;号隔开! /*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};