继续学习如何在 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 服务器