Server 系统 DNS 服务器搭建与域名解析配置

2026-03-21 21:15:41 328阅读

Linux 服务器 DNS 服务器搭建与域名解析配置实战指南

在企业级网络架构与私有云环境中,自建 DNS 服务器是实现内网域名统一管理、提升服务访问可靠性及增强网络安全控制的关键环节。本文将基于主流开源软件 BIND(Berkeley Internet Name Domain),以 CentOS Stream 9 或 Rocky Linux 9 系统为例,完整演示从环境准备、BIND 安装、主配置文件编写、正向/反向区域定义,到客户端验证的全流程操作。所有步骤均经实测验证,适用于生产环境基础部署需求。

一、环境准备与软件安装

首先确认系统已更新至最新状态,并安装 BIND 及其工具集。BIND 提供 named 主服务进程与 dignslookup 等诊断工具,二者缺一不可。

# 更新系统并安装 BIND 相关组件
sudo dnf update -y
sudo dnf install -y bind bind-utils bind-chroot

安装完成后,检查服务状态并禁用防火墙临时干扰(生产环境应按需开放端口 53/TCP+UDP):

# 启动并启用 named 服务
sudo systemctl enable named
sudo systemctl start named
sudo systemctl status named

二、核心配置文件结构说明

BIND 的主配置文件位于 /etc/named.conf,其结构包含全局选项、日志设置、区域声明三大部分。为保障安全,建议启用 recursion no(禁用递归查询)并限制允许查询的客户端网段。

# 编辑主配置文件
sudo nano /etc/named.conf

关键配置节示例如下(请替换 192.168.10.0/24 为实际内网网段):

options {
    listen-on port 53 { 127.0.0.1; 192.168.10.10; };  # 绑定本机IP,禁止0.0.0.0
    allow-query     { localhost; 192.168.10.0/24; };   # 仅允许可信客户端查询
    recursion       no;                                # 关闭递归,专注权威解析
    dnssec-enable   no;                                # 内网可暂不启用DNSSEC
    dnssec-validation no;
};

logging {
    channel default_log {
        file "/var/log/named/named.log" size 10m;
        severity info;
        print-time yes;
    };
    category default { default_log; };
};

# 区域定义将在下方单独声明

注意:192.168.10.10 为当前 DNS 服务器自身 IP,需与实际一致;/var/log/named/ 目录需提前创建并赋权。

三、正向解析区域配置(域名 → IP)

以私有域 example.local 为例,创建正向解析文件 /var/named/example.local.zone

sudo mkdir -p /var/named
sudo nano /var/named/example.local.zone

内容如下(SOA 记录中序列号格式为 YYYYMMDDNN,每次修改后需递增):

$TTL 86400
@       IN SOA  ns1.example.local. admin.example.local. (
                    2024052001  ; 序列号(年月日+序号)
                    3600        ; 刷新时间(秒)
                    1800        ; 重试时间
                    604800      ; 过期时间
                    86400 )     ; 最小TTL

        IN NS   ns1.example.local.
ns1     IN A    192.168.10.10
www     IN A    192.168.10.100
mail    IN A    192.168.10.101
ftp     IN A    192.168.10.102

随后在 /etc/named.conf 末尾添加该区域声明:

zone "example.local" IN {
    type master;
    file "example.local.zone";
    allow-transfer { none; };  # 禁止区域传输,增强安全
};

四、反向解析区域配置(IP → 域名)

192.168.10.0/24 网段配置反向解析,文件路径为 /var/named/10.168.192.in-addr.arpa.zone

sudo nano /var/named/10.168.192.in-addr.arpa.zone

内容如下(注意 PTR 记录中的主机名须带结尾点,表示绝对域名):

$TTL 86400
@       IN SOA  ns1.example.local. admin.example.local. (
                    2024052001
                    3600
                    1800
                    604800
                    86400 )

        IN NS   ns1.example.local.
10      IN PTR  ns1.example.local.
100     IN PTR  www.example.local.
101     IN PTR  mail.example.local.
102     IN PTR  ftp.example.local.

对应添加反向区域声明至 /etc/named.conf

zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "10.168.192.in-addr.arpa.zone";
    allow-transfer { none; };
};

五、权限设置与服务重启

确保区域文件属主为 named,且 SELinux 上下文正确(若启用):

sudo chown root:named /var/named/example.local.zone
sudo chown root:named /var/named/10.168.192.in-addr.arpa.zone
sudo chmod 644 /var/named/*.zone
sudo restorecon -v /var/named/*.zone

语法检查与服务重载:

# 检查配置语法
sudo named-checkconf
sudo named-checkzone example.local /var/named/example.local.zone
sudo named-checkzone 10.168.192.in-addr.arpa /var/named/10.168.192.in-addr.arpa.zone

# 无错误后重载服务
sudo systemctl reload named

六、客户端验证与故障排查

在任意内网客户端(如另一台 Linux 主机)上修改 /etc/resolv.conf

nameserver 192.168.10.10

执行以下命令验证解析效果:

# 正向查询
dig www.example.local @192.168.10.10 +short
# 应返回:192.168.10.100

# 反向查询
dig -x 192.168.10.100 @192.168.10.10 +short
# 应返回:www.example.local.

# 全局生效验证(需确保 resolv.conf 已配置)
nslookup mail.example.local

若解析失败,优先检查:

  • systemctl status named 是否运行正常;
  • /var/log/named/named.log 中的报错信息;
  • 防火墙是否拦截 UDP 53 端口;
  • 区域文件路径与 named.conf 中声明是否完全一致(含大小写)。

通过以上六步,您已在 Linux 服务器上成功构建一套稳定、安全、可维护的权威 DNS 解析服务。该方案支持灵活扩展子域、批量主机映射及精细化访问控制,为后续部署内部 Web 服务、邮件系统或容器平台提供坚实基础。掌握 DNS 底层配置逻辑,不仅是运维能力的体现,更是构建自主可控数字基础设施的重要一步。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。

目录[+]