Samba4 ADDC部署遇dns_update错误:DNS记录已存在问题求助
Samba4 ADDC部署中dns_update错误的原因及解决办法
问题场景
在Rocky Linux 8上部署Samba4 ADDC,完成配置安装后Samba服务状态显示活跃运行,但日志中出现dns_update错误,AD功能看似正常。
报错日志
Apr 12 11:33:58 samba80Test samba[15265]: /usr/local/samba/sbin/samba_dnsupdate: ERROR(runtime): Record already exists; record could not be added. zone[corp.fin-rec.com] name[_ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones] [> Apr 12 11:33:58 samba80Test samba[15265]: [2023/04/12 11:33:58.072095, 0] ../../lib/util/util_runcmd.c:355(samba_runcmd_io_handler) Apr 12 11:33:58 samba80Test samba[15265]: /usr/local/samba/sbin/samba_dnsupdate: ERROR(runtime): Record already exists; record could not be added. zone[corp.fin-rec.com] name[ForestDnsZones] [WERR_DNS_ERROR_RECORD_ALREADY_EXISTS] - (9> Apr 12 11:33:58 samba80Test samba[15265]: [2023/04/12 11:33:58.072139, 0] ../../lib/util/util_runcmd.c:355(samba_runcmd_io_handler) Apr 12 11:33:58 samba80Test samba[15265]: /usr/local/samba/sbin/samba_dnsupdate: ERROR(runtime): Record already exists; record could not be added. zone[corp.fin-rec.com] name[_ldap._tcp.ForestDnsZones] [WERR_DNS_ERROR_RECORD_ALREADY_E> Apr 12 11:33:58 samba80Test samba[15265]: [2023/04/12 11:33:58.072179, 0] ../../lib/util/util_runcmd.c:355(samba_runcmd_io_handler) Apr 12 11:33:58 samba80Test samba[15265]: /usr/local/samba/sbin/samba_dnsupdate: ERROR(runtime): Record already exists; record could not be added. zone[corp.fin-rec.com] name[_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones] [> Apr 12 11:33:58 samba80Test samba[15265]: [2023/04/12 11:33:58.109904, 0] ../../source4/dsdb/dns/dns_update.c:86(dnsupdate_nameupdate_done) Apr 12 11:33:58 samba80Test samba[15265]: dnsupdate_nameupdate_done: Failed DNS update with exit code 29
原因分析
报错核心是WERR_DNS_ERROR_RECORD_ALREADY_EXISTS,说明samba_dnsupdate脚本尝试添加的AD标准DNS记录(如ForestDnsZones、DomainDnsZones相关SRV/A记录)已存在于corp.fin-rec.com区域中,常见触发场景:
- 此前AD部署残留了未清理的DNS记录
- Samba服务重启时,dnsupdate脚本重复执行添加操作
- 手动提前添加了相关DNS记录
解决办法
1. 验证DNS记录有效性
先确认报错中的记录是否存在且指向正确:
# 检查SRV记录 dig _ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones.corp.fin-rec.com SRV # 检查A记录 dig ForestDnsZones.corp.fin-rec.com A
如果记录指向正确的AD服务器IP,说明记录有效,报错仅为脚本重复添加导致,可忽略;若指向错误,需修正。
2. 强制更新DNS记录
执行带--force参数的samba_dnsupdate,强制覆盖已存在的记录:
/usr/local/samba/sbin/samba_dnsupdate --force
完成后重启Samba服务,观察日志是否仍有报错:
systemctl restart samba journalctl -u samba -f
3. 清理无效/重复DNS记录
若记录无效或重复,使用Samba工具删除:
# 示例:删除错误的SRV记录 samba-tool dns delete corp.fin-rec.com _ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones SRV <错误的目标IP或记录内容>
删除后重新运行samba_dnsupdate。
4. 检查Samba配置正确性
确认smb.conf中DNS相关配置无误:
dns forwarder = <你的上游DNS服务器IP> server role = active directory domain controller realm = CORP.FIN-REC.COM workgroup = CORP
配置错误可能导致dnsupdate脚本重复执行无效操作,修正后重启Samba。
内容的提问来源于stack exchange,提问作者Towermoni
相关产品推荐
相关产品推荐

