安装BIND/DNS服务,编辑配置文件,添加正向/反向解析记录,启动
DNS服务器搭建全攻略:从零开始配置权威服务器
DNS服务器基础认知
1 什么是DNS服务器
DNS(Domain Name System)服务器是互联网的电话簿,负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址(如192.0.2.1),它采用分布式数据库架构,通过分层查询机制实现全球域名解析。

2 DNS服务器类型
| 类型 | 功能描述 |
|---|---|
| 主DNS服务器 | 存储原始域名数据,负责管理域名的权威解析记录 |
| 辅助DNS服务器 | 从主服务器同步数据,提供冗余解析服务,提升系统可靠性 |
| 缓存DNS服务器 | 暂存最近解析结果,加速重复查询响应,不存储权威数据 |
| 转发DNS服务器 | 将未缓存的查询请求转发给指定上游服务器,常用于内网环境 |
搭建前准备
1 硬件要求
- 最低配置:1核CPU/512MB内存/10GB硬盘(仅作实验用途)
- 推荐配置:双核CPU/2GB+内存/50GB+SSD(生产环境)
2 软件选择
| 组件 | 推荐选项 | 适用场景 |
|---|---|---|
| 操作系统 | CentOS 7+/Ubuntu 20+ | Linux平台稳定性最佳 |
| DNS软件 | BIND 9.16+/Unbound | BIND功能全面,Unbound注重安全 |
| 防火墙 | firewalld/iptables | 根据系统选择 |
| 监控工具 | Nagios/Prometheus | 服务状态监控 |
3 网络规划
- 公网服务器:需备案域名,申请独立IP
- 内网服务器:可使用私有地址(如192.168.1.254)
- 端口配置:默认53端口(UDP/TCP)
实战搭建BIND DNS服务器
1 安装BIND
# CentOS系统 yum install y bind bindutils # Ubuntu系统 aptget install y bind9 bind9utils bind9doc
2 配置文件详解
2.1 named.conf主配置
// 全局配置
options {
directory "/var/named"; // 工作目录
listenon port 53 { any; }; // 监听所有接口
allowquery { any; }; // 允许所有查询
recursion yes; // 启用递归查询
};
// 日志配置
logging {
channel default_log {
file "/var/log/named/named.log" versions 3 size 50m;
severity info;
printtime yes;
};
category default { default_log; };
};
2.2 正向区域配置
zone "example.com" {
type master;
file "example.com.zone"; // 数据文件路径
allowupdate { none; }; # 禁止动态更新
};
2.3 反向区域配置
zone "1.168.192.inaddr.arpa" {
type master;
file "192.168.1.zone";
};
3 区域文件编写规范
3.1 正向区域文件示例(example.com.zone)
$TTL 86400 ; 默认生存时间(1天)
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; 序列号(年月日+编号)
3600 ; 刷新时间
1800 ; 重试间隔
1200 ; 过期时间
86400 ) ; 最小TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
www IN A 192.168.1.100 ; Web服务器IP
mail IN A 192.168.1.101 ; 邮件服务器IP
ftp IN CNAME www ; 别名记录
3.2 反向区域文件示例(192.168.1.zone)
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101
3600
1800
1200
86400 )
IN NS ns1.example.com.
IN NS ns2.example.com.
100 IN PTR www.example.com. ; IP>域名映射
101 IN PTR mail.example.com.
4 启动与验证
# 检查配置文件语法 namedcheckconf /etc/named.conf # BIND检查主配置 namedcheckzone example.com /var/named/example.com.zone # 检查区域文件 # 启动服务 systemctl start named # CentOS systemctl start bind9 # Ubuntu # 测试解析 dig @localhost www.example.com # 正向解析测试 dig x 192.168.1.100 @localhost # 反向解析测试
高级功能配置
1 DNSSEC配置
# 在zone文件中添加DS记录 example.com. IN DS 20326 8 2 ...(算法编号+
2 负载均衡配置
webserver IN A { 192.168.1.100; 192.168.1.101; } ; 轮询策略
3 智能解析配置
www IN A 203.0.113.1 ; 电信用户 www IN A 203.0.113.2 ; 联通用户(需配合GeoIP实现)
安全加固指南
1 基础安全设置
| 配置项 | 建议值 |
|---|---|
| 最小权限原则 | 以非root用户运行(如named用户) |
| 访问控制列表 | 限定允许查询的IP范围 |
| 递归查询限制 | 非必要情况下禁用递归查询(recursion no;) |
| TCP查询限制 | allowqueryonport { 53 { 127.0.0.0/8; }} |
2 防DDoS攻击策略
- 启用Query Rate Limiting:
maxqueryqpsperip 100;(每秒最大查询数) - 配置递归查询白名单:
allowrecursion { 192.168.0.0/16; }; - 启用DNSSEC验证:
dnssecvalidation auto;
3 日志审计规范
channel audit_log {
file "/var/log/named/audit.log" versions 5 size 50m;
printtime yes;
severity notice;
};
category audit { audit_log; };
常见问题排查
1 典型故障现象与解决方案
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 无法解析域名 | 服务未启动/防火墙拦截 | systemctl status named检查状态,firewallcmd addport=53/udp开放端口 |
| 间歇性解析失败 | 递归查询超时 | 调整forwarders上游服务器配置,增加备用DNS节点 |
| 区域文件生效延迟 | TTL设置过大 | 修改SOA记录中的刷新时间(默认3600秒建议改为1800秒) |
| 出现”server failure” | BIND版本不兼容 | 升级到最新稳定版(如BIND 9.16+) |
相关问题与解答
Q1:如何将新域名添加到现有DNS服务器?
A:需执行以下步骤:

- 编辑对应区域文件,添加新记录(A/CNAME/MX等)
- 更新SOA记录的序列号(如从2023100101改为2023100201)
- 执行
systemctl reload named重新加载配置 - 使用
dig axfr example.com二级服务器测试区域传输
Q2:DNS服务器响应慢如何处理?
A:优化方案包括:

- 检查递归查询配置,添加本地缓存服务器到
forwarders指令 - 启用DNSSEC预取功能:
prefetch 6 20(预取6条记录,有效期20秒) - 调整查询超时参数:
timeout 2 sec(缩短超时等待时间) - 部署CDN专用DNS服务器,分离常规
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/204450.html