前言:我不是 Windows 管理员。我是 Linux 管理员。
我有一台带有 AD DNS 的 Windows 2016 服务器,可以处理内部 DNS 正向和反向查找。
不知何故,某个进程会自动为 CNAME 添加 PTR 反向查找记录。这会破坏我们在服务器之间进行 SSH 的 Kerberos 身份验证,因为对具有 CNAME 的主机进行规范查找将返回过多的 FQDN 和 Kerberos 错误。
当我删除 CNAME 反向查找时,Kerberos SSH 问题就解决了。
然后,第二天,所有的 PTR -> CNAME 条目都回到了 AD DNS 中
例如,从顶部开始(我已将名称更改为通用名称,但整体设置相同):
运行 SMTP 和 Squid 代理的一对网络操作框具有 A 记录
netops01.example.com -> 10.1.2.3
netops02.example.com -> 10.4.5.6
同一盒子有 CNAME
netops
proxy
mailserver
由于某种原因,AD DNS 中存在如下反向查找条目:
3.2.1.10.in-addr.arpa. 3600 IN PTR netops.example.com
3.2.1.10.in-addr.arpa. 3600 IN PTR proxy.example.com
3.2.1.10.in-addr.arpa. 3600 IN PTR mailserver.example.com
3.2.1.10.in-addr.arpa. 3600 IN PTR netops01.example.com
最后一条记录是该主机的 A 记录。其他所有记录都是该 A 记录 + 第二台主机的另一个 A 记录的 CNAME。
我或其他负责操作的管理员都没有创建这些。我们也没有设置任何计划任务来重新创建反向查找。我也想不出有什么好理由让反向查找指向 CNAME 或多个结果。(也许有好的理由?不过,我以前从未这样做过)
因此,我删除了除 A 记录之外的所有反向查找。Kerberos SSH 可以正常工作!
第二天,记录全部返回。
我甚至不确定如何在 Windows 上进行故障排除(因此我在顶部写了序言)
- 我如何在 Windows 日志中找到执行此操作的内容?
- Windows DNS 中是否有可以自动执行此操作的功能?(为 CNAME 创建 PTR)
- 有办法关掉它吗?
- 我还遗漏了什么吗?
答案1
回答我自己
我找到了我所缺少的东西。两件事:
事实上,这些并不是 CNAME。它们是出于负载平衡目的而列出的多个主机的 A 记录。
由于它们是 A 记录,因此它们确实有一个复选框,内容是“自动创建相关的 PTR 记录”
我取消了对这些记录的检查。这实际上似乎并没有解决这里描述的问题:PTR 记录仍然每天早上重建。
然而无论如何,这不是我想要的解决方案。根本问题是 Kerberos 不起作用。好吧,这个问题很容易解决,只需将此“rdns”设置添加到 /etc/krb5.conf
[libdefaults]
rdns = false
答案2
默认情况下,Windows 始终尝试使用动态 DNS 注册正向和反向查找。
您可以在注册自己的客户端或 DNS 服务器上禁用此功能,或者同时禁用两者。解决当前问题的最快方法是禁用相关反向查找区域的动态 DNS 支持。从长远来看,根据您的情况,您可能还希望在正向区域中禁用它。
我找到了一张显示 DNS 服务器相关设置的截图这里。您要选择“无”。
有关在客户端上禁用动态更新的更多信息这里和这里。这不是必需的,但否则客户端将生成定期的事件日志消息,因为动态 DNS 请求被服务器拒绝。
注意:您不应禁用 Active Directory 域控制器或 Active Directory 区域(例如_msdcs
域控制器用于存储有关域基础结构的信息的区域)的动态更新。这将破坏 Active Directory。