rndc 不能直接刷新单条域名记录,仅支持 zone 级操作;需通过修改区域文件、递增 soa 序列号、rndc reload 和 retransfer 实现单条记录热更新,或启用 tsig 认证的 nsupdate 进行动态更新。

不能直接用 rndc 刷新单条域名记录。rndc 本身不支持“更新某一条 A 记录”这类细粒度操作,它面向的是整个服务生命周期和区域(zone)级动作。要实现内网高可用 Bind9 集群中对单条域名的动态、不停机变更,需结合 rndc 与区域文件管理机制协同完成,核心逻辑是:修改区域数据 → 递增 SOA 序列号 → 通知从服务器同步 → 由 rndc 触发重载或刷新。
明确 rndc 的能力边界
rndc 是 Bind9 的控制通道工具,只支持以下几类原子操作:
- reload:重新加载所有 zone 配置和区域文件(触发 named 读取新内容,不中断服务)
- retransfer:强制主服务器向指定从服务器发起区域传输(用于同步变更)
- refresh:让从服务器主动检查主服务器 SOA 是否更新,决定是否拉取新 zone(常用于自动同步)
- flush:清空本地缓存(影响递归/缓存服务器,不改权威记录)
- status / stats:仅监控,不修改数据
它不提供类似 rndc update example.com A 192.168.10.5 这样的接口——Bind9 默认不开放在线动态更新(Dynamic DNS Update),除非显式启用并配置 TSIG 或 GSS-TSIG 认证的 allow-update 策略。
推荐方案:SOA + reload 实现“热更新单条记录”
适用于内网可控环境,无需开启动态更新,安全且稳定:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
-
确保区域配置支持主从同步:
主服务器 zone 声明中含type master;,从服务器为type slave;;主服务器allow-transfer放行从服务器 IP -
编辑正向区域文件(如
/var/named/db.example.local):
找到目标域名行(如webapp IN A 192.168.1.100),改为新 IP,同时**必须递增 SOA 记录中的序列号(serial)**(如从2026072101改为2026072102) -
主服务器执行 reload:
rndc reload example.local(仅重载该 zone,不影响其他域) -
通知从服务器同步:
主服务器上运行rndc retransfer example.local,或等待从服务器按 refresh 时间自动轮询(默认 12h,可调)
整个过程无服务中断,named 进程持续响应查询,旧记录在缓存过期前仍有效,新记录立即对新查询生效。
进阶选项:启用安全动态更新(TSIG)
若需频繁、自动化更新(如 CI/CD 发布后自动切 IP),可启用 BIND 的 update-policy 或 allow-update:
- 生成 TSIG 密钥:
rndc-confgen -a -k ddns-key -c /etc/ddns.key - 在 named.conf zone 段添加:
allow-update { key "ddns-key"; }; - 使用
nsupdate工具提交变更:nsupdate -k /etc/ddns.key<br>> server ns1.example.local<br>> update delete webapp.example.local A<br>> update add webapp.example.local 300 IN A 192.168.1.200<br>> send
此方式真正实现单条记录毫秒级更新,且无需 reload,但需严格管控密钥分发与权限,适合有运维自动化能力的团队。
高可用集群下的关键注意事项
内网多节点部署时,避免常见陷阱:
- 所有从服务器 zone 文件必须设为
masters { 主IP; };,且file路径指向同一位置(如/var/named/slaves/db.example.local),确保写入权限正确 - rndc 命令默认只作用于本机 named;跨节点管理需配置
controls块并开放 953 端口(建议仅限内网 IP 段,如inet 10.0.0.0/8 port 953 allow { 10.0.0.0/8; } keys { "rndc-key"; };) - SOA 中的
retry和expire参数影响从服务器故障恢复行为,内网建议设为较短值(如 retry 300, expire 604800) - 务必关闭递归(
recursion no;)——权威集群只应响应授权查询,否则易被滥用放大攻击










