前言:初次接触用Linux来搭建DNS服务器,着实让我很头痛,碰到了很多很多的问题,即使到网上找资料,按照那些网上所给的步骤去做,可是总是有让人意想不到的结果,不过最终还是解决了。不说太多了,下面进行讲解和陈述自己所碰到问题和解决方法。
.DNS架设的步骤
1.架设DNS服务器所需要的四个主要文件有:(不同版本的那个红色部分不相同的)
bind-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
于是我们可以在终端中查找有没有安装这四个主要文件
DNS服务器的架设_Linux
2.如果没有安装上面那些文件的话,可以在光盘中找到相应的软件包进行安装就可以了。操作步骤如下:
虚拟机菜单栏上面的“虚拟机”—>“设置”—>Browser”—>ok
注:在点击Broweser按钮后选择相应的光盘,然后对“connect”选项打个勾,点击确定(0K
  DNS服务器的架设_Linux_02
  DNS服务器的架设_休闲_03
3.在终端上挂载cdrom,执行以下命令:查找到相应的安装文件,如下图操作:
   DNS服务器的架设_休闲_04
   /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.对主配置文件的配置如下:
  DNS服务器的架设_DNS_05
运行上面的命令,打开配置文件如下图所示:
  DNS服务器的架设_Linux_06
说明: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.这是配置文件自带的区域,也可以说是我们建区域的模板。
   DNS服务器的架设_职场_07
如上图所示:我们创建一个域名为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目录下,因为这两个文件也是区域配置文件,在主配置文件中可以找到相应的filenamed.local”和filelocalhost.zone”,如果其存放位置不是在上面所指的目录下,那么你就得在“/”(根目录)查找他们出来,然后将他们移到/var/named/chroot/var/named目录下,这样DNS才能跑起来,否则总是会提示找不到相应的文件。
  DNS服务器的架设_DNS_08
绿色线的:就是我们对其进行复制的文件,其存放目录就是如图所示
蓝色线的:都是配置文件里面的fileXXX”所指的文件。
红色线的:就是我们复制绿色线的文件后修改名字后得来的
7.打开编辑yangzexin.redhat.com区域文件,即正向查找区域文件
  DNS服务器的架设_职场_09
注意:域名的后面都要加上一个“.”,同时修改名称服务器(NS)为yangzexin.redhat.com.再者要为其添加主机记录:yangzexin IN A 192.168.10.5 最后还可以添加其他主机记录以及别名。
8.打开反向查找区域文件192.168.10.in-addr.arpa进行编辑:
  DNS服务器的架设_Linux_10
注意:在反向配置文件中要加入“yangzexin IN A  yangzexin.redhat.com.”记住这个一定要加上去,这个也是很容易被忽略的,至于为什么请看下面第二部分“疑题解密”第3问。
9.做好这些工作之后,还要做的一件事就是关闭防火墙“service iptables stop”,启动DNS服务,如下图所示:然后在Linux客服端的/etc下的resolv.conf文件进行配置,如下图所示:
   DNS服务器的架设_服务器_11
 
于是现在就可以进行测试工作了:测试结果如下图所示:
DNS服务器的架设_DNS_12
10.windows下测试Linux所架设的DNS服务器
   DNS服务器的架设_职场_13
测试结果如下:
 DNS服务器的架设_休闲_14
二:疑题解密
1.     为什么在启动DNS服务的时候,总是提示说找不到加载的文件?
答:确定区域文件的路径,上面第456步讲的很清楚。懂得确定文件的有效位置,这样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-nameserverbind-root时是没有哪些配置文件的,而且也是没有模板的,可能你要自己手工创建,可是一旦安装了caching-nameserverbind-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 地址”