用Linux构建企业网DNS服务器
本文将主要从实际调试的角度出发,通过对DNS相关的几个重要配置文件的解释和编写,逐步完成企业网的DNS服务器的构建。
注:以下调试环境为Red Hat Linux 6.0
相应主机、域名及地址如下:
DNS服务器: ns.linux.net 10.0.0.1
WWW服务器: www.linux.net 10.0.0.1
Mail服务器: email.linux.net 10.0.0.3
FTP服务器: ftp.linux.net 10.0.0.4
news服务器: news.linux.net 10.0.0.5
下面将按照顺序,对DNS相关的几个配置文件逐一说明。
#1 1.host.conf
第一个与DNS相关的重要文件就是 /etc/host.conf,该文件的作用是告诉系统使用哪些途径并按什么顺序来解析域名。文件内容如下:
order hosts,bind
multi on
其中,order用于指定顺序,这里系统将首先使用 /etc/hosts 文件来解析,如果失败,将使用bind(即DNS名字服务器)完成解析。multi on 用于确定一台主机是否在 /etc/hosts 里指定了多个IP地址,这里不必理会。值得注意的是,对于企业网上重要的几个主机,应该把他们放到 /etc/hosts 文件中。
#1 2.named.boot
Linux的DNS名字服务器是由named守护进程提供的,/etc/named.boot文件则是named启动时读取的第一个文件,也是 named 的基本配置文件。该文件包含了指向各种配置文件和其它名字服务器的指针。内容如下:
directory /var/named
;cache.named.ca
primary 0.0.127.in-addr.arpa named.local
primary linx.net linux.net
其中的directory参数用于指定DNS区文件所在的目录,通常都是/var/named。cache参数为DNS建立高速缓存,它包含了根名字服务器的信息。但对于封闭的企业网,不需要这些根名字服务器,所以这里一定要将cache注释掉,否则会造成在解析域名时发生长时间等待。如果需要和Internet连接,则不要加注释,而且可以在连接建立以后用,用“dig > named.cache” 命令完成。primary以一个域名和一个文件名为参数,它用来指明named对指定的域具有控制权,并使named从指定的文件来装载该区的信息。
#1 3.resolv.conf
这个文件只定义了本地机器的域名和域名服务器的IP地址。
domain linux.net
nameserver 127.0.0.1
domain 说明了这个主机的本地域名,而nameserver则指定了域名服务器的IP地址。
#1 4.linux.net
根据 /etc/named.boot 的定义,我们要自己建立linux.net文件,该文件完成正向域名转换。这是域名服务器的一个重要文件,内容如下:
IN SOA ns.linux.net. hostmaster.linux.net. (
2000012001 ; serial
28800 ; refresh
7200 ; retry
3000000 ; expire
86400 ; default_ttl
)
IN NS ns.linux.net.
IN MX 100 mail.linux.net.
localhost IN A 127.0.0.1
mail IN A 10.0.0.3
www CNAME ns
news IN A 10.0.0.5
ftp IN A 10.0.0.4
ff IN A 10.0.0.60
ns IN A 10.0.0.1
其中第一行是 SOA 记录(Start Of Authority),定义了域名数据的基本信息,依次是 DNS服务器名、DNS 管理员邮件地址(注email地址中的“@”用“.”代替),括号内的第一个数字是文件版本号,每次本文件内容修改后,必须更改此号。其余数字与DNS服务器的数据交换有关,这里我们不需要改动。紧接着的 NS 记录(Name Server)和 MX 记录(Mail eXchange),分别定义了本域的域名服务器和邮件交换所指向的邮件服务器名字。接下来是各种域名/地址转换数据,其中 A (Address)命令是指定域名和 IP 地址的关系,IN表示数据类别,一般是固定的,不用改。CNAME(Canonical Name)用于设定一些主机的别名。
#1 5.named.local
named.local是一个用于反向解析的文件,即从IP地址到域名的转换。它与上面的linux.net文件很相似,只是多了一个新命令:PTR,它用于指出IP地址所对应的域名。
IN SOA localhost. root.localhost. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
IN NS ns.linux.net.
IN PTR localhost.
最后,还有两点要注意:
1.有些域名后加了一个点,如:“ mail.linux.net.”,而有些则没有加,对于加点的域名,系统不再对其处理,而没加点的,系统会在最后加上已定义的域名。
2.注意字母的大小写,因为很多错误多由此产生。