用Linux构建企业网DNS服务器

Author: 冯彬然 Date: 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.注意字母的大小写,因为很多错误多由此产生。