DNS服务部署
以下是CentOS服务器上搭建和管理DNS服务器的详细步骤,包含多域名和多网段支持:
一、部署DNS服务器步骤(使用BIND9)
- 安装BIND软件包
sudo yum install bind bind-utils -y
- 启动服务并设置开机自启
sudo systemctl start named
sudo systemctl enable named
二、主配置文件 /etc/named.conf
options {
// 监听所有IPv4和IPv6地址
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
// 允许所有内网网段查询
allow-query {
localhost;
192.168.0.0/16;
172.16.0.0/24;
};
// 允许递归查询的网段
allow-recursion {
192.168.0.0/16;
172.16.0.0/24;
};
// 资源限制(按需调整)
max-cache-size 512M;
recursive-clients 1000;
// 安全配置
version "Not disclosed";
dnssec-validation yes;
directory "/var/named";
};
// ================= 区域声明 =================
// visionlocal.com 主域配置
zone "visionlocal.com" IN {
type master;
file "visionlocal.com.zone";
allow-update { none; };
};
// visioncall.com 新增域名配置
zone "visioncall.com" IN {
type master;
file "visioncall.com.zone";
allow-update { none; };
};
// 反向解析区域声明
zone "8.168.192.in-addr.arpa" IN {
type master;
file "8.168.192.rev";
};
zone "110.168.192.in-addr.arpa" IN {
type master;
file "110.168.192.rev";
};
zone "111.168.192.in-addr.arpa" IN {
type master;
file "111.168.192.rev";
};
zone "0.16.172.in-addr.arpa" IN {
type master;
file "0.16.172.rev";
};
三、区域文件配置
1. 正向解析文件
/var/named/visionlocal.com.zone
$TTL 1D
@ IN SOA ns1.visionlocal.com. admin.visionlocal.com. (
2024072501 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D ) ; Minimum TTL
; NS记录
@ IN NS ns1.visionlocal.com.
; A记录
ns1 IN A 192.168.8.88
www IN A 192.168.8.20
mail IN A 192.168.8.30
; 多网段记录
iot110 IN A 192.168.110.66
sensor111 IN A 192.168.111.33
bigserver IN A 192.168.110.88
IN A 192.168.111.88
/var/named/visioncall.com.zone
$TTL 1D
@ IN SOA ns1.visioncall.com. admin.visioncall.com. (
2024072501 ; Serial
8H
2H
4W
1D )
; NS记录
@ IN NS ns1.visioncall.com.
; A记录
ns1 IN A 192.168.111.254
www IN A 192.168.111.254
mail IN A 192.168.111.100
2. 反向解析文件
/var/named/8.168.192.rev (192.168.8.0/24)
$TTL 1D
@ IN SOA ns1.visionlocal.com. admin.visionlocal.com. (
2024072501
8H
2H
4W
1D )
IN NS ns1.visionlocal.com.
88 IN PTR ns1.visionlocal.com.
20 IN PTR www.visionlocal.com.
30 IN PTR mail.visionlocal.com.
/var/named/111.168.192.rev (192.168.111.0/24)
$TTL 1D
@ IN SOA ns1.visionlocal.com. admin.visionlocal.com. (
2024072501
8H
2H
4W
1D )
IN NS ns1.visionlocal.com.
254 IN PTR ns1.visioncall.com.
100 IN PTR mail.visioncall.com.
33 IN PTR sensor111.visionlocal.com.
88 IN PTR bigserver.visionlocal.com.
/var/named/0.16.172.rev (172.16.0.0/24)
$TTL 1D
@ IN SOA ns1.visionlocal.com. admin.visionlocal.com. (
2024072501
8H
2H
4W
1D )
IN NS ns1.visionlocal.com.
100 IN PTR dev01.visionlocal.com.
200 IN PTR nas.visionlocal.com.
四、部署后操作
# 1. 检查所有配置
sudo named-checkconf
sudo named-checkzone visionlocal.com /var/named/visionlocal.com.zone
sudo named-checkzone visioncall.com /var/named/visioncall.com.zone
# 2. 修复SELinux上下文
sudo restorecon -Rv /var/named
# 3. 重启服务
sudo systemctl restart named
# 4. 防火墙配置(CentOS 7+)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/16" service name="dns" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.16.0.0/24" service name="dns" accept'
sudo firewall-cmd --reload
五、验证解析
dig @192.168.8.88 bigserver.visionlocal.com +short
dig @192.168.8.88 ns1.visioncall.com +short
# 反向解析测试
dig -x 192.168.111.254 @192.168.8.88 +short # 应返回ns1.visioncall.com.
dig -x 172.16.0.200 @192.168.8.88 +short # 应返回nas.visionlocal.com.
# 跨网段测试(在172.16.0.100客户端执行)
nslookup sensor111.visionlocal.com 192.168.8.88
六、配置管理规范
- 序列号管理
每次修改区域文件后,严格按YYYYMMDDNN格式递增Serial值 - 备份策略
# 每日自动备份
sudo crontab -e
0 2 * * * /bin/cp -p /var/named/*.zone /backup/dns/zones/
- 监控指标
# 实时监控查询量
sudo rndc stats
grep 'queries' /var/named/data/named_stats.txt
七、关键配置说明
- 正向区域文件命名规则
- 文件名为
visioncall.com.zone,与域名严格对应,方便维护。
- 文件名为
- SOA记录参数说明
admin.visioncall.com. ; 管理员邮箱(实际使用需改为真实地址)
2024072501 ; 序列号格式 YYYYMMDDNN,每次修改递增
- 复用现有反向区域
- 因
192.168.111.254属于已配置的111.168.192.in-addr.arpa反向区域,无需新建反向文件,只需追加PTR记录。
- 因
- 多服务共用IP场景
- 示例中
ns1和www均指向192.168.111.254,实际可根据需求拆分。
- 示例中
八、日常管理命令
| 场景 | 命令 |
|---|---|
| 修改区域文件后生效 | sudo rndc reload visioncall.com |
| 重载DNS服务, 热重载不中断服务 | sudo systemctl reload named |
| 监控域名查询日志 | `sudo journalctl -u named |
九、故障排查指南
| 现象 | 检查步骤 | 解决方案 |
|---|---|---|
| 正向解析失败 | dig +trace visioncall.com @192.168.8.88 |
检查区域文件权限和NS记录 |
| 反向解析返回SERVFAIL | named-checkzone 111.168.192.in-addr.arpa /var/named/111.168.192.rev |
验证PTR记录格式 |
| 跨网段客户端无法解析 | sudo firewall-cmd --list-all --zone=internal |
确认防火墙允许所有内网网段查询 |
| 172网段无法解析 | sudo tcpdump -i any port 53 and net 172.16.0.0/24 |
防火墙阻止/ACL未配置 |
| 反向解析返回SERVFAIL | named-checkzone 0.16.172.in-addr.arpa /var/named/0.16.172.rev |
区域文件格式错误 |
| 递归查询超时 | dig +trace google.com @192.168.8.88 |
允许递归的网段未包含172.16.0.0/24 |
建议每月检查所有反向区域文件的serial连续性,可使用以下命令:
sudo grep 'Serial' /var/named/*.rev
按此配置后,visioncall.com 域名及其相关服务的正反向解析即可生效。新增子域名(如 api.visioncall.com)时,只需在正向区域文件中添加对应A记录并递增Serial即可。
该配置方案完整支持:
✅ 多域名解析(visionlocal.com + visioncall.com)
✅ 多网段覆盖(192.168.x.x + 172.16.0.x)
✅ 双向解析验证
✅ 安全防护机制

浙公网安备 33010602011771号