内网DNS服务安装使用系列教程(四)高级功能之编译安装BIND服务

最小化安装机器


[root@localhost ~]# yum  groupinstall "Development Tools" "Server Platform Development"

去官网isc.org下载安装包,bind-9.10.1-P1.tar.gz


bind9和bind10的区别很大,而且bind10还在测试阶段
创建named用户和组
安装在同一目录下/usr/local/bind9,系统文件放在/etc/named/
禁用IPv6功能,禁用chroot功能,启动线程多核工作

自己手动编译安装bind可能会出现的问题


(1)在/etc/named/没有配置文件或者为空,需要自己创建
(2)没有任何区域解析库文件,即/var/named,所以也没有13个根节点,需要自己创建
(3)没有rndc的配置文件,需要自己创建
(4)没有启动脚本,没有/etc/init.d/named文件
这里由于自定义安装到了/usr/local/bind9中,所以像dig、host等工具不能直接调用,需要完整路径

[root@localhost ~]# tar xf bind-9.10.1-P1.tar.gz
[root@localhost ~]# cd bind-9.10.1-P1
[root@localhost ~]# groupadd -r -g 53 named
[root@localhost ~]# useradd -r -u 53 -g 53 named
[root@localhost ~]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
[root@localhost ~]# make
[root@localhost ~]# make install

添加环境变量,就可以调用相关命令


[root@localhost ~]# vim /etc/profile.d/named.sh
export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
[root@localhost ~]# . /etc/profile.d/named.sh

导出库文件


[root@localhost ~]# vim /etc/ld.so.conf.d/named.conf
/usr/loacl/bind9/lib

重新载入库文件


[root@localhost ~]# ldconfig -v

如果有头文件,导出头文件


[root@localhost ~]# ln -sv /usr/local/bind9/include /usr/include/named

之后就可以使用/usr/include/named来访问/usr/local/bind9/中的头文件了


[root@localhost ~]# ls /usr/include/named

在/usr/local/bind9/下有share的帮助文件,添加MANPATH将其放入man中


[root@localhost ~]# vim /etc/man.conf
MANPATH /usr/local/bind9/share/man

添加主配置文件,这里只添加directory就可以了


[root@localhost ~]# vim /etc/named/named.conf
option  {
directory "/var/named"
};

zone  "."  IN  {
type hint;
file "named.ca";
};

zone  "localhost"  IN  {
type master;
file "localhost.zone";
allow-update { none; };
};

zone  "0.0.127.in-addr.arpa"  IN  {
type master;
file "named.local";
allow-update { none; };
};

[root@localhost ~]# mkdir /var/named/{named.ca, localhost.zone, named.local}

使用dig命令来生成13个根节点,172.16.0.1为网关地址,可以帮助我们连接外网的地址,获取13个根节点


[root@localhost ~]# dig -t NS . @172.16.0.1 > /var/named/named.ca
[root@localhost ~]# vim /var/named/localhost.zone
$TTL 1D
@    IN    SOA    localhost.    admin.localhost. (
  2016042201
  1H
  5M
  7D
  1D )
   IN    NS   localhost.
localhost.    IN    A    172.0.0.1

[root@localhost ~]# vim /var/named/named.local
$TTL 1D
@    IN    SOA    localhost.    admin.localhost. (
  2016042201
  1H
  5M
  7D
  1D )
   IN    NS   localhost.
1    IN    PRT    localhost.

[root@localhost ~]# cd /var/named/
[root@localhost named]# chmod 640 ./*
[root@localhost named]# chown :named *
[root@localhost named]# chmod 640 /etc/named/named.conf

查看帮助文档


[root@localhost ~]# man named

启动named服务,调试


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

启动named服务,不调试


[root@localhost ~]# named -u named

查看是否启动


[root@localhost ~]# ss -tunl named | grep :53

关闭named服务


[root@localhost ~]# killall named

添加解析区域


[root@localhost ~]# vim /etc/named/named.conf
zone  "wsescape.com"  IN  {
type master;
file "wsescape.com.zone";
allow-update { none; };
};

[root@localhost ~]# vim /var/named/wsescape.com.zone
$TTL 1D
$ORIGIN wsescape.com.
@    IN    SOA    ns.wsescape.com.    admin.wsescape.com. (
  2016042201
  1H
  5M
  7D
  1D )
   IN    NS   ns
ns     IN    A    172.16.100.11
www    IN    A    172.16.100.11

[root@localhost named]# chmod 640 wsescape.com.zone
[root@localhost named]# chown :named wsescape.com.zone

启动


[root@localhost named]# named -u named

解析正常


[root@localhost named]# dig -t A www.wsescape.com @172.16.100.11

当我们使用rndc reload的时候,会提示我们没有配置文件
想让rndc可用,使用rndc-confgen来生成配置文件
如果使用rndc-confgen发生堵塞,可以使用rndc-confgen -r /dev/urandom来生成随机数
rndc-confgen生成的文件,将#Start和#End之间的配置文件放到**/etc/named/rndc.conf**中,之后根据提示将后续的内容放到/etc/named/named.conf中

[root@localhost ~]# rndc-confgen
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "ZeE7NXZTprjARrGN/KRANQ==";
};

options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#algorithm hmac-md5;
#secret "ZeE7NXZTprjARrGN/KRANQ==";
# };
#
# controls {
#inet 127.0.0.1 port 953
#allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

# 现在rndc reload可以使用了
[root@localhost ~]# rndc reload
# 之后就只需要给提供一个脚本来像service一样,启动和关闭服务,不难的

编译安装,在bind-9.10.1-P1源码目录下,有一个contrib目录
其中包含的是第三方贡献的补充增强bind的功能
其中有一个目录为scripts包含一些脚本,我们可以参考

还有一个目录为queryperf来评估查询性能的,做压测的,需要编译安装才能使用
编译安装queryperf,只需要在其目录下执行 ./configure和make 即可完成
就会生成一个queryperf的可执行文件,执行下列操作就可以直接使用了

[root@localhost queryperf]# cp queryperf /usr/local/bind9/bin/

# 在测试的时候,需要指定一个测试的文件,如test
[root@localhost ~]# vim test
www.wsescape.com A
wsescape.com NS

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

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/1168.html

发表评论

登录后才能评论