Linux基于Bind9搭建dns服务器

Bind9简介

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<<EOF
zone "example.com" {
   type master;
   file "/var/named/example.com";
};

zone "93.168.192.in-addr.arpa" {
   type master;
   file "/var/named/93.168.192.in-addr.arpa";
};
EOF

我们在这里定义了两个 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<<EOF
zone "example.com" {
   type slave;
   masters { 192.168.93.70; };
   file "/var/named/example.com";
};

zone "93.168.192.in-addr.arpa" {
   type slave;
   masters { 192.168.93.70; };
   file "/var/named/93.168.192.in-addr.arpa";
};
EOF

在默认配置文件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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willops

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值