问题现象
昨天在修改BIND9的zone文件后,尝试重启服务时遇到以下错误:
rndc: connect failed: 127.0.0.1#953: connection refused
排查过程
检查发现/etc/bind/rndc.key
文件的创建日期正好是一年前。通过以下命令查看密钥文件信息:
ls -l /etc/bind/rndc.key
stat /etc/bind/rndc.key
根本原因
BIND9的rndc密钥确实存在默认一年有效期限制,虽然官方文档没有明确说明。这是出于安全考虑的设计,但容易在长期运行的服务器上被忽略。
解决方案
重新生成rndc密钥并更新配置:
# 停止BIND服务
sudo systemctl stop bind9
# 生成新密钥
sudo rndc-confgen -a -c /etc/bind/rndc.key
# 修改权限
sudo chown root:bind /etc/bind/rndc.key
sudo chmod 640 /etc/bind/rndc.key
# 重启服务
sudo systemctl start bind9
长期解决方案
可以通过crontab设置自动更新任务,在密钥过期前自动更新:
# 每月检查一次密钥有效期
0 0 1 * * /usr/sbin/rndc-confgen -a -c /etc/bind/rndc.key && systemctl reload bind9
配置验证
使用以下命令测试新密钥是否生效:
rndc status