安装bindutils和named,编辑/etc/named.conf配置主配,添加正向/反向zone,firewallcmd开放5
CentOS架设DNS服务器详细指南
环境准备
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | CentOS 7/8 |
| 内存 | ≥512MB |
| 存储空间 | ≥200MB(用于存储区域文件) |
| 网络环境 | 公网IP或内网固定IP |
软件选择
| 软件组件 | 版本说明 |
|---|---|
| BIND | 11+(CentOS默认版本) |
| firewalld | 系统自带防火墙管理工具 |
安装BIND服务
安装基础软件包
yum install y bind bindutils
验证安装结果
named v # 输出示例:BIND 9.11.4RedHat9.11.43.Pkg.el7_9.x86_64
配置文件详解
主配置文件路径
| 文件路径 | 说明 |
|---|---|
/etc/named.conf |
主配置文件 |
/etc/named/ |
区域配置文件存放目录 |
/var/named/ |
区域文件和日志文件存放目录 |
named.conf核心配置
options {
listenon port 53 { any; }; # 监听所有接口的53端口
directory "/var/named"; # 数据文件存放路径
dumpfile "/var/named/data/cache_dump.db"; # 缓存转储文件
statisticsfile "/var/named/data/named_stats.txt"; # 统计文件
recursion yes; # 启用递归查询
allowquery { any; }; # 允许所有客户端查询
};
配置正向解析区域
创建区域配置文件
cd /etc/named/ vim example.com.zone # 创建新区域文件
区域文件内容示例
$TTL 86400 ; 默认生存时间(1天)
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; 序列号
3600 ; 刷新时间(1小时)
1800 ; 重试间隔(30分钟)
1209600 ; 过期时间(2周)
86400 ) ; 最小生存时间(1天)
IN NS ns1.example.com.
IN NS ns2.example.com.
ns1 IN A 192.168.1.1 ; 主DNS服务器IP
ns2 IN A 192.168.1.2 ; 备用DNS服务器IP
www IN A 192.168.1.100 ; 主机记录
mail IN A 192.168.1.101 ; 邮件服务器记录
修改主配置文件引用
在named.conf中添加:
zone "example.com" IN {
type master;
file "example.com.zone";
allowupdate { none; };
};
配置反向解析区域
创建反向区域文件
vim 1.168.192.inaddr.arpa.zone
反向区域文件内容示例
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; 序列号
3600 ; 刷新时间
1800 ; 重试间隔
1209600 ; 过期时间
86400 ) ; 最小生存时间
IN NS ns1.example.com.
IN NS ns2.example.com.
1 IN PTR ns1.example.com. ; IP对应主机名映射
2 IN PTR ns2.example.com.
100 IN PTR www.example.com.
101 IN PTR mail.example.com.
修改主配置文件引用
在named.conf中添加:

zone "1.168.192.inaddr.arpa" IN {
type master;
file "1.168.192.inaddr.arpa.zone";
allowupdate { none; };
};
安全策略配置
限制可查询网段
修改named.conf中的allowquery配置:
allowquery { 192.168.1.0/24; 127.0.0.1; } ; 仅允许内网和本地回环地址查询
配置访问控制列表(ACL)
acl "trusted" {
192.168.1.0/24;
localhost;
};
options {
allowquery { trusted; };
};
防火墙配置
开放DNS服务端口
firewallcmd permanent addservice=dns firewallcmd reload
验证端口状态
firewallcmd listall | grep dns # 输出示例:services: dns
服务管理与优化
设置开机自启
systemctl enable named
查看服务状态
systemctl status named # 应显示:active (running)
性能优化参数
在named.conf的options部分添加:

forwarders { 8.8.8.8; 8.8.4.4; }; # 指定上游DNS服务器
maxcachesize 50%; # 缓存占用内存比例
测试验证
使用dig命令测试
dig @127.0.0.1 www.example.com # 测试正向解析 dig @127.0.0.1 x 192.168.1.100 # 测试反向解析
预期输出示例
;; ANSWER SECTION: www.example.com IN A 192.168.1.100 ;; ADDITIONAL SECTION: ...
常见问题排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 无法解析新记录 | 区域文件未重新加载 | rndc reload |
| 反向解析失败 | PTR记录配置错误 | 检查反向区域文件语法 |
| 外部网络无法访问 | 防火墙未开放端口 | firewallcmd addservice=dns |
| 递归查询超时 | 未配置forwarders | 添加上游DNS服务器配置 |
相关问题与解答
Q1:如何为现有域名添加新的子域名记录?
A1:
- 编辑对应的区域文件(如
example.com.zone) - 添加新记录示例:
shop IN A 192.168.1.102 ; 新增子域名记录 api IN A 192.168.1.103 ; API服务器记录
- 重新加载配置:
rndc reload
- 验证:
dig @localhost shop.example.com
Q2:如何配置DNS服务器的转发功能?
A2:

- 在
named.conf的options部分添加forwarders配置:forwarders { 114.114.114.114; }; # 使用阿里公共DNS作为转发器 - 禁用递归查询(可选):
recursion no;
- 重新加载服务:
rndc restart
- 此时服务器将作为转发器,把非本域查询请求转发到指定
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/204465.html