编译安装bind

(1)下载源码包

https://www.isc.org/downloads/

(2)解压缩源码包

[root@localhost~]#mv bind-9.10.6.tar.gz /usr/src/
[root@localhost~]#cd /usr/src/
[root@localhost/usr/src]#tar xvf bind-9.10.6.tar.gz

(3)来我们先看看bind包原来有没有安装脚本呢?

[root@localhost ~]# rpm -q --scripts bind

从图中我们可以看出,安装前需要自己创建用户,那么我们来创建一个用户吧

[root@localhost/usr/src/bind-9.10.6]#useradd -r -d /var/named -s /sbin/nologin -m named #这里由于是系统用户,如果不加“-m”的话,是不能创建家目录的,切记!!!

(4)我们接下来看看如何安装bind

[root@localhost/usr/src/bind-9.10.6]#cat README

如果直接向定制bind程序,显然这样做是不能满足我们的需求的,我们可以使用如下操作定制我们bind程序

[root@localhost/usr/src/bind-9.10.6]#./configure --help

如上图所示,这里只是截取部分图,这里可以选择我们要安装的包位置,启用或关闭某些功能,实现定制bind,相信很多第一次编译的像我这样的人来说认真研究一种程序源码安装过程,基本可以掌握别的源码包的安装。

[root@localhost/usr/src/bind-9.10.6]#./configure --prefix=/app/bind10 --sysconfdir=/etc/bind10

来来看看,我说什么了,当出现这是不是不知道如何操作,没有人家说的很清楚了,没有gcc,那该如何解决呢?那么我们来安装一个开发包来解决这个问题

[root@localhost/usr/src/bind-9.10.6]#yum groupinstall -y "development tools"

那我们再来尝试一次,看看这次会出现什么幺蛾子。

[root@localhost/usr/src/bind-9.10.6]#./configure --prefix=/app/bind10 --sysconfdir=/etc/bind10

看看我说什么来着,这次又出错啦,为什么呢?它提示我们说没有openssl程序,如果想依赖这个程序,可以安装openssl-devel;一般源码包遇到的情况,都安装相对的开发包即可。

那我们再来测试一次,看看还会出现什么情况呢?

当当当,哈哈,竟然成功啦 ;不过这只是成功了一部分,如果想继续成功那就实行下面步骤吧

(5)进行编译安装

[root@localhost/usr/src/bind-9.10.6]#make ;make install  
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能; make install 一般表示进行安装,相当于创建软连接,创建目录等等一些操作。

(6)这样安装的话是没有命令PATH和man帮助的,那如何实现呢?

[root@localhost~]#vim /etc/profile.d/env.sh
[root@localhost~]#source !$
source /etc/profile.d/env.sh

export PATH=/app/bind10/bin:/app/bind10/sbin:$PATH

[root@localhost~]#vim /etc/man_db.conf

(7)刚刚在(2)比步骤是不是看看还有安装后脚本呀,对的你没有看错,那么我们来进行安装后脚本需要的操作。安装后脚本需要我们使用命令rndc-confgen创建相当于”暗号“,创建了暗号才能访问,那么我们就看看如何创建暗号呢?

[root@localhost~]#rndc-confgen -r /dev/urandom > /etc/bind10/rndc.conf  #如果不重定向只能在终端上显示,写不到文件中

不过我们现在还没有主配置文件named.conf文件,怎么办呢?那就手动创建一个喽

[root@localhost~]#vim /etc/bind10/named.conf

不过刚刚我们了解到bind程序运行者是named用户,但是我们来看看这个文件所有者和所属组是who

[root@localhost~]#ll /etc/bind10/named.conf 
-rw-r--r--. 1 root root 200 Sep 22 10:19 /etc/bind10/named.conf
[root@localhost~]#chgrp named /etc/bind10/named.conf    #修改所属组
[root@localhost/etc/bind10]#chgrp named bind10/ -R  #修改文件都为named所属组

(8)不过DNS中解析当然需要根啦那么我们就创建一个喽

[root@localhost named]# scp named.ca 192.168.4.152:/var/named/  #从远程主机上拷贝一个
[root@localhost/var]#chgrp named named/ -R  #修改权限

[root@localhost~]#vim /etc/bind10/named.conf

[root@localhost/var/named]#vim test.com.zone    #编辑测试域

[root@localhost/var/named]#chgrp named test.com.zone    #修改权限

(9)那我们接下来尝试着看看能不能起来服务

[root@localhost~]#named -u named -g -f -d 3
[root@localhost~]#ss -tnul

端口53/tcp 53/udp 953/tcp 已经处于监听状态,说明启动已经成功

(10)我们尝试看看可以解析么?

那么接下来测测我们dns的性能如何喽

对压力测试工具编译安装

[root@localhost ~]# cd /usr/src/bind-9.10.6/contrib/queryperf   #切换至源码包位置
[root@localhost/usr/src/bind-9.10.6/contrib/queryperf]#./configure #进行编译
[root@localhost/usr/src/bind-9.10.6/contrib/queryperf]#make
[root@localhost/usr/src/bind-9.10.6/contrib/queryperf]#cp queryperf /app/bind10/bin/    #将程序复制到bind执行程序的目录下

创建一个测试文本

[root@localhost~]#vim test

测试

[root@localhost~]#queryperf -d test -s 127.0.0.1