前言:

了解named

  如果说我们安装的rpm包不符合我们的要求怎么办、比如说我们想起用named的线程模式、比如说我想让他禁用IPv6、比如说我们想启用某种特性、而rpm在编译时没有提供、那这时我们只能去手动编译安装了,那如何去编译安装named:

 

 

  编译安装named有一个麻烦之处、所有的配置文件你都得自己去建立、像/var/named/这个目录、编译安装时连这个目录都不会存在、得自己去创建这个目录、里面的各种配置文件、区域文件、像根的、localhost的、以及localhost的反向的、都得手动去做、连我们service启动脚本都没、所以不到万不得以最好别去编译他、因为很麻烦、但对于我们学习来讲、我们应该是变得法的去折腾自己、活着就是折腾嘛、那我们各种方法都去摸索一遍、将来我们真要用得着了也好应对。

 

  首先上来就同步一下我们的时间:

  # hwclock -s

  然后检查一下安装环境所需要的开发包组、确保所依赖的开发包组都装有了、我这里没有装、那我就用yum来装一下吧:

  装好后查看一下、最主要两项:Development tools和Server Platform Development

 

  然后我们就去下载源码包了、这里我就去 www.isc.org/donloads/ 官方网站下载了、支持使用的版本是9.9.5、当前使用的稳定版、这个版本中已经自带dlz了、以前的版本没有自带的、安装时要装这个dlz的、如果我们将来人希望指资源记录基于数据库的方式存放的话、而且要能够现场检索、现场响应的话、则自定义启用dlz功能即可、下载好我们就去解压缩:

  # tar xf bind-9.9.5.tar.gz

  这里注意一下:我们要去编译安装一个服务、首先要去看他的README、然后看他的INSTALL、大体了解一下有没有我们所需要的信息、当然我们这里就不多说了、直接往下走:

  # ./configure -prefix=/usr/local/bind9 -sysconfdir=/etc/named -enable-threads -enable-epoll -disable-chroot

 

  -prefix=/usr/local/bind9:指定编译存放的路径

  -sysconfdir=/etc/named:指定配置文件存放路径

  -enable-threads:启用了多线程的功能

 

  然后make和make install就OK了、安装完成就可以去配置了

  # make && make install

  我们前面说过、编译安装named什么都得自己创建、用户也没有的、所以我们得给他创建一个用户先、而且用户是系统用户、要加-r、系统用户不会给他创建家目录的:

  先创建用户组:

  这里我们先去创建named的工作目录、然后创建named.ca这个文件:

  # mkdir /var/named

 

  这里@后面的IP是能访问互联网的服务器、生成的数据存在到/var/named/named.ca中去

  # dig -t NS . @172.16.0.1 > /var/named/named.ca

  然后再去编辑/etc/named/named.conf的配置文件、这个文件也没有、需要自己去编写的:

 

  # vim /etc/named/named.conf

 配置文件中的三个文件named.ca、named.localhost、named.loopback上面已经提供有一个了named.ca了、还有这两个named.localhost、named.loopback、同样我们也得提供、也是在/var/named目录下创建:

  如果想用rndc远程登录可以生成一个/etc/named/rndc.conf的配置文件:

  # /usr/local/bind9/sbin/rndc-confgen -r /dev/urandom > /etc/named/rndc.conf

 

  到这里我们别忘了给named.conf和rndc.conf修改属主属组和权限:

  为了方便、我们在PATH下加个的路径、/etc/profile.d/named.sh:

  # vim /etc/profile.d/named.sh

  export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

 

  在我们的终端重新登录一下就可以生效了

 

  好的、检查一下我们的区域文件有没有语法错误、然后就可以启动了:

  # named-checkzone "localhost" /var/named/named.localhost

  # named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback

  # named -u named    #这个表示以named用户启动named

  # ss -tunl | grep "<53>"  然后再查看一下有没有监听53号端口

  最后、因为他是一个服务、所以我们要为他提供一个服务脚本、以后可以利用脚本启动、编辑/etc/rc.d/init.d/named:

OK、到这里保存退出,给他个执行权限

  # chmod +x /etc/rc.d/init.d/named

 

  再加到chkconfig里面去:

  # chkconfig -add named

  # chkconfig -list named