Rocky Linux 9 配置 DNS 主辅服务器

1. 环境准备

主服务器(Master):IP 地址为 192.168.1.10,域名为 example.com。

从服务器(Slave):IP 地址为 192.168.1.20,域名为 example.com。

确保两台服务器都已安装 Rocky Linux 9,并且网络互通。

2. 在主服务器上配置 BIND


2.1 安装 BIND


在主服务器上安装 BIND:

sudo dnf install bind bind-utils -y

2.2 配置主服务器


编辑 BIND 的主配置文件 /etc/named.conf:

sudo vi /etc/named.conf

修改 options 部分,确保允许从服务器传输区域文件:

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.10; };  # 监听地址
    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; 192.168.1.0/24; };  # 允许查询的客户端
    allow-transfer  { 192.168.1.20; };  # 允许从服务器传输区域文件
    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";
};

在文件末尾添加区域配置:

zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-transfer { 192.168.1.20; };  # 允许从服务器传输区域文件
};

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.1.zone";
    allow-transfer { 192.168.1.20; };  # 允许从服务器传输区域文件
};

2.3 创建区域文件


在 /var/named/ 目录下创建区域文件。

正向区域文件 (example.com.zone):

sudo vi /var/named/example.com.zone

内容如下:

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023101001 ; Serial
                        3600       ; Refresh
                        1800       ; Retry
                        1209600    ; Expire
                        86400 )    ; Minimum TTL

@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.
ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.20
www     IN      A       192.168.1.100
mail    IN      A       192.168.1.200

反向区域文件 (192.168.1.zone):

sudo vi /var/named/192.168.1.zone

内容如下:

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023101001 ; Serial
                        3600       ; Refresh
                        1800       ; Retry
                        1209600    ; Expire
                        86400 )    ; Minimum TTL

@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.
10      IN      PTR     ns1.example.com.
20      IN      PTR     ns2.example.com.
100     IN      PTR     www.example.com.
200     IN      PTR     mail.example.com.

2.4 设置文件权限


确保 BIND 可以读取这些文件:

sudo chown root:named /var/named/example.com.zone
sudo chown root:named /var/named/192.168.1.zone
sudo chmod 640 /var/named/example.com.zone
sudo chmod 640 /var/named/192.168.1.zone

3. 在从服务器上配置 BIND


3.1 安装 BIND


在从服务器上安装 BIND:

sudo dnf install bind bind-utils -y

3.2 配置从服务器


编辑 BIND 的主配置文件 /etc/named.conf:

sudo vi /etc/named.conf

修改 options 部分:

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.20; };  # 监听地址
    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; 192.168.1.0/24; };  # 允许查询的客户端
    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";
};

在文件末尾添加区域配置:

zone "example.com" IN {
    type slave;
    file "slaves/example.com.zone";
    masters { 192.168.1.10; };  # 主服务器 IP
};

zone "1.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/192.168.1.zone";
    masters { 192.168.1.10; };  # 主服务器 IP
};

3.3 设置文件权限


确保 BIND 可以写入 /var/named/slaves/ 目录:

sudo chown named:named /var/named/slaves

3.4 启动并启用 BIND 服务


启动 BIND 服务并设置为开机自启:

sudo systemctl start named
sudo systemctl enable named

4. 测试主从同步


在从服务器上检查区域文件是否已同步:

ls /var/named/slaves/

如果看到 example.com.zone 和 192.168.1.zone,说明同步成功。

5. 配置防火墙


在主从服务器上允许 DNS 服务通过防火墙:

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

6. 测试 DNS 解析


使用 dig 或 nslookup 测试 DNS 解析:

dig @192.168.1.10 www.example.com
dig @192.168.1.20 www.example.com

如果主从服务器都能返回正确结果,说明配置成功。

通过以上步骤,你已经在 Rocky Linux 9 上成功配置了 DNS 主从服务器。主服务器负责管理区域文件,从服务器自动同步区域文件并提供冗余服务。