bind早已是DNS系统软件的事实标准,构建企业级DNS系统先从软件安装开始。
bind的安装方法包括源码安装和yum安装两种方法,本文介绍源码安装的步骤
本文的目标是:先让bind软件跑起来
环境准备
- CentOS7最小化安装后使用yum完成以下软件安装。
yum -y install net-tools
yum -y install iptables-services
yum -y install vim
yum -y install gcc*
yum -y install tcpdump
yum -y install cmake
yum -y install bind-utils
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum -y install libffi-devel -y
yum -y install libxml*
yum -y install git
yum -y install wget
yum -y install libtool
- 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.16.3.tar.xz为例。将软件传到/root目录下。
也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 - 执行
pip install ply
安装ply,安装前要确保此时setuptools和pip已经安装,如果未安装则需要单独安装。如果不安装ply模块,bind在编译时会报错如下。
configure: error: Python >= 2.7 or >= 3.2 and the PLY package are required for dnssec-keymgr and other Python-based tools.
PLY may be available from your OS package manager as python-ply or python3-ply; it can also be installed via pip. To build without Python/PLY, use --without-python.
4.执行以下命令安装libuvyum install -y epel-release
yum install libuv
yum install libuv-devel
如果不安装libuv则在bind编译时会报错如下。
checking for libuv... checking for libuv >= 1.0.0... no
configure: error: libuv not found
- 如果bind编译过程中出现以下报错,说明libtool没有安装,请用yum安装libtool。
configure: error: sys/capability.h header is required for Linux capabilities support. Either install libcap or use --disable-linux-caps.
yum install libcap-devel
- 创建named用户及相关目录。
使用53端口作为named组和named用户的ID号groupadd -g 53 -r named
useradd -u 53 -s /sbin/nolgin -r named -g named
安装bind
- tar -xvf bind-9.16.3.tar.xz 解压bind。
- cd bind-9.16.3
- ./configure --prefix=/usr/local/bind9
configure的参数有很多,这里只是指定的安装路径,安装路径一旦指定其实一些参数也自动默认指定了,例如 sysconfdir(存放配置文件)、localstatedir(存放本地数据文件和进程输出文件)。
注:–enable-threads enable multithreading参数已经在9.14及后续不再单独设置,9.11之前需要指定。9.14版本开始默认使用了SO_REUSEPORT特性(后期文档详细介绍) - make && make install 执行安装
- 安装成功后 /usr/local/bind目录中的内容如下。
[root@localhost bind]# ll
total 4
drwxr-xr-x 2 root root 124 Jun 13 02:58 bin 一些工具可执行程序例如nslookup等
drwxr-xr-x 2 root root 23 Jun 13 02:58 etc 主配置文件
drwxr-xr-x 12 root root 126 Jun 13 02:58 include
drwxr-xr-x 4 root root 154 Jun 13 02:58 lib
drwxr-xr-x 2 root root 4096 Jun 13 02:58 sbin 编译后的程序文件例如named、rndc等
drwxr-xr-x 3 root root 17 Jun 13 02:58 share 文档
drwxr-xr-x 3 root root 17 Jun 13 02:58 var 本地数据文件及输出文件目录
bind初始化配置
- cd /usr/local/bind
- sbin/rndc-confgen > etc/rndc.conf
bind官方推荐使用rndc(Remote Name Domain Controllerr)工具,rndc是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作,后期文档详细介绍。
注意:如果这里卡住不动可改用下面的命令sbin/rndc-confgen -r /dev/urandom > etc/rndc.conf
- cd /usr/local/bind/etc/
- tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
此时named.conf文件内容如下
[root@localhost etc]# cat named.conf
key "rndc-key" {
algorithm hmac-sha256;
secret "AXeCgzN/af9naYrVgtmdBkBEO2XYDl4k+rlq3dICfrY=";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
5 编辑named.conf文件,在当前文件的最后增加全局options配置如下。
options {
directory "/usr/local/bind/var/run";
pid-file "named.pid";
recursion yes;
allow-query { any; };
listen-on port 53 { any; };
};
参数名称 | 参数说明 |
directory | named程序运行后cd到此目录,区文件、输出的文件也写在此目录 |
pid-file | 进程id文件名 |
recursion | 全局开启递归查询 |
allow-query | 源IP解析限制,any代表所有 |
listen-on port 53 | 监听53端口的IP地址,any代表本机所有IP |
- chown -R named:named /usr/local/bind
- cd /usr/local/bind
- 执行sbin/named -u named -g 检查配置文件合规性。
运行bind
- 执行如下命令启动bind。
/usr/local/bind/sbin/named -u named -c /usr/local/bind/etc/named.conf
- 测试能正常解析
[root@localhost ~]# ps -ef|grep named
named 17934 1 1 07:54 ? 00:00:00 /usr/local/bind/sbin/named -u named -c /usr/local/bind/etc/named.conf
root 17944 1333 0 07:54 pts/0 00:00:00 grep --color=auto named
[root@localhost ~]#
[root@localhost ~]# netstat -anp|grep 53
tcp 0 0 192.168.3.160:53 0.0.0.0:* LISTEN 17934/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 17934/named
tcp6 0 0 fe80::9963:d77b:85c6:53 :::* LISTEN 17934/named
tcp6 0 0 ::1:53 :::* LISTEN 17934/named
udp 0 0 192.168.3.160:53 0.0.0.0:* 17934/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 17934/named
udp6 0 0 ::1:53 :::* 17934/named
udp6 0 0 fe80::9963:d77b:85c6:53 :::* 17934/named
[root@localhost ~]# dig @127.0.0.1 www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @127.0.0.1 www.baidu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8151
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 300 IN A 61.135.169.125
www.a.shifen.com. 300 IN A 61.135.169.121
;; Query time: 409 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jun 13 07:54:43 EDT 2020
;; MSG SIZE rcvd: 104
bind源码快速安装本文先介绍到这,还有很多细节例如设置本地hint区、打印日志、正向、反向区等,请继续关注后续更新,谢谢!