在Fedora 6中配置DNS服务器有两种方法:一种是对相关文件进行设置;另一种是用系统提供的图形化工具进行配置。本节主要讲述通过文件修改来配置DNS服务器。
named.conf文件是域名服务器Bind的配置文件,它一般在/etc目录下,在Fedora 6中位置为/Var/named。named.conf文件中的基本指令格式同C语言相似,其基本指令格式为:
directive{
parameter1;
…
parameterN;
}
directive是用户想使用的指令,paraneter1…paraneterN是对应指令的参数。每行只有一个参数,而且每个参数后有一个分号。接下来简要介绍一下Named.conf。
Options选项用来定义一些影响整个DNS服务器的环境。例如directory用来指定在本文件指定的文件的路径,一般是将其指定到/var/named下。用户还可以指定端口等等。默认端口是53。在全局定义选项Option中,最常用的参数是directory。directory参数的格式如下所示:
directory "patname";
pathname是区数据库的路径名。例如将directory参数指定区数据库存储在/var/named中,命令如下所示:
directory "/var/named";
则Options选项的完整指令是:
Options
{
directory "/var/named";
};
zone指令用来指明名字服务器所服务的域。zone指令有几个重要的参数。这里只介绍在为一个域配置主、从和线索域名服务器时用到的参数。这些参数是用户在实际应用中最可能用到的。配置主域名服务器zone指令的格式如下:
zone “domain”in{
type master;
file “pathname”;
};
domain是充当主域名服务器所在域的全域名(FQDN),而pathname是包括制定domain数据库的文件对应的路径名。给定的pathname应该是与在Options指令的directory参数中制定的目录相关的路径名。下面的zone指令指定了该域名服务器应该充当newone.com域的主域名服务器。
zone "newone.com"in{
type master;
file "named.newone.com";
}
这里type参数为给定的域定义配置了主域名服务器。master为主域名服务器。
提示:相对于根域的域名称为全域名(FQDN),在DNS中,一个全域名记作一个标记序列,从目标域名开始,以根域名结束。例如:www.cau.edu.cn是子域www的一个全域名。
配置从域名服务器zone命令的格式为:
zone "domain"in{
type slave;
file "pathname";
masters {address;};
};
domain是充当辅助域名服务器所在域的全域名(FQDN),pathname是包含指定domain数据库的文件对应的路径名,而address是主域服务器的IP地址。给定的pathname应该是与在Options指令的directory参数中制定的目录相关的路径名。下面的zone指令指定了该域名服务器应该充当newone.com域的辅助域名服务器。
zone "newone.com"in{
type slave;
file "named.newone.com";
masters {192.168.0.108;};
};
提示:在此例中假设newone.com域的主域名服务器的IP地址为192.168.0.108。
配置线索域名服务器(缓存服务器)zone命令格式为:
zone "newone.com"in{
type hint;
file "pathname";
};
domain是服务器要为其缓存地址的域(通常是根域“.”)的全域名(FQDN),而pathname是包含应该被缓存的地址的初始列表的文件对应的路径名。例如,下面这条zone指令为根域启动了缓存;
zone "."in{
type hint;
file "named.ca";
};
下面是一个简单的named.conf文件。该文件先用“//”来注释语句。Options选项设置区域和缓冲区文件的目录为/var/named。可以在此目录中找到区域数据库文件named.local、逆向映射文件和缓冲数据库文件named.ca。
//
//BIND9.0 confiuration
logging{
category cname {null;};
};
options{
directory "/car/named";
};
zone "."in{
type hint;
file "named.ca";
};
zone "newone.com"in{
type master;
file "named.newone.com";
};
zone "1.166.192.in-addr.arpa"{
type master;
file "192.166.1";
};
zone "0.0.127.in-addr.arpa"in{
type master;
file "named.local";
};
第一个zone指令为“.”定义指明根名字服务器的线索区域,列出这些服务器的缓冲数据库文件是name.ca。
第二个zone指令为newone.com域定义一个区域,其类型为master(主域名服务器区域),区域数据库文件是name.newone.com。
第三个zone指令用于前一个区域的IP地址逆向映射,其名字由newone.com域IP地址的逆序排列再加上术语in-addr.arpa构成。
例如:newone.com的地址是192.166.1,所以逆序是1.166.192。
//
//BIND9.0 confiuration
logging{
category cname {null;};
};
options{
directory "/car/named";
};
zone "."in{
type hint;
file "named.ca";
};
zone "newone.com"in{
type slave;
file "named.newone.com";
master{192.168.0.108;};
};
zone "1.166.192.in-addr.arpa"{
type slave;
file "192.166.1";
master{192.168.0.108;};
};
zone "0.0.127.in-addr.arpa"in{
type master;
file "named.local";
master{192.168.0.108;};
};
这里将主DNS服务器地址设定为192.168.0.108。
一个域的DNS数据库是一个文本文件集合,并且由该域的主名字服务器的系统管理员维护。这些文本文件成为区域文件,就是用户在“named.conf”中定义的文件。
它们包括两种类型的项:资源记录(Resource Records)和分析器命令(如$ORIGIN和$TTL)。资源记录是数据库的真实部分,而分析器命令只是提供输入记录的一些简便途径。
资源记录的基本格式为:
[name] [ttl] [class] type data
(1)name字段:表示一个主机或者一个域。用户经常在配置文件中看到“@”,其实就是代表本域,可以写全。
(2)ttl字段:以秒为单位,和TCP/IP中的ttl差不多含义,就是存活时间,只是网络中ttl是指秒数。一般将存活时间设为一周,这样,可以明显减少网络流量和DNS的负载。
(3)class字段:一般都使用IN,对应的是internet。
(4)type字段:有SOA、A、NS、PTR、MX和CNAME等。
(5)data字段:根据type字段不同而不同。一般,一个区的资源记录写在最前面,然后是NS记录,其他顺序可以任意。下面将列出来一些经常用到的记录,并且结合实例进行说明。
每个zone仅有一个SOA记录,该zone一直延伸到遇见另一个SOA记录为止。SOA记录包括zone的名字,一个技术联系人和各种不同的超时值。例如,在named.conf中指定的zone语句中指定的名字。假设DNS服务器运行主机ns.newone.com,系统管理员邮箱地址为admin@newone.com。则配置命令如下所示:
@ IN SOA ns.newone.com. admin.newone.cau.edu. (
200701030 ;Serial
8H ;Refresh
8 hours 1H ;Retry
1 hour 2W ;Expire
2 weeks 1D ); Minimum, 4 days
提示:“@”是当前zone名的简写。在这里可以用newone.cau.edu.代替。一定不要遗漏最后的“.”,后面邮箱也必须同样注意。
它的值是在named.conf文件中的zone语句中指定的名字;可以在这个zone文件中使用$ORIGIN分析器指令进行更改。这里没有ttl字段。
class为IN。ns.newone.com.是该zone的主名字服务器(请注意后面的“.”)admin.newone. cau.edu.是域管理员的邮箱,要把第一个“.”换成“@”,并且舍弃最后一个“.”才行。第一个数值Serial代表这个zone的序列号。可以供从服务器判断何时获取新数据的。这里设成日期。
注意:更新数据文件必须要更新这个序列号,否则从服务器将不更新。
第2个数值Refresh指定多长时间从服务器要与主服务器进行核对(当然现在有了notify这个参数,一旦更新了主服务器,将立即通知从服务器进行更新)。
第3个数值Retry代表如果从服务器试图检查主服务器的序列号时,主服务器没有响应,则经过这个时间后将重新进行检查。
第4个数值Expire将决定从服务器在没有主服务器的情况下权威地持续提供域数据服务的时间长短。
第5个数值Minimum指高速缓存否定回答的存活时间。可能指客户机如果要解析某台服务器的IP,而这台服务器是不代表客户查询的存活时间。$TTL,expire和minimum参数最终决定使用DNS的每个人放弃旧数据值。
解析服务器记录。用来表明由哪台服务器对该域名进行解析。识别对一个zone有权威性的服务器(即所有主服务器和从服务器),并把子域委托给其他机构。命令格式如下:
zone [ttl] IN NS hostname
例如:
newone.cau.com. IN NS ns. newone.cau.com.
newone.cau.com. IN NS anchor. newone.cau.com.
newone.cau.com. IN NS ns. newone.tj.com.
A记录也称IP指向。用户可以在此设置子域名并指向自己的目标主机地址上,从而实现通过域名找到服务器。它是DNS数据库的核心。它们提供了以前在/etc/hosts文件中指定的主机名到IP地址的映射。一个主机必须为它的每个网络接口得到一条A记录。命令格式如下:
hostname [ttl] IN A ipaddr
例如以下命令表示anchor.marco.fudan.net.的IP为192.168.0.1:
anchor IN A 192.168.0.1
MX记录即邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。电子邮件系统就是使用MX记录来更有效地路由邮件。命令格式如下。
name [ttl] IN MX preference host ...
CNAME记录为主机建立别名。用来缩短一个长主机名或者用来和某种功能联系起来。用户可以为一个主机设置别名。例如,设置test.mydomain.com指向一个主机www.newone.net,以后就可以用test.mydomain.com来代替访问www.newone.net了。命令格式如下:
nickname [ttl] IN CNAME hostname
当BIND遇到一条CNAME记录时,它就会停止对该别名的查询,并切换到真实的名称。用户要注意的是,如果一台主机引用了别名,那么它的A、NS、MX等都必须用真实名称。示例如下:
colo-gw IN A 126.136.243.25colo IN CNAME colo-gwwww IN CNAME colo
指针记录是在反向搜索区域中创建的一个映射,用于把计算机的IP地址映射到DNS域名,它仅用于支持反向搜索。可以静态手动创建指针记录,也可以在创建主机记录时创建相关的指针记录。当IP配置更改时,可以动态注册和更新它们在DNS中的指针记录。例如,将IP地址192.168.0.12逆向映射为ns.newone.edu。
192.168.0.12 IN PTR ns.newone.edu