如何在 Rocky Linux 9 上使用 BIND 安装 DNS 服务器如何在 Rocky Linux 9 上使用 BIND 安装 DNS 服务器如何在 Rocky Linux 9 上使用 BIND 安装 DNS 服务器如何在 Rocky Linux 9 上使用 BIND 安装 DNS 服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 9 上使用 BIND 安装 DNS 服务器

在此页

  1. 先决条件
  2. 准备系统
  3. 安装 BIND 包
  4. 配置主 BIND DNS 服务器
    1. 基本配置
    2. 设置区域

    BIND 或 Berkeley Internet Name Domain 是免费的开源 DNS 服务器软件。它是互联网上 70% 以上的 DNS 使用的最流行的 DNS 服务器软件之一。 BIND 自 1980 年代以来一直存在,以其灵活性、性能和功能而闻名。 BIND既可以作为权威DNS,也可以作为缓存DNS,支持负载均衡、动态更新、拆分DNS、DNSSEC、IPv6等。

    BIND DNS 软件是用于类 Unix 操作系统的最可靠的 DNS 服务器之一。它在大多数 Linux 发行版上可用,并提供用于诊断和测试 DNS 服务器的附加工具。

    本教程将向您展示如何在 Rocky Linux 9 服务器上使用 BIND 设置 DNS 服务器。 BIND 是最流行的 DNS 服务器软件之一,它提供各种功能,例如权威 DNS、仅缓存 DNS、基本 DNS 负载平衡、拆分 DNS、DNSSEC、IPv6 等等。

    先决条件

    通过本教程,您将设置和实施具有主从架构的 BIND DNS 服务器。因此,您将需要两台 Rocky Linux 服务器。此外,您还需要在每台服务器上拥有根/管理员权限。

    要设置可以处理您的域的公共 DNS 服务器(权威 DNS 服务器),您还必须注册域名并配置 Glue Records。

    此外,在本指南中,我们假设您的 SELinux 以宽容模式运行。

    准备系统

    要开始使用本指南,您将在每台 Rocky Linux 服务器上设置正确的 FQDN(完全限定域名)。这可以通过 hostnamectl 命令实用程序和 /etc/hosts 文件来完成。

    以下是将用作本指南示例的详细服务器:

    Hostname    IP Address          FQDN                    Used as
    ---------------------------------------------------------------
    ns1         192.168.5.100       ns1.hwdomain.io         Master
    ns2         192.168.5.120       ns2.hwdomain.io         Slave

    在主服务器上,运行以下 hostnamectl 命令实用程序将 fqdn 设置为 ns1.hwdomain.io。

    sudo hostnamectl set-hostname ns1.hwdomain.io

    下面还需要在 Slave 服务器上运行 hostnamectl 命令,将 fqdn 设置为 ns2.hwdomain.io。

    sudo hostnamectl set-hostname ns2.hwdomain.io

    接下来,使用以下 nano 编辑器命令在主服务器和从服务器上打开文件 /etc/hosts。

    sudo nano /etc/hosts

    将以下行添加到文件中。

    192.168.5.100   ns1.hwdomain.io     ns1
    192.168.5.120   ns2.hwdomain.io     ns2

    保存文件并在完成后退出编辑器。

    最后,运行以下主机名命令以验证每台服务器上的 fqdn。您应该会看到主服务器的 fqdn 为 ns1.hwdomain.io,从服务器的 fqdn 为 ns2.hwdomain.io。

    sudo hostname -f

    以下是主服务器的输出。

    下面是从属服务器的输出。

    配置好 fqdn 后,您就可以在 Rocky Linux 服务器上安装 BIND 了。

    安装 BIND 包

    默认情况下,Rocky Linux AppStream 存储库提供最新稳定版本的 BIND 包。在撰写本文时,BIND 的当前稳定版本是 v9.16。

    在此步骤中,您将在主服务器和从服务器上安装 BIND 包。然后将 BIND 设置为仅在 IPv4 上运行,并将 firewalld 配置为允许 DNS 端口。

    运行以下 dnf 命令将 BIND 包安装到主服务器和从服务器。当提示确认时,输入 y 确认并按 ENTER 继续。

    sudo dnf install bind bind-utils

    安装 BIND 包后,使用以下 nano 编辑器命令打开配置 /etc/sysconfig/named。

    sudo nano /etc/sysconfig/named

    使用以下行添加默认的 OPTIONS=..。 bind 或 named 的此命令选项将仅在 IPv4 上运行 BIND。

    OPTIONS="-4"

    完成后保存文件并退出编辑器。

    接下来,运行以下 systemctl 命令实用程序以启动并启用 BIND 服务 named。命名服务现在应该正在运行并启用,它将在启动时自动启动。

    sudo systemctl start named
    sudo systemctl enable named

    现在验证命名服务以确保该服务正在运行并通过以下命令启用。

    sudo systemctl is-enabled named
    sudo systemctl status named

    您将收到类似以下内容的输出 - BIND 命名服务已启用,并且当前正在运行。

    随着 BIND 命名服务的运行,您需要将 DNS 端口添加到 firewalld,它在 Rocky Linux 上默认启用并运行。

    运行以下 firewall-cmd 命令实用程序将 DNS 服务添加到 firewalld。然后重新加载 firewalld 以应用更改。

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

    如果您验证 firewalld 上启用的服务列表,您应该会看到 DNS 服务已启用。运行以下 firewall-cmd 命令来检查服务列表。

    sudo firewall-cmd --list-services

    输出:

    此时,您已经完成了 fqdn 配置,安装了 BIND 包,还配置了 firewalld。考虑到这一点,您现在可以开始在主服务器上配置 BIND Master。

    配置主 BIND DNS 服务器

    在此步骤中,您将使用 Rocky Linux ns1.hwdomain.io 设置 BIND Master 服务器,服务器 IP 地址为 192.168.5.100。确保在主服务器上运行以下命令。

    您将使用以下步骤配置 BIND 主服务器:

    • 基本配置将包括 ACL(访问控制列表)的配置、设置运行 BIND 服务的 IP 地址、设置转发器等等。
    • 设置区域 - 您可以在此处为您的域创建配置。这包括主域配置和反向 DNS 配置。

    基本配置

    基于 RHEL 的发行版的默认 BIND 配置位于 /etc/named.conf。

    现在使用下面的 nano 编辑器命令打开文件 /etc/named.conf。

    sudo nano /etc/named.conf

    使用以下行更改默认配置。

    acl "trusted" {
            192.168.5.100;    # ns1 - or you can use localhost for ns1
            192.168.5.120;    # ns2
            192.168.5.0/24;  # trusted networks
    };

    options {
            listen-on port 53 { 192.168.5.100; };

            // 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; trusted; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { localhost; 192.168.5.120; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    保存文件并在完成后退出编辑器。

    使用此配置,您将使用以下配置设置 BIND:

    • 设置一个受信任的 ACL,允许来自本地网络的任何查询。
    • 在 192.168.5.100 使用默认端口 53 运行 BIND 服务。
    • 启用递归并允许来自可信 ACL 网络的递归。
    • 允许区域传输到 IP 地址为 192.168.5.120 的从属服务器。
    • 使用 Cloudflare 的公共 DNS 服务器 1.1.1.1 和 Google 的 8.8.8.8 设置转发器。

    接下来,运行以下命令来验证 BIND 配置 /etc/named.conf。

    sudo named-checkconf /etc/named.conf

    最后,运行以下 systemctl 命令实用程序以重新启动 BIND 命名服务并应用更改。

    sudo systemctl restart named

    您现在已经完成了 BIND DNS 服务器的基本配置。

    设置区域

    现在您将使用 BIND DNS 服务器设置区域。您将使用地址 ns1.hwdomain.io 和 ns2.hwdomain.io 创建一个新的 DNS 服务器。

    首先,通过下面的 nano 编辑器命令打开 BIND 配置 /etc/named.conf。

    sudo nano /etc/named.conf

    将以下配置添加到该行的底部。

    include "/etc/named/zones.conf.local";

    保存文件并在完成后退出编辑器。

    接下来,使用下面的 nano 编辑器创建一个新配置 /etc/named/zones.conf.local。

    sudo nano /etc/named/zones.conf.local

    将以下行添加到文件中。

    zone "hwdomain.io" {
        type master;
        file "db.hwdomain.io";        # zone file path
        allow-transfer { 192.168.5.120; };           # ns2 IP address - secondary DNS
    };


    zone "5.168.192.in-addr.arpa" {
        type master;
        file "db.192.168.5";  # subnet 192.168.5.0/24
        allow-transfer { 192.168.5.120; };  # ns2 private IP address - secondary DNS
    };

    完成后保存并关闭文件。

    使用此配置,您将定义以下配置:

    • 为域 hwdomain.io 和反向 DNS 5.168.192.in-addr.arpa 创建两个区域。
    • 两个区域都类型为主。
    • 允许区域传输到将在服务器 IP 地址 192.168.5.120 上运行的从属 DNS 服务器。

    接下来,使用以下 nano 编辑器命令创建一个新的 DNS 区域配置,/var/named/db.hwdomain.io,。

    sudo nano /var/named/db.hwdomain.io

    将以下行添加到文件中。

    ;
    ; BIND data file for the local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                                  3         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;

    ; NS records for name servers
        IN      NS      ns1.hwdomain.io.
        IN      NS      ns2.hwdomain.io.

    ; A records for name servers
    ns1.hwdomain.io.          IN      A       192.168.5.100
    ns2.hwdomain.io.          IN      A       192.168.5.120

    ; Mail handler or MX record for the domain hwdomain.io
    hwdomain.io.    IN     MX   10   mail.hwdomain.io.

    ; A records for domain names
    hwdomain.io.            IN      A      192.168.5.50
    mail.hwdomain.io.       IN      A      192.168.5.15

    完成后保存并关闭文件。

    在此示例中,您将设置具有以下配置的区域:

    • 定义名称服务器记录 ns1.hwdomain.io 的 IP 地址为 192.168.5.100 和 ns2.hwdomain.io 的 IP 地址为 192.168.5.120。
    • 定义两个附加域 hwdomain.io,它们将解析为服务器 IP 地址 192.168.5.50,域 mail.hwdomain.io 将解析为 IP 地址 192.168.5.15。
    • 您还将为邮件服务器 mail.hwdomain.io 将处理的域 hwdomain.io 创建一个 MX 记录。

    接下来,您将开始为域 hwdomain.io 配置反向 DNS。

    使用以下 nano 编辑器命令创建新的反向 DNS 配置 /var/named/db.192.168.5。

    sudo nano /var/named/db.192.168.5

    将以下行添加到文件中。

    ;
    ; BIND reverse data file for the local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                                  3         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;

    ; name servers - NS records
          IN      NS      ns1.hwdomain.io.
          IN      NS      ns2.hwdomain.io.

    ; PTR Records
    100   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.100
    120   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.120
    50    IN      PTR     hwdomain.io.        ; 192.168.5.50
    15    IN      PTR     mail.hwdomain.io.   ; 192.168.5.15

    完成后保存并关闭文件。

    使用此配置,您将设置反向 DNS 或 PTR 记录,如下所示。

    • 在反向 DNS 配置中,您还将定义名称服务器 ns1.hwdomain.io 和 ns2.hwdomain.io。
    • 每个反向 DNS 配置都使用解析到每个域的 IP 地址的最后一个数字。在本例中,名称服务器 ns1.hwdomain.io 的 IP 地址为 192.168.5.100,PTR 记录应为 100。
    • 其余的 PTR 记录与上面描述的相同。

    此时,您已经为域 hwdomain.io 创建了两个区域配置,并创建了名称服务器 ns1.hwdomain.io 和 ns2.hwdomain.io。

    现在运行以下 chmod 命令来更改两个区域配置的所有权。

    sudo chown -R named: /var/named/{db.hwdomain.io,db.192.168.5}

    然后通过下面的 named-checkconf 命令实用程序验证区域配置文件。

    sudo named-checkconf
    sudo named-checkzone hwdomain.io /var/named/db.hwdomain.io
    sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

    如果您有正确的 BIND 配置,您将收到类似于以下屏幕截图的输出。

    最后,运行以下 systemctl 命令以重新启动 BIND 命名服务并应用更改。然后,验证 BIND 服务状态以确保该服务正在运行。

    sudo systemctl restart named
    sudo systemctl status named

    您将收到类似于以下内容的输出 - BIND named 服务正在运行并且您已完成 BIND Master 配置。

    在下一步中,您将设置 BIND 从属服务器。

    设置从 BIND DNS 服务器

    配置 DNS 主服务器后,您将开始在服务器 ns2.hwdomain.io 上配置 BIND 从服务器,IP 地址为 192.168.5.120。

    named.conf 的基本配置类似于 BIND 主服务器,对于区域文件,您可以定义文件名,而无需在 BIND 从服务器上创建实际文件。

    在开始之前,请确保在 BIND 从属服务器上运行以下命令。

    现在通过下面的 nano 编辑器命令在从属服务器上打开 BIND 配置 /etc/named.conf。

    sudo nano /etc/named.conf

    使用以下行更改默认配置。

    acl "trusted" {
            192.168.5.100;    # ns1 - or you can use localhost for ns1
            192.168.5.120;    # ns2
            192.168.5.0/24;  # trusted networks
    };

    options {
            listen-on port 53 { 192.168.5.120; };

            //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     { any; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { none; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    };

    设置与 BIND 主服务器类似,以下是配置上的一些差异。

    • BIND 服务将在从属服务器的 IP 地址 192.168.5.120 上运行。
    • 启用递归,但允许传输配置为无。

    现在将以下行添加到 named.conf 文件的底部以定义区域。

    include "/etc/named/zones.conf.local";

    保存文件并在完成后退出编辑器。

    接下来,使用以下 nano 编辑器命令创建一个新配置 /etc/named/zones.conf.local。

    sudo nano /etc/named/zones.conf.local

    将以下行添加到文件中。

    zone "hwdomain.io" {
        type slave;
        file "slaves/db.hwdomain.io";
        masters { 192.168.5.100; };           # ns1 IP address - master DNS
    };


    zone "5.168.192.in-addr.arpa" {
        type slave;
        file "slaves/db.192.168.5";
        masters { 192.168.5.100; };  # ns1 IP address - master DNS
    };

    完成后保存并关闭文件。

    这样,您将在 BIND 从服务器上定义以下一些配置:

    • 为域 hwdomain.io 及其反向 DNS 定义两个区域。
    • 两个区域类型都是从属的。
    • 每个的区域文件将从 /var/named/slaves 目录中获取,该目录是从 BIND 主服务器传输的。

    接下来,运行以下 named-checkconf 命令实用程序来验证 BIND 配置。然后,通过 systemctl 命令在从属服务器上重新启动 BIND 命名服务,如下所示。

    sudo named-checkconf
    sudo systemctl restart named

    如果您有正确的 BIND 配置,您将不会收到任何错误消息。

    最后,运行以下 systemctl 命令来验证从服务器上的 BIND named 服务,以确保该服务正在运行。

    sudo systemctl status named

    您现在将收到类似于以下内容的输出 - BIND 命名服务正在 BIND 从属服务器上运行。

    至此,你就完成了Master-Slave架构的BIND DNS安装。您现在可以从客户端机器开始测试了。

    客户测试

    此示例使用 Debian 系统作为客户端计算机,因此在开始之前通过 APT 安装下面的一些软件包。

    sudo apt install dnsutils bind9-utils

    在提示确认时输入 y,然后按 ENTER 继续。

    接下来,运行以下命令删除默认链接文件 \/etc/resolv.conf\ 并使用 nano 编辑器创建一个新文件。

    sudo unlink /etc/resolv.conf
    sudo nano /etc/resolv.conf

    将以下配置添加到文件中。在以下配置中,我们定义了三个不同的解析器,BIND DNS 主服务器、辅助 BIND DNS 服务器和公共 Cloudflare DNS 解析器。当客户机请求有关域名的信息时,该信息将从 DNS 解析器中获取,从上到下。

    nameserver 192.168.5.100
    nameserver 192.168.5.120
    nameserver 1.1.1.1
    search hwdomain.io

    完成后保存并关闭文件。

    现在您已准备好从客户端计算机验证您的 DNS 服务器。

    运行下面的 dig 命令查看域名“hwdomain.io”和“mail.hwdomain.io”。你应该看到 \hwdomain.io\ 被解析为服务器 IP 地址 \192.168.5.50\,而子域 \mail.hwdomain.io\ 由服务器 IP 地址\处理192.168.5.15\。

    dig hwdomain.io +short
    dig hwdomain.io
    dig mail.hwdomain.io +short
    dig mail.hwdomain.io

    验证域名 hwdomain.io。

    验证子域 mail.hwdomain.io。

    接下来,运行下面的 dig 命令来检查域名 \hwdomain.io\ 的邮件处理程序。你应该得到 \mail.hwdomain.io\ 是主域 \hwdomain.io\ 处理邮件的输出。

    dig hwdomain.io MX +short
    dig hwdomain.io MX

    您可以使用 nslookup 命令验证域名的反向区域配置。

    运行下面的 nslookup 命令来检查和验证某些 IP 地址的反向 DNS。

    现在你应该看到 IP 地址 \192.168.5.100\ 被反转为名称服务器 \ns1.hwdomain.io\,IP 地址\192.168.5.120\ 反向为名称服务器\ns2.hwdomain.io\,IP 地址为\192.168.5.50 \”反演为主域名“hwdomain.io\”,最后IP地址“192.168.5.15\”反演为子域名域 \mail.hwdomain.io。

    nslookup 192.168.5.100
    nslookup 192.168.5.120
    nslookup 192.168.5.50
    nslookup 192.168.5.15

    至此,你已经在 Rocky Linux 上完成了 Master-Slave 架构的 BIND DNS Server 安装。您还学习了如何通过各种命令实用程序(例如 dig 和 nslookup)测试 DNS 服务器。

    结论

    恭喜!通过本教程,您已经学习了在 Rocky Linux 9 服务器上安装和配置 BIND DNS 服务器。您已经使用两个不同的 Rocky Linux 服务器成功配置了主从 BIND DNS 服务器。此外,您还学习了用于检查和验证 DNS 记录和配置的 Dig 和 Nslookup 的基本命令。

©2015-2025 艾丽卡 support@alaica.com