用Linux构建企业网DNS服务器 冯彬然 2000年 第34期   DNS (Domain Name Services)作为一种域名和IP地址之间相互转换的机制,几乎可以说是Internet 上运用最频繁的东西之一。而对于企业网,DNS同样非常重要。但是,由于企业网很多都是封闭的局域网,所以又不同于开放的Internet网,例如,某些企业网的DNS服务器可能没有外部名字服务器或更高一级的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.注意字母的大小写,因为很多错误多由此产生。