一、DNS服务概述
DNS(Domain Name System)是互联网核心基础设施,采用分布式数据库架构实现域名与IP地址的映射关系。其特点包括:
分层树状结构管理(根域→顶级域→二级域)
UDP 53端口用于查询,TCP 53用于区域传输
支持正向解析(A/AAAA记录)和反向解析(PTR记录)
二、安装BIND服务
1. 安装软件包
# CentOS 7/8:
sudo yum install bind bind-utils -y
# CentOS Stream/Rocky Linux 9:
sudo dnf install bind bind-utils -y
2. 服务管理
# 启动服务并设置开机自启
sudo systemctl enable --now named
# 验证服务状态
sudo systemctl status named -l
三、安全加固配置
1. 主配置文件(/etc/named.conf)
options {
listen-on port 53 { 127.0.0.1; 192.168.1.1; }; // 限制监听IP
listen-on-v6 { none; }; // 禁用IPv6(按需)
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24; }; // 访问控制
recursion no; // 禁止开放递归
allow-transfer { none; }; // 禁止区域传输
dnssec-enable yes; // 启用DNSSEC
dnssec-validation yes;
};
logging {
channel security_log {
file "/var/log/named/security.log" versions 3 size 30m;
severity dynamic;
print-time yes;
};
category security { security_log; };
};
2. 创建专用用户(安全隔离)
sudo useradd -r -d /var/named -s /sbin/nologin namedsudo chown -R named:named /var/named
四、区域文件配置
1. 正向解析配置
# /etc/named.rfc1912.zones 追加:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
notify no;
};
# /var/named/example.com.zone 示例:
$ORIGIN example.com.$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024071501 ; Serial (YYYYMMDDNN)
3600 ; Refresh
900 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ns1.example.com.
IN MX 10 mail.example.com.
ns1 IN A 192.168.1.1
www IN A 192.168.1.2
mail IN A 192.168.1.3
api IN CNAME www
2. 反向解析配置
# /etc/named.rfc1912.zones 追加:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.rev";
};
# /var/named/192.168.1.rev 示例:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024071501
3600
900
604800
86400 )
IN NS ns1.example.com.
1 IN PTR ns1.example.com.
2 IN PTR www.example.com.
3 IN PTR mail.example.com.
五、配置验证与测试
1. 配置文件检查
sudo named-checkconfsudo named-checkzone example.com /var/named/example.com.zonesudo named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.rev
2. 客户端测试
# 临时测试(不修改系统配置)
dig @192.168.1.1 www.example.com
nslookup -type=soa example.com 192.168.1.1
六、高级安全配置
TSIG密钥认证(用于安全区域传输):
dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST example-transfer
响应策略区(RPZ):
options {
response-policy { zone "malware"; };
};
zone "malware" {
type master;
file "malware.zone";
};
七、维护与监控
日志分析:
sudo tail -f /var/log/named/security.log
性能监控:
rndc statscat /var/named/data/named_stats.txt
配置备份:
sudo tar czvf /backup/named_config_$(date +%F).tar.gz /etc/named* /var/named
八、故障排查指南
问题现象 | 排查命令 |
服务启动失败 | journalctl -xenamed-checkconf |
解析超时 | tcpdump -i eth0 port 53 |
记录不生效 | dig +trace example.com |
拒绝服务 | rndc querylog开启详细日志 |
最佳实践建议:
使用chroot环境运行BIND(通过yum install bind-chroot)
定期更新BIND软件以修复安全漏洞
为不同业务域创建独立视图(view)实现隔离
监控DNS查询量,防范DDoS攻击
此配置方案已在CentOS 7/8/Stream和Rocky Linux 9环境验证,适用于企业级生产环境部署。
目前有0 条留言