导言
本指南将引导您完成在CentOS 8 / RHEL 8 Linux上配置BIND DNS服务器所需的步骤 - 在CentOS 8 / RHEL 8上设置主/从绑定DNS设置。域名系统是用于连接到互联网或专用网络的计算机、服务或其他资源的分层和分散命名系统。(维基百科)它充当互联网的电话簿,因为它为每台计算机提供与它相关的FQDN的地址。
作为TCP/IP参考模型应用层的一部分,DNS在世界各地计算机的日常运行中非常重要。我们将在CentOS8上安装权威BIND DNS主机和Slave,并进行配置,例如添加PTR,A / AAAA记录等。
在 CentOS 8 / RHEL 8 上安装绑定 DNS 服务器
运行以下命令在 CentOS 8 / RHEL 8 Linux 服务器上安装绑定 DNS 服务器包。
$ sudo dnf -y install bind bind-utils vim
CentOS-8 - AppStream 1.3 kB/s | 4.3 kB 00:03
CentOS-8 - Base 1.2 kB/s | 3.9 kB 00:03
CentOS-8 - Extras 467 B/s | 1.5 kB 00:03
Dependencies resolved
在此设置中,我们将保持 SELinux 处于执行模式。
$ getenforce
Enforcing
THE REASON FOR THIS IS THAT (Source: RedHat)
SELinux helps mitigate the damage made by configuration mistakes. Domain Name System (DNS) servers often replicate information between each other in what is known as a zone transfer. Attackers can use zone transfers to update DNS servers with false information. When running the Berkeley Internet Name Domain (BIND) as a DNS server in Red Hat Enterprise Linux, even if an administrator forgets to limit which servers can perform a zone transfer, the default SELinux policy prevents zone files from being updated using zone transfers, by the BIND named daemon itself, and by other processes (Source: RedHat).
在 CentOS 8 / RHEL 8 上配置 BIND DNS 权威
让我们配置 BIND DNS 权威服务器。打开配置文件 /etc/named.conf。
我们的 DNS 服务器有以下设置。
- computingforgeeks.com Zone (域名)
- 192.168.154.0 – 托管子网
- 192.168.154.94 从属服务器的IP
- 192.168.154.88 – 主服务器的 IP
这里是 named.conf 配置文件。
$ sudo vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; }; ## Listen on any since it is an authoritative DNS Publicly available.
listen-on-v6 port 53 { any; }; ## You can also set the same for IPv6
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";
## Since this will be an authoritative Nameserver, allow query from any host
allow-query { any; };
allow-transfer {192.168.154.94; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface.
*/
recursion no; ## Following Advice from above
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ 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";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
## Set your ZONE details as shown below for different domains. Set the forward and reverse details. You can set the names of files as you like
zone "computingforgeeks.com" IN {
type master;
file "forward.db";
allow-update { none; };
};
## Make sure you follow the rule for reverse zone (154.168.192.in-addr.arpa). [If your IP is 192.168.10.10, It will be 10.168.192.in-addr.arpa]
zone "154.168.192.in-addr.arpa" IN {
type master;
file "reverse.db";
allow-update { none; };
};
主服务器 192.168.154.88.请注意,您的 IP 应该是公共的,因为这是权威 DNS 服务器。
创建区域文件
在 named.conf 中设置文件后,我们必须创建区域文件并放置您希望添加的所有记录,例如 A/AAAA、MX、PTR 等。在 /var/named/ 目录中创建文件
$ sudo vim /var/named/forward.db
$TTL 86400
@ IN SOA dns1.computingforgeeks.com. root.computingforgeeks.com. (
# You can use any numerical values for serial number but it is recommended to use [YYYYMMDDnn]
2019112201 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
# Set your Name Servers here
IN NS dns1.computingforgeeks.com.
IN NS dns2.computingforgeeks.com.
# define Name Server's IP address
IN A 192.168.154.88
# Set your Mail Exchanger (MX) Server here
IN MX 10 dns1.computingforgeeks.com.
# Set each IP address of a hostname. Sample A records.
dns1 IN A 192.168.154.88
dns2 IN A 192.168.154.94
mail1 IN A 192.168.154.97
为我们在 named.conf 配置文件中定义的相同域创建相应的反向记录。
$ sudo vim /var/named/reverse.db
$TTL 86400
@ IN SOA dns1.computingforgeeks.com. root.computingforgeeks.com. (
2019112201 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
# Set Name Server
IN NS dns1.computingforgeeks.com.
## Set each IP address of a hostname. Sample PTR records.
88 IN PTR dns1.computingforgeeks.com.
94 IN PTR dns2.computingforgeeks.com.
97 IN PTR mail1.computingforgeeks.com.
主服务器上的 DNS 设置
将我们的新 DNS 服务器作为默认名称服务器。打开文件 /etc/resolv.conf 并添加下面的行。确保更换 IP 以匹配您的环境。
$ sudo vim /etc/resolv.conf
nameserver 192.168.154.88
允许在防火墙上使用 dns 服务
配置防火墙以允许 dns 服务。
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload
检查您的配置是否还好,开始并启用绑定:
sudo named-checkconf
sudo systemctl start named
sudo systemctl enable named
我们使用 Master BIND DNS Server 完成。让我们继续配置我们的 Slave 服务器。
配置 Slave DNS Server – 192.168.154.94
在从服务器上,安装绑定和绑定-utils:
sudo dnf -y install bind bind-utils vim
配置 slave 服务器。打开/etc/named.conf 并相应编辑
$ sudo vim /etc/named.conf
//
// named.conf
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; ## Allows hosts to query Slave DNS
allow-transfer { none; }; ## Disable zone transfer
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
## Since this is a slave, lets allow recursion.
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
## Let us create zone definitions for both forward and reverse dns lookups.
# The files will be created automatically on the slave.
zone "computingforgeeks.com" IN {
type slave;
file "slaves/forward.db";
masters { 192.168.154.88; }; ## Master server it is receiving DNS Records from
};
zone "154.168.192.in-addr.arpa" IN {
type slave;
file "slaves/reverse.db";
masters { 192.168.154.88; }; ## Master server it is receiving DNS Records from
};
停止服务器上的 DNS 设置
将我们的新 DNS 服务器(主服务器和 Slave)作为默认名称服务器。打开文件 /etc/resolv.conf 并添加下面的行。确保更换 IP 以匹配您的环境
$ sudo vim /etc/resolv.conf
nameserver 192.168.154.88
nameserver 192.168.154.94
检查您的配置是否还好,开始并启用绑定:
sudo named-checkconf
sudo systemctl start named
sudo systemctl enable named
检查 /var/named/slaves 目录是 Zone 文件已从 master 传输
$ ll /var/named/slaves/
total 12
-rw-r--r-- 1 named named 480 Nov 23 14:16 computingforgeeks.forward
-rw-r--r-- 1 named named 492 Nov 23 14:45 computingforgeeks.reverse
证明我们的 DNS 有效
测试我们的 DNS 服务器是否解决。我们将使用 Windows 机器来测试我们的 BIND DNS Server。
更改窗口的网络详细信息,如下所示。让 DNS 反映您的新 DNS 服务器。
打开 PowerShell 或命令提示符,键入 nslookup 并测试我们的 DNS 服务。
我们的BIND DNS工作!如果您在 Linux 客户端计算机上执行操作,请编辑 /etc/hosts 文件以更改 DNS 配置设置。
结论
现在我们有我们的BIND DNS主站和Slave运行良好。我们希望指南是全面的,并对您有益。感谢您访问并继续到下面其他迷人的指南。