1、编译前环境准备
<code>[root@centfils ~]</code><code># yum groupinstall "Development Tools" "Server Platform Development"</code>
2、至isc.org bind官网下载bind源码,并展开
<code>[root@centfils ~]</code><code># tar xf bind-9.9.9-P2.tar.gz</code>
<code>[root@centfils ~]</code><code># cd bind-9.9.9-P2</code>
3、创建named用户
<code>[root@centfils bind-9.9.9-P2]</code><code># group -r -g 53 named</code>
<code>[root@centfils bind-9.9.9-P2]</code><code># useradd -u 53 -g named named -r</code>
<code>#使用53端口作为named组和named用户的ID号</code>
4、编译安装
<code>[root@centfils bind-9.9.9-P2]</code><code># ./configure --prefix=/usr/local/bind9.9 --sysconfdir=/etc/named/ --disable-chroot --enable-threads</code>
<code>#指明安装位置,配置文件位置,关闭chroot,开启线程</code>
<code>[root@centfils bind-9.9.9-P2]</code><code># make</code>
<code>[root@centfils bind-9.9.9-P2]</code><code># make install</code>
至此,安装完成,但自行编译bind源码包会产生如下问题
(1)没有配置文件
(2)没有区域解析文件(包括13个根服务器的解析文件)
(3)没有rndc的相关配置文件
解决上述问题
<code>#1、将bind下配置文件加入PATH中</code>
<code>[root@centfils bind9.9]</code><code># vim /etc/profile.d/named.sh</code>
<code>export</code> <code>PATH=</code><code>/usr/local/bind9</code><code>.9</code><code>/bin</code><code>:</code><code>/usr/local/bind9</code><code>.9</code><code>/sbin</code><code>:$PATH</code>
<code>[root@centfils bind9.9]</code><code># . /etc/profile.d/named.sh</code>
<code>#2、导出库文件搜索路径</code>
<code>[root@centfils bind9.9]</code><code># vim /etc/ld.so.conf.d/named.conf</code>
<code>/usr/local/bind9</code><code>.9</code><code>/lib</code>
<code>[root@centfils bind9.9]</code><code># ldconfig -v</code>
<code>#3、导出头文件搜索路径</code>
<code>[root@centfils bind9.9]</code><code># ln -sv /usr/local/bind9.9/include /usr/include/named</code>
<code>"/usr/include/named"</code> <code>-> </code><code>"/usr/local/bind9.9/include"</code>
<code>#4、导出帮助文档搜索路径</code>
<code>[root@centfils bind9.9]</code><code># vim /etc/man.config </code>
<code>MANPATH </code><code>/usr/local/bind9</code><code>.9</code><code>/share/man</code>
然后编辑配置文件
<code>[root@centfils bind9.9]</code><code># cd /etc/named</code>
<code>[root@centfils named]</code><code># vim named.conf</code>
<code>options {</code>
<code> </code><code>directory </code><code>"/var/named"</code><code>;</code>
<code>};</code>
<code>zone </code><code>"."</code> <code>IN {</code>
<code> </code><code>type</code> <code>hint;</code>
<code> </code><code>file</code> <code>"named.ca"</code><code>;</code>
<code>zone </code><code>"localhost"</code> <code>IN {</code>
<code> </code><code>type</code> <code>master;</code>
<code> </code><code>file</code> <code>"locaihost.zone"</code><code>;</code>
<code> </code><code>allow-update { none; };</code>
<code>zone </code><code>"0.0.127.in-addr.arpa"</code> <code>IN {</code>
<code> </code><code>file</code> <code>"named.local"</code><code>;</code>
<code>[root@centfils named]</code><code># mkdir /var/named</code>
<code>[root@centfils named]</code><code># named-checkconf</code>
<code>#然后创建各区域的配置文件</code>
<code>[root@centfils named]</code><code># cd /var/named</code>
<code>#在联网的情况下直接将查询根的结果导入根区域配置文件</code>
<code>[root@centfils named]</code><code># dig -t NS . > /var/named/named.ca</code>
<code>#配置正向解析区域</code>
<code>[root@centfils named]</code><code># vim localhost.zone</code>
<code>$TTL 86400</code>
<code>@ IN SOA localhost. admin.localhost. (</code>
<code> </code><code>2016091301</code>
<code> </code><code>1H</code>
<code> </code><code>5M</code>
<code> </code><code>7D</code>
<code> </code><code>1D )</code>
<code> </code><code>IN NS localhost.</code>
<code>localhost. IN A 127.0.0.1</code>
<code>#配置反向解析区域</code>
<code>[root@centfils named]</code><code># vim named.local</code>
<code>1 IN PTR localhost.</code>
接下来,更改配置文件的属组和权限
<code>[root@centfils named]</code><code># chown :named localhost.zone named.local named.ca </code>
<code>[root@centfils named]</code><code># chmod 640 localhost.zone named.local named.ca </code>
<code>[root@centfils named]</code><code># chmod 640 /etc/named/named.conf </code>
<code>[root@centfils named]</code><code># chown :named /etc/named/named.conf</code>
之后,生成rndc配置文件
<code>[root@centfils ~]</code><code># rndc-confgen -r /dev/urandom > /etc/named/rndc.conf</code>
<code>#使用随机数生成rndc.conf文件</code>
<code>[root@centfils ~]</code><code># rndc-confgen -r /dev/urandom</code>
<code># Start of rndc.conf</code>
<code>key </code><code>"rndc-key"</code> <code>{</code>
<code> </code><code>algorithm hmac-md5;</code>
<code> </code><code>secret </code><code>"3FMQn6XQIuzAXNhl+19EvA=="</code><code>;</code>
<code> </code><code>default-key </code><code>"rndc-key"</code><code>;</code>
<code> </code><code>default-server 127.0.0.1;</code>
<code> </code><code>default-port 953;</code>
<code># End of rndc.conf</code>
<code>#----------------将本段内容复制到named.conf文件中--------------------------------------</code>
<code># Use with the following in named.conf, adjusting the allow list as needed:</code>
<code># key "rndc-key" {</code>
<code># algorithm hmac-md5;</code>
<code># secret "3FMQn6XQIuzAXNhl+19EvA==";</code>
<code># };</code>
<code># </code>
<code># controls {</code>
<code># inet 127.0.0.1 port 953</code>
<code># allow { 127.0.0.1; } keys { "rndc-key"; };</code>
<code># End of named.conf</code>
<code>#----------------------------------结束------------------------------------------------</code>
将文中标识的内容复制到named.conf中,并取消注释
到此,准备工作结束,
<code>[root@centfils named]</code><code># named -u named -f -g -d 3</code>
<code>#-u 为指定named用户执行</code>
<code>#-f 为运行在前台</code>
<code>#-g 把标准错误显示出来</code>
<code>#-d 指明调试等级</code>
<code>[root@centfils ~]</code><code># ss -tunl | grep 53</code>
<code>udp UNCONN 0 0 192.168.0.196:53 *:* </code>
<code>udp UNCONN 0 0 127.0.0.1:53 *:* </code>
<code>tcp LISTEN 0 10 192.168.0.196:53 *:* </code>
<code>tcp LISTEN 0 10 127.0.0.1:53 *:* </code>
<code>#现在53端口已经处于监听状态了</code>
本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1852411