Server 系统 DNS 服务器搭建与域名解析配置
Linux 服务器 DNS 服务器搭建与域名解析配置实战指南
在企业级网络架构与私有云环境中,自建 DNS 服务器是实现内网域名统一管理、提升服务访问可靠性及增强网络安全控制的关键环节。本文将基于主流开源软件 BIND(Berkeley Internet Name Domain),以 CentOS Stream 9 或 Rocky Linux 9 系统为例,完整演示从环境准备、BIND 安装、主配置文件编写、正向/反向区域定义,到客户端验证的全流程操作。所有步骤均经实测验证,适用于生产环境基础部署需求。
一、环境准备与软件安装
首先确认系统已更新至最新状态,并安装 BIND 及其工具集。BIND 提供 named 主服务进程与 dig、nslookup 等诊断工具,二者缺一不可。
# 更新系统并安装 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 底层配置逻辑,不仅是运维能力的体现,更是构建自主可控数字基础设施的重要一步。

