前言:初次接触用 Linux 来搭建 DNS 服务器,着实让我很头痛,碰到了很多很多的问题,即使到网上找资料,按照那些网上所给的步骤去做,可是总是有让人意想不到的结果,不过最终还是解决了。不说太多了,下面进行讲解和陈述自己所碰到问题和解决方法。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

.DNS 架设的步骤

1. 架设 DNS 服务器所需要的四个主要文件有: ( 不同版本的那个红色部分不相同的 )

bind-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />9.2.4-p5-9.i386.rpm

bind-devel-9.2.4-p5-9.i386.rpm

bind-chroot-9.2.4-p5-9.i386.rpm

caching-nameserver-7.3-3.noarch.rpm

于是我们可以在终端中查找有没有安装这四个主要文件

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

2. 如果没有安装上面那些文件的话,可以在光盘中找到相应的软件包进行安装就可以了。操作步骤如下:

虚拟机菜单栏上面的“虚拟机”— > “设置”— > Browser ”— > ok

注:在点击 Broweser 按钮后选择相应的光盘,然后对“ connect ”选项打个勾,点击确定( 0K
 
 

3. 在终端上挂载 cdrom ,执行以下命令:查找到相应的安装文件,如下图操作:

  

   /mnt 下找到软件包的位置,在 Redhat/RPM$ 下存放着的都是软件包,于是我们可以进入到 RPM$ 目录下,然后用命令查找相关的软件包: find . name “bind*” 。找到后就可以进行安装,用 RPM –ivh 安装,这里不做截图。(注:不同版本的软件包放在不同的目录下,这个要自行查找)

4. 安装好所需的文件后,下面就要对其配置文件进行配置了。

DNS 的主要配置文件时 named.conf, 该配置文件存在于 /etc 目录下的,可是我们安装了 bind-chroot-9.2.4-p5-9.i386.rpm 后, DNS 启动时读取主配置文件的路径改变了,其主要配置文件已经是在该“ /var/named/chroot/etc/named.conf ”路径下读取了,而区域文件是应该存在于“ /var/named/chroot/var/named ”目录下了。所以要注意文件的位置,否则 DNS 是跑步起来的。至于为什么有些人在 /etc 下配置 named.conf 却能让 DNS 跑起来的?请查看一下你在 /etc 下的 named.conf 是不是一个链接文件来着,该文件时链接到“ /var/named/chroot/etc/ ”目录下的一个配置文件。(注:由于安装了 bind-chroot-9.2.4-p5-9.i386.rpm ,发生了路径的改变)

5. 对主配置文件的配置如下:
 

运行上面的命令,打开配置文件如下图所示:
 

说明: 1.directory /var/named ”是指存放区域文件的位置,如 3 中“ . ”区域文件“ named.ca ”就是存在该路径下,其实 /var/named 的真实路径并不是 /var/named, 而是 /var/named/chroot /var/named , 如果有链接的话,那也是可以的,将 /var/named/chroot/var/named 下的文件链接到“ /var/named”.

     2. 将原本的 127.0.0.1 修改成 DNS 服务器的 IP 地址

     3. 这是配置文件自带的区域,也可以说是我们建区域的模板。
  

如上图所示:我们创建一个域名为 redhat.com ,其区域文件名称是 :yangzexin.redhat.com 。同时创建一个反向查找区域,其区域文件名称是: 192.168.10.in-addr.arpa (注意:这两个文件的路径应该是: /var/named/chroot/var/named 目录下)

6. /var/named/chroot/var/named 目录下创建上面的两个区域文件,同时修改两个区域文件的内容。如果对区域文件的书写不是很熟悉的话,我们可以复制“ localhost.zone ”这个文件,然后将其名改为 yangzexin.redhat.com ( 注意:其名字要跟主配置文件中的名称一致 ) ,至于反向查找区域的文件可以复制“ named.local ”这个文件,将其名改为 192.168.10.in-addr.arpa 对于“ localhost.zone ”和“ named.local ”文件的位置存放在那里呢?其实如果存放位置没有错误的话:那就是在 /var/named/chroot/var/named 目录下, 因为这两个文件也是区域配置文件,在主配置文件中可以找到相应的 file named.local ”和 file localhost.zone ”,如果其存放位置不是在上面所指的目录下,那么你就得在“ / ”(根目录)查找他们出来,然后将他们移到 /var/named/chroot/var/named 目录下, 这样 DNS 才能跑起来,否则总是会提示找不到相应的文件。
 

绿色线的:就是我们对其进行复制的文件,其存放目录就是如图所示

蓝色线的:都是配置文件里面的 file XXX ”所指的文件。

红色线的:就是我们复制绿色线的文件后修改名字后得来的

7. 打开编辑 yangzexin.redhat.com 区域文件 , 即正向查找区域文件
 

注意:域名的后面都要加上一个“ . ”,同时修改名称服务器( NS )为 yangzexin.redhat.com. 再者要为其添加主机记录: yangzexin IN A 192.168.10.5 最后还可以添加其他主机记录以及别名。

8. 打开反向查找区域文件 192.168.10.in-addr.arpa 进行编辑:
 

注意:在反向配置文件中要加入“ yangzexin IN A  yangzexin.redhat.com. ”记住这个一定要加上去,这个也是很容易被忽略的,至于为什么请看下面第二部分“疑题解密”第 3 问。

9. 做好这些工作之后,还要做的一件事就是关闭防火墙“ service iptables stop ”,启动 DNS 服务,如下图所示:然后在 Linux 客服端的 /etc 下的 resolv.conf 文件进行配置,如下图所示:

  

 

于是现在就可以进行测试工作了:测试结果如下图所示:

10. windows 下测试 Linux 所架设的 DNS 服务器

  

测试结果如下:
 

二:疑题解密

1.     为什么在启动 DNS 服务的时候,总是提示说找不到加载的文件?

答:确定区域文件的路径,上面第 4 5 6 步讲的很清楚。懂得确定文件的有效位置,这样 DNS 才能跑起来

2.     为什么在 DNS 启动后,采用 ping yangzexin.redhat.com 是可以的,而且有报文回复,可是用 nslookup 就不可以解析呢?

答:请查看你的防火墙是否关闭了。

3.     为什么在 windows 下用 nslookup 后,显示的 server unknown 的?

答:请检查反向查找区域中是否有这么一条记录 yangzexin IN A  yangzexin.redhat.com.

 

三:个人总结

在架设 DNS 服务器的过程中真的碰到很多很多问题,特别是关于配置文件和区域文件的路径问题,结果就浪费了很多时间,只能自己去摸索着路径,而且并不是一时半会就了解得了得!不过最终还是懂得了。

其实如果你照着我这个实验的步骤一步一步的去做,在这个过程中你应该会碰到很多问题的,因为不同版本的文件路径有很多的差别,很多人都说没有很大差别,可是我觉得还是有差别的:例如这个实验室在 Linux as 4.0 上完成的,在没有安装 caching-nameserver bind-root 时是没有哪些配置文件的,而且也是没有模板的,可能你要自己手工创建,可是一旦安装了 caching-nameserver bind-root 后,就有相关的配置文件和区域文件,而且区域文件都放在正确的位置。但如果你是在 relhet-5.0 实验的话,那么你应该注意的是没有安装 caching-nameserver 是没有关系的,而其配置文件和区域文件都作为一个模板放在该路径下: /sur/share/doc/bind-XXX/sample/etc 下和 /sur/share/doc/bind-XXX/sample/var/named 下,此时需要对里面得文件进行搬移到 /var/named/chroot/ 下面相应的目录下。

测试工具:

1.Named-checkconf  named.conf named.conf 文件的语法等正确与否

2Named-checkzone  域名( redhat,com )区域文件( yangzexin.redhat.com )检查区域配置文件的语法等

3.tail  -10 /var/log/messages  查看 DNS 启动过程中的情况

4.nslookup 工具和 host 工具: host 域名 或者 host IP 地址
 
注意事项:

1.      关闭防火墙: service iptables stop

2.      注意文件的路径问题: named.conf 文件一般放在 /var/named/chroot/etc/ 下,如果在 /etc/ 下看到 named.conf 的话,那么要注意其是不是链接到以上那个目录,如果不是的话,那么应该在 /var/named/chroot/etc/ 下配置 named.conf, 至于区域文件是放在 /var/named/chroot/var/named/ 下的,而不是放在 /var/named 下,即使是放在 /var/named 下的,那也是链接到 /var/named/chroot/var/named/ 。所以最终配置文件和区域文件都是在 /var/named/chroot/etc/ /var/named/chroot/var/named/ 下起效果的。

3.      查找 named.conf 模板等,其实在 /usr/share/doc/bind-9.24/sample/named/etc 下和 /usr/share/doc/bind-9.24/sample/named/var/named 下可以找到相应的模板,如果找不到的话,那么查找有没有安装 caching-namedserver-* 这个安装包,如果安装了的话,其实 /etc/named.conf 应该可以用了。而且她已经直接链接到 /var/named/chroot/etc/ 下。

4.      配置完 DNS 后,要注意的是在客服端需要修改 /etc/resolv.conf 这个文件,在里面添加“ nameserver  IP 地址”