在 Rocky Linux 8 上安装和设置 BIND DNS 服务器

继续学习如何在 Rocky Linux 8 上安装和设置 BIND DNS 服务器。

包如 绑定, 域名, 和 未绑定 可以配置为用作 DNS 名称服务器。 在本教程中,我们将使用 BIND 包来配置我们的本地 DNS 服务器。 绑定, 伯克利互联网域名, 是一种开源软件,用于实现 DNS 协议,该协议定义了联网设备如何根据主机名相互定位。

在 Rocky Linux 8 上安装和设置 BIND DNS 服务器

在本教程中,我们将使用配置如下的三台 Rocky Linux 8 服务器:

  • 服务器 1
    • 主机名: ns1.kifarunix-demo.com
    • IP地址: 192.168.60.19
    • 角色: Master DNS server
  • 服务器2
    • 主机名: client.kifarunix-demo.com
    • IP地址: 192.168.60.18
    • 角色: client server

在 Rocky Linux 8 上安装 BIND 和 BIND 实用程序

运行下面的命令来安装 BIND 和所需的实用程序;

dnf install -y bind bind-utils

在 Rocky Linux 8 上设置 BIND DNS 服务器

BIND的主要配置文件是 /etc/named.conf.

您需要打开此文件并进行一些配置调整以设置您的 DNS 服务器。

vim /etc/named.conf

定义 BIND 访问控制列表

BIND ACL 使您可以更好地控制谁可以访问名称服务器,从而有助于防止对服务器的欺骗和拒绝服务 (DoS) 攻击。

因此,创建一个名为的访问控制列表 允许 包含主机的 IP 地址之前允许的 选项 配置文件中的配置部分。

在下面的示例配置中,我们只允许网络中的主机, 192.168.60.0/24 使用我们的 DNS 服务器。

# Create an access control list called allowed  acl "allowed" {         192.168.60.0/24; }; ...

定义全局 BIND 选项

options 语句设置 BIND 使用的全局选项。

我们只会对默认选项语句进行一些更改;

  • 指定 BIND DNS 服务器非环回 IP 在 listen-on 线。
  • 指定允许查询 DNS 服务器的主机,由上的 ACL 语句定义 allow-query 线。
options {         listen-on port 53 { 127.0.0.1; 192.168.60.19; };         listen-on-v6 port 53 { ::1; };         directory   "/var/named";         dump-file   "/var/named/data/cache_dump.db";         statistics-file "/var/named/data/named_stats.txt";         memstatistics-file "/var/named/data/named_mem_stats.txt";         allow-query     { localhost; allowed; }; ...

定义 BIND DNS 区域语句

创建 Forward zone 语句,可用于将域名解析为 IP 地址(正向查找区域)。

# Zone statement for forward DNS lookup zone "kifarunix-demo.com" IN {         type master;                           # type of zone         file "/var/named/forward.kifarunix-demo.com"; # location of forward zone file         allow-update { none; }; }; ... 

创建 BIND 反向 DNS 区域语句,该语句定义如何将 IP 地址解析为其主机名(反向查找区域)。

# Zone statement for reverse DNS lookup zone    "60.168.192.in-addr.arpa" IN {         type master;                             file "/var/named/reverse.kifarunix-demo.com"; # location of reverse zone file         allow-update { none; }; };

之后,保存配置文件并退出。

这就是我们的配置文件的样子,删除了注释行和空白行/空格!

acl "allowed" {         192.168.60.0/24; };  options { 	listen-on port 53 { 127.0.0.1; 192.168.60.19; }; 	listen-on-v6 port 53 { ::1; }; 	directory 	"/var/named"; 	dump-file 	"/var/named/data/cache_dump.db"; 	statistics-file "/var/named/data/named_stats.txt"; 	memstatistics-file "/var/named/data/named_mem_stats.txt"; 	secroots-file	"/var/named/data/named.secroots"; 	recursing-file	"/var/named/data/named.recursing"; 	allow-query     { localhost; allowed; };  	recursion yes; 	dnssec-enable yes; 	dnssec-validation yes; 	managed-keys-directory "/var/named/dynamic"; 	pid-file "/run/named/named.pid"; 	session-keyfile "/run/named/session.key"; 	include "/etc/crypto-policies/back-ends/bind.config"; }; logging {         channel default_debug {                 file "data/named.run";                 severity dynamic;         }; }; zone "." IN { 	type hint; 	file "named.ca"; }; zone "kifarunix-demo.com" IN {         type master;                           # type of zone         file "/var/named/forward.kifarunix-demo.com"; # location of forward zone file         allow-update { none; }; }; zone    "60.168.192.in-addr.arpa" IN {         type master;                             file "/var/named/reverse.kifarunix-demo.com"; # location of reverse zone file         allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; 

创建 BIND DNS 区域文件

区域文件定义了各种类型的资源记录。

为前向和反向区域语句创建区域文件 /etc/named.conf

创建转发区域文件

如区域声明中指定的那样 /etc/named.conf 文件,转发区域文件位于 /var/named/forward.kifarunix-demo.com.

创建这个文件并配置如下;

cat > /var/named/forward.kifarunix-demo.com << 'EOL' $ORIGIN kifarunix-demo.com. $TTL 86400 @   IN  SOA ns1.kifarunix-demo.com. admin.kifarunix-demo.com. (         2021062301   ; serial         3600         ; refresh         1800         ; retry         604800       ; expire         86400 )      ; minimum TTL ; ; define nameservers     IN  NS  ns1.kifarunix-demo.com. ; ; DNS Server IP addresses and hostnames ns1 IN  A   192.168.60.19 ; ;client records client IN  A   192.168.60.18 EOL 

创建反向区域文件.

cat > /var/named/reverse.kifarunix-demo.com << 'EOL' $ORIGIN 60.168.192.in-addr.arpa. $TTL    86400 @   IN  SOA  ns1.kifarunix-demo.com. admin.kifarunix-demo.com. (         2021062302  ; serial         3600        ; refresh         1800        ; retry         604800      ; expire         86400 )     ; minimum TTL ; ;nameservers     IN  NS  ns1.kifarunix-demo.com. ; ;nameserver IP addresses     IN  A   192.168.60.19 ; ; client IP Address     IN  A   192.168.60.18 ; nameserver PTR records 19  IN  PTR ns1.kifarunix-demo.com. ; ; client PTR records 18  IN  PTR client.kifarunix-demo.com. EOL 

验证 BIND 配置语法

在开始 BIND 之前,即 命名服务, 使用以下命令检查配置文件中没有语法错误;

named-checkconf

如果配置文件没有错误,则该命令将不返回任何内容,退出状态为 0。

要验证转发区域文件的语法,请运行以下命令;

named-checkzone kifarunix-demo.com /var/named/forward.kifarunix-demo.com

样本输出;

zone kifarunix-demo.com/IN: loaded serial 2021062301 OK

要验证反向区域文件的语法,请运行该命令。

named-checkzone 60.168.192.in-addr.arpa /var/named/reverse.kifarunix-demo.com
zone 60.168.192.in-addr.arpa/IN: loaded serial 2021062302 OK

如果没有错误,请启动 BIND 并使其在引导时启动。

systemctl enable --now named

如果防火墙正在运行,请通过它启用 DNS 服务并重新加载防火墙。

firewall-cmd --add-service=dns --permanent;firewall-cmd --reload 

验证 BIND DNS 服务器解析

修改DNS服务器的DNS服务器为自己的IP /etc/resolv.conf 文件并添加名称服务器 IP 地址

echo "nameserver 192.168.60.19"  >  /etc/resolv.conf 

更改网络接口上的 dns 服务器详细信息。 我的网络接口是 enp0s8。

ip add
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1/128 scope host         valid_lft forever preferred_lft forever 2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000     link/ether 08:00:27:3e:fe:0e brd ff:ff:ff:ff:ff:ff     inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3        valid_lft 58976sec preferred_lft 58976sec     inet6 fe80::689b:622:1eaf:287a/64 scope link noprefixroute         valid_lft forever preferred_lft forever 3: enp0s8:  mtu 1500 qdisc fq_codel state UP group default qlen 1000     link/ether 08:00:27:02:b9:8c brd ff:ff:ff:ff:ff:ff     inet 192.168.60.19/24 brd 192.168.60.255 scope global dynamic noprefixroute enp0s8        valid_lft 473sec preferred_lft 473sec     inet6 fe80::301d:abeb:ad8b:6c56/64 scope link noprefixroute         valid_lft forever preferred_lft forever ,multicast,up,lower_up>,multicast,up,lower_up>,up,lower_up>

更新DNS;

nmcli con mod enp0s8 ipv4.dns 192.168.60.19
nmcli con down enp0s8; nmcli con up enp0s8

之后,测试以检查是否正在解析主机名或 IP 地址。

要检查名称解析:

dig ns1.kifarunix-demo.com

样本输出;

; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> ns1.kifarunix-demo.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25000 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 7086456c0747f91d9a6baf9160d379d78db89f52c45e867f (good) ;; QUESTION SECTION: ;ns1.kifarunix-demo.com.		IN	A  ;; ANSWER SECTION: ns1.kifarunix-demo.com.	86400	IN	A	192.168.60.19  ;; AUTHORITY SECTION: kifarunix-demo.com.	86400	IN	NS	ns1.kifarunix-demo.com.  ;; Query time: 0 msec ;; SERVER: 192.168.60.19#53(192.168.60.19) ;; WHEN: Wed Jun 23 21:13:43 EAT 2021 ;; MSG SIZE  rcvd: 109 

检查反向 DNS 解析;

dig -x 192.168.60.19
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> -x 192.168.60.19 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 6772 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: be2acb0f5766be389b24d55260d37a3f1c3c8466a7248483 (good) ;; QUESTION SECTION: ;19.60.168.192.in-addr.arpa.	IN	PTR  ;; AUTHORITY SECTION: 60.168.192.in-addr.arpa. 86400	IN	SOA	ns1.kifarunix-demo.com. admin.kifarunix-demo.com. 2021062302 3600 1800 604800 86400  ;; Query time: 0 msec ;; SERVER: 192.168.60.19#53(192.168.60.19) ;; WHEN: Wed Jun 23 21:15:27 EAT 2021 ;; MSG SIZE  rcvd: 146 

为 BIND DNS 解析配置客户端

更新 DNS 设置

登录客户端并编辑 /etc/resolv.conf 文件。

设置 DNS 服务器 IP 地址。

echo -e "search kifarunix-demo.comnnameserver 192.168.60.19" > /etc/resolv.conf

在 CentOS 上安装 BIND Utils/Tools

在基于 CentOS/RHEL 的衍生产品上安装 BIND 工具;

dnf install bind-utils

在 Ubuntu 上安装 BIND Utils

apt install dnsutils

验证 DNS 正向查找;

nslookup client
Server:		192.168.60.19 Address:	192.168.60.19#53  Name:	client.kifarunix-demo.com Address: 192.168.60.18

验证 DNS 反向查找

nslookup 192.168.60.18

样本输出;

18.60.168.192.in-addr.arpa	name = client.kifarunix-demo.com.

太棒了,您的本地 DNS 服务器现已设置并运行。 这标志着我们在 Rocky Linux 8 上安装和设置 BIND DNS 服务器的指南结束。

其他 Rocky Linux 教程

在 Rocky Linux 8 上安装 Nagios 插件

在 Rocky Linux 8 上安装 Nagios 服务器

在 Rocky Linux 8 上安装 Google Chrome

在 Rocky Linux 8 上安装 VNC 服务器