如何在 CentOS 8 / RHEL 8 上配置 DNS (BIND) 服务器

域名系统 (DNS) 是一种分层分布式命名系统,用于连接到 Internet 或专用网络的计算机、服务或任何资源。 它将各种信息与分配给每个参与实体的域名相关联。

最重要的是,它将对人类有意义的域名转换为与网络设备相关的数字标识符,以便在全球范围内定位和寻址这些设备。

本指南将帮助您在 CentOS 8 / RHEL 8 上设置 DNS 服务器。

本文档也适用于 CentOS 7 Debian 10/9 Ubuntu 18.04 Ubuntu 16.04

假设

主机名: ns1.itzgeek.local

IP地址: 192.168.0.10

安装 DNS 服务器

BIND 代表 Berkeley Internet Name Domain,这是一种能够执行名称到 IP 转换的软件。

yum -y install bind bind-utils

配置 DNS 服务器

BIND的主要配置文件是 /etc/named.conf. 我们将使用此文件来配置 DNS 服务器并定义 DNS 区域。

默认情况下,BIND 侦听本地主机。 因此,我们将配置 DNS 服务器以侦听所有网络接口或特定接口。

编辑 /etc/named.conf 文件。

vi /etc/named.conf

注释掉以下行。 这将使 BIND 能够侦听本地主机以外的系统网络接口。

侦听所有 IP 地址:

//listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; };

侦听特定 IP 地址:

listen-on port 53 { 127.0.0.1; 192.168.0.10; };

在以下行中添加您的网络。 我添加了 192.168.0.0/24 以允许来自 192.168.0.0/24 网络的客户端查询 DNS 服务器的名称到 ip 转换。

allow-query     { localhost;192.168.0.0/24; };

创建区域

编辑 /etc/named.conf 文件。

vi /etc/named.conf

前进区

以下是前向区域条目 命名文件 文件,为 itzgeek.local 域。

zone "itzgeek.local" IN { // Domain Name                        type master;  // Master DNS Server             file "itzgeek.local.db";  // Zone File (/var/named/)             allow-update { none; };  // Since master DNS, it is none  };

itzgeek.local – 域名
掌握 – 主DNS
itzgeek.local.db – 正向查找文件
允许更新 – 由于这是主DNS,因此应该是none

反向区域

以下是反向区域入口 命名文件 文件。

zone "0.168.192.in-addr.arpa" IN { // Reverse Zone Name, should match with network in reverse order                            type master;  // Master DNS Server                            file "192.168.0.db";  // Zone File (/var/named/)                             allow-update { none; }; // Since master DNS, it is none   };

0.168.192.in-addr.arpa – 反向查找名称
掌握 – 主DNS
192.168.0.db – 反向查找文件
允许更新 – 由于这是主DNS,因此应该是none

创建区域文件

现在,是时候为创建的区域创建查找文件了。 默认情况下,区域查找文件放在 /var/命名 目录。 创建一个名为的区域文件 itzgeek.local.db 用于前向查找 /var/命名 目录。

所有域名都应以点 (.) 结尾。

前进区

区域文件有一些特殊的关键字

创建一个文件。

vi /var/named/itzgeek.local.db

一种 – 一个记录
NS – 名称服务器
MX – 邮件交换
别名 – 规范名称

$TTL 86400 @   IN  SOA     ns1.itzgeek.local. root.itzgeek.local. (                                               3           ;Serial                                               3600        ;Refresh                                               1800        ;Retry                                               604800      ;Expire                                               86400       ;Minimum TTL )  ;Name Server Information @       IN  NS      ns1.itzgeek.local.  ;IP address of Name Server ns1       IN  A       192.168.0.10  ;Mail exchanger itzgeek.local. IN  MX 10   mail.itzgeek.local.  ;A - Record HostName To Ip Address www     IN  A       192.168.0.100 mail    IN  A       192.168.0.150  ;CNAME record ftp     IN CNAME        www.itgeek.local.

每当您更新 DNS 记录更新的区域文件时,不要忘记增加序列号。

反向区域

创建一个名为的区域文件 192.168.0.db 对于下方的反向区域 /var/命名 目录,创建一个指向上述正向区域条目的反向指针。

vi /var/named/192.168.0.db

PTR – 指针
SOA – 授权开始

$TTL 86400 @   IN  SOA     ns1.itzgeek.local. root.itzgeek.local. (                                        3           ;Serial                                        3600        ;Refresh                                        1800        ;Retry                                        604800      ;Expire                                        86400       ;Minimum TTL )  ;Name Server Information @         IN      NS         ns1.itzgeek.local.  ;Reverse lookup for Name Server 10        IN  PTR     ns1.itzgeek.local.  ;PTR Record IP address to HostName 100      IN  PTR     www.itzgeek.local. 150      IN  PTR     mail.itzgeek.local.

每当您更新 DNS 记录更新的区域文件时,不要忘记增加序列号。

验证 DNS 服务器配置

命名检查配置 命令来验证配置文件。

named-checkconf /etc/named.conf

如果您没有看到任何错误,那么您就可以开始了。

使用以下命令验证您创建的转发区域文件。

named-checkzone itzgeek.local /var/named/itzgeek.local.db

itzgeek.local – 域名

/var/named/itzgeek.local.db – 区域文件的路径

输出:

zone itzgeek.local/IN: loaded serial 3 OK

输出中提到的序列号应与区域文件中的序列号匹配。

对反向区域也执行相同的操作。

named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.db

输出:

zone 0.168.192.in-addr.arpa/IN: loaded serial 3 OK

启动 DNS 服务

验证 DNS 配置后,重新启动绑定服务。

systemctl restart named

在系统启动时启用它。

systemctl enable named

DNS 记录更新

无论何时更改 DNS 记录,请不要忘记更改区域文件中的序列号并重新加载区域。

使用您的区域名称更改 itzgeek.local 和 0.168.192.in-addr.arpa。

### Forward Zone ###  rndc reload itzgeek.local  ### Reverse Zone ###  rndc reload 0.168.192.in-addr.arpa 

防火墙

添加防火墙规则以允许来自客户端计算机的 DNS 查询。

firewall-cmd --permanent --add-port=53/udp  firewall-cmd --reload

验证 DNS 服务器

访问任何客户端机器并在其中添加 DNS 服务器的 IP 地址 /etc/resolv.conf 如果网络管理器不管理网络。

nameserver 192.168.0.10

如果网络管理器管理网络,则将以下条目放入 /etc/sysconfig/network-scripts/ifcfg-eXX 文件。

DNS1=192.168.0.10

重启网络服务。

service network restart  OR  systemctl restart NetworkManager

使用以下命令验证正向查找,其中 DNS 服务器为 www.itzgeek.local 提供 192.168.0.100 作为 IP.

dig www.itzgeek.local

输出:

; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42679 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 99d94df91828bc8e957709ec5e13f9cd0c242970a9488a91 (good) ;; QUESTION SECTION: ;www.itzgeek.local.             IN      A  ;; ANSWER SECTION: www.itzgeek.local.      86400   IN      A       192.168.0.100  ;; AUTHORITY SECTION: itzgeek.local.          86400   IN      NS      ns1.itzgeek.local.  ;; ADDITIONAL SECTION: ns1.itzgeek.local.      86400   IN      A       192.168.0.10  ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:53:56 IST 2020 ;; MSG SIZE  rcvd: 124 

安装 绑定工具 包以获取 nslookup 或 dig 命令。

确认反向查找,其中 DNS 服务器将 www.itzgeek.local 作为 192.168.0.100 的名称. 现在确认正向和反向查找都工作正常。

dig -x 192.168.0.100

输出:

; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43305 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d36aa24edb88f8951b3fbf8c5e13fa2cbf0e3ed754a00eee (good) ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa.    IN      PTR  ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN    PTR     www.itzgeek.local.  ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400   IN      NS      ns1.itzgeek.local.  ;; ADDITIONAL SECTION: ns1.itzgeek.local.      86400   IN      A       192.168.0.10  ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:55:30 IST 2020 ;; MSG SIZE  rcvd: 148

结论

就这样。 您已在 CentOS 8 / RHEL 8 上成功安装 BIND 作为主服务器。 在我们的下一篇文章中,我们将看到如何在 CentOS 8 / RHEL 8 上配置从属 DNS 服务器。