Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件。Bind已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器都是用Bind来架设的,已经成为DNS中事实上的标准。
bind历史
- BIND4版本,BIND包最初是在 1980 年代初在加州大学伯克利分校作为研究生项目在美国国防高级研究项目管理局 (DARPA)的资助下编写的。BIND 到 4.8.3 的版本由加州大学伯克利分校的计算机系统研究小组 (CSRG) 维护。Douglas Terry、Mark Painter、David Riggle 和 Songnian Zhou 组成了最初的 BIND 项目团队。
- BIND8版本,Internet Software Consortium, Inc. (ISC) 由 Rick Adams、Paul Vixie 和 Carl Malamud 于 1994 年创立,专门为 BIND 的开发和维护提供一个场所。从 4.9.3 开始的 BIND 版本由 ISC 开发和维护,并由 ISC 的赞助商提供支持。作为合作架构师/程序员,Bob Halley 和 Paul Vixie 于 1997 年 5 月发布了 BIND 版本 8 的第一个生产就绪版本。BIND 版本 4 和 8 已正式弃用。2004 年 1 月,ISC 更名为 Internet Systems Consortium, Inc。
- BIND9版本,于2000 年 9 月发布,几乎对底层 BIND 架构的所有方面进行了重大改写。
- BIND10版本,于2009 年~2014年期间进行开发,ISC 开始尝试使用 BIND 10 从头开始重写 BIND。它旨在替代和改进 BIND 9,基于全新的应用程序框架。2014 年,ISC结束了 BIND 10 的开发,转而重新专注于投资 BIND 9。
bind版本
BIND 有四种主要的版本:稳定版、开发版、扩展支持 (ESV) 和订阅版。如果您更喜欢 GUI 管理界面,您可以考虑基于 BIND的商业产品。
在早期,BIND 主要用于 UNIX 平台。但是,考虑到多年来的升级次数,BIND 现在可以在所有平台上使用。
官方网站:https://www.isc.org/bind
项目地址:https://github.com/isc-projects/bind9
BIND 配置权威 DNS 服务器在 CentOS 8 上使用 BIND 9 配置主和辅助DNS 服务器。准备两台 CentOS 8 虚拟机,规划如下:
主 DNS 服务器:
- 主机名- dns-01.example.com
- IP 地址- 192.168.93.70/24
- 操作系统– CentOS 8.3
辅助 DNS 服务器:
- 主机名- dns-02.example.com
- IP 地址- 192.168.93.71/24
- 操作系统– CentOS 8.3
配置主机名
[root@dns-01 ~]# hostnamectl set-hostname dns-01.example.com [root@dns-02 ~]# hostnamectl set-hostname dns-02.example.com安装 BIND 9 DNS 服务器
BIND 9可通过 CentOS 8 官方 yum 存储库获得。因此,我们可以使用dnf命令轻松安装它。
[root@dns-01 ~]# dnf install -y bind bind-utils配置主DNS 服务器
默认named.service在localhost 上运行,需要配置named.service在本机IP地址上监听。
[root@dns-01 ~]# vi /etc/named.conf
在options指令下设置以下参数以允许named.service在我们的网络接口上运行。
listen-on port 53 { 127.0.0.1; 192.168.93.70; };
我们还需要启用named.service以允许指定客户端查询。因此,在选项指令中查找并设置以下参数。
allow-query { localhost; 192.168.93.0/24; };
为了保持named.conf文件干净,创建一个单独的配置文件中定义我们的DNS 区域。
cat >/etc/named.conf.local<我们在这里定义了两个 DNS 区域,一个是正向 DNS 区域,另一个是反向 DNS 区域。
在默认配置文件named.conf文件中包含named.conf.local,以在服务启动时被调用。
echo 'include "/etc/named.conf.local";' >> /etc/named.conf为我们的域配置转发区域。
cat >/var/named/example.com<<'EOF' $TTL 1h @ IN SOA example.com. root.example.com. ( 2019080901 ; Serial YYYYMMDDnn 24h ; Refresh 2h ; Retry 28d ; Expire 2d ) ; Minimum TTL ;Name Servers @ IN NS dns-01 ;Mail Servers @ IN MX 0 mail-01 ;Other Servers dns-01 IN A 192.168.93.70 mail-01 IN A 192.168.93.73 web-01 IN A 192.168.93.74 ;Canonical Names www IN CNAME web-01 mail IN CNAME mail-01 EOF检查转发区域文件是否有任何可能的错误。
[root@dns-01 ~]# named-checkzone example.com /var/named/example.com zone example.com/IN: loaded serial 2019080901 OK为我们的域配置一个反向区域。
cat >/var/named/93.168.192.in-addr.arpa<<'EOF' $TTL 1h @ IN SOA 93.168.192.in-addr.arpa root.example.com. ( 2019080901 ; Serial YYYYMMDDnn 24h ; Refresh 2h ; Retry 28d ; Expire 2d ) ; Minimum TTL ;Name Servers @ IN NS dns-01 ;Other Servers dns-01 IN A 192.168.93.70 ;PTR Records 0 IN PTR dns-01 3 IN PTR mail-01 4 IN PTR web-01 EOF检查反向区域文件是否有任何可能的错误。
[root@dns-01 ~]# named-checkzone example.com /var/named/93.168.192.in-addr.arpa zone example.com/IN: loaded serial 2019080901 OK调整区域文件的文件所有权。
[root@dns-01 ~]# chgrp named /etc/named.conf.local [root@dns-01 ~]# chgrp named /var/named/example.com [root@dns-01 ~]# chgrp named /var/named/93.168.192.in-addr.arpa启用并启动named.service。
[root@dns-01 ~]# systemctl enable --now named.service Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.在 Linux 防火墙中允许DNS服务。
[root@dns-01 ~]# firewall-cmd --permanent --add-service=dns success [root@dns-01 ~]# firewall-cmd --reload success将主DNS 服务器添加到客户端的resolve.conf 中。
[root@dns-01 ~]# nmcli c m ens33 ipv4.dns-search example.com ipv4.dns 192.168.93.70重新启动界面以应用更改。
[root@dns-01 ~]# nmcli c down ens33 ; nmcli c up ens33 Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)验证 DNS 服务器设置。
[root@dns-01 ~]# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.93.70使用dig命令查询我们的主(主)DNS 服务器。
[root@dns-01 ~]# dig www.example.com ; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> www.example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63862 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; cookie: 8f0807a08d768c30be87bc2b61727936b17d2333020cdc40 (good) ;; QUESTION SECTION: ;www.example.com. IN A ;; ANSWER SECTION: www.example.com. 3600 IN CNAME web-01.example.com. web-01.example.com. 3600 IN A 192.168.93.74 ;; AUTHORITY SECTION: example.com. 3600 IN NS dns-01.example.com. ;; ADDITIonAL SECTION: dns-01.example.com. 3600 IN A 192.168.93.70 ;; Query time: 0 msec ;; SERVER: 192.168.93.70#53(192.168.93.70) ;; WHEN: Fri Oct 22 16:41:26 CST 2021 ;; MSG SIZE rcvd: 146我们的主DNS 服务器已经配置完成。
配置辅助DNS 服务器我们有一个工作的主DNS 服务器,现在要添加一个辅助DNS 服务器。使用ssh作为root用户连接到dns-02节点。
在辅助DNS 服务器上安装 BIND 9 软件包:
[root@dns-02 ~]# dnf install -y bind bind-utils配置辅助DNS 服务器的named.service设置。
[root@dns-02 ~]# vi /etc/named.conf在选项指令下设置以下参数。
listen-on port 53 { 127.0.0.1; 192.168.93.71; }; allow-query { localhost;192.168.93.0/24; };与主DNS 服务器配置相似,在单独的配置文件中定义我们的区域。
cat >/etc/named.conf.local<在默认配置文件named.conf文件中包含named.conf.local,以在服务启动时被调用。
[root@dns-02 ~]# echo 'include "/etc/named.conf.local";' >> /etc/named.conf启动并启用named.service。
[root@dns-02 ~]# systemctl enable --now named.service Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.在 Linux 防火墙中允许DNS服务。
[root@dns-02 ~]# firewall-cmd --permanent --add-service=dns success [root@dns-02 ~]# firewall-cmd --reload success设置SELinux布尔值,以便我们的辅助DNS 服务器可以接受区域传输并更新本地区域文件。
[root@dns-02 ~]# setsebool -P named_write_master_zones on现在,连接到dns-01节点并为我们的辅助DNS 服务器添加设置,
[root@dns-01 ~]# vi /etc/named.conf.local在named.conf.local文件追加以下两行来配置区域传输。
zone "example.com" { type master; file "/var/named/example.com"; allow-transfer {192.168.93.71; }; also-notify {192.168.93.71; }; }; zone "93.168.192.in-addr.arpa" { type master; file "/var/named/93.168.192.in-addr.arpa"; allow-transfer {192.168.93.71; }; also-notify {192.168.93.71; }; };在我们的正向和反向区域中添加我们的辅助DNS 服务器记录。
[root@dns-01 ~]# vi /var/named/example.com添加辅助DNS 服务器NS和A记录如下:
$TTL 1h @ IN SOA example.com. root.example.com. ( 2019080901 ; Serial YYYYMMDDnn 24h ; Refresh 2h ; Retry 28d ; Expire 2d ) ; Minimum TTL ;Name Servers @ IN NS dns-01 @ IN NS dns-02 ;Mail Servers @ IN MX 0 mail-01 ;Other Servers dns-01 IN A 192.168.93.70 dns-02 IN A 192.168.93.71 mail-01 IN A 192.168.93.73 web-01 IN A 192.168.93.74 ;Canonical Names www IN CNAME web-01 mail IN CNAME mail-01在反向区域中添加辅助DNS 服务器记录。
[root@dns-01 ~]# vi /var/named/93.168.192.in-addr.arpa添加我们的辅助DNS 服务器NS,A和PTR记录如下。
$TTL 1h @ IN SOA 93.168.192.in-addr.arpa root.example.com. ( 2019080901 ; Serial YYYYMMDDnn 24h ; Refresh 2h ; Retry 28d ; Expire 2d ) ; Minimum TTL ;Name Servers @ IN NS dns-01 @ IN NS dns-02 ;Other Servers dns-01 IN A 192.168.93.70 dns-02 IN A 192.168.93.71 ;PTR Records 0 IN PTR dns-01 1 IN PTR dns-02 3 IN PTR mail-01 4 IN PTR web-01重新启动named.service以应用更改。
[root@dns-01 ~]# systemctl restart named.service检查dns-02.example.com上的/etc/named目录。
[root@dns-02 ~]# ls /var/named 93.168.192.in-addr.arpa dynamic named.ca named.localhost slaves data example.com named.empty named.loopback区域文件会自动复制到辅助DNS 服务器。现在将此辅助 DNS 服务器添加到客户端的 resolve.conf 文件中。
[root@dns-01 ~]# nmcli c m ens33 +ipv4.dns 192.168.93.71 [root@dns-01 ~]# nmcli c down ens33 ; nmcli c up ens33 Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)检查resolv.conf内容。
[root@dns-01 ~]# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.93.70 nameserver 192.168.93.71通过查询主机名检查辅助DNS 服务器。
[root@dns-01 ~]# dig @192.168.93.71 mail.example.com ; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> @192.168.93.71 mail.example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15217 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; cookie: 2c3b1a687e6eb1dd1750d7ed61727d00b31d2a383dfc10cf (good) ;; QUESTION SECTION: ;mail.example.com. IN A ;; ANSWER SECTION: mail.example.com. 3600 IN CNAME mail-01.example.com. mail-01.example.com. 3600 IN A 192.168.93.73 ;; AUTHORITY SECTION: example.com. 3600 IN NS dns-01.example.com. ;; ADDITIonAL SECTION: dns-01.example.com. 3600 IN A 192.168.93.70 ;; Query time: 1 msec ;; SERVER: 192.168.93.71#53(192.168.93.71) ;; WHEN: Fri Oct 22 16:57:36 CST 2021 ;; MSG SIZE rcvd: 148辅助DNS 服务器已配置好并且运行良好。现在已经使用 BIND 9 成功配置了权威 DNS 服务器。
参考:https://www.centlinux.com/2019/08/configure-authoritative-dns-server-bind-centos-7.html



