BIND9 rndc密钥一年后失效问题排查与解决方案


阅读 2 次

问题现象

昨天在修改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