我最近一直在尝试设置单播DNS-SD以便我们的 Mac 用户更轻松地进行打印,但我遇到了一个奇怪的障碍。
我们使用两台 Windows Server 2008 R2 机器作为最终用户和互联网之间的 DNS 服务器,但由于某种原因,它们在转发打印机的 TXT 记录时返回 SERVFAIL 响应。其他 DNS 服务器(包括运行 Windows Server 2003 的服务器)完全没有问题。
我甚至设置了一个全新的 Windows Server 2008 R2 实例(在 EC2 上),以排除防火墙和网络配置问题。问题仍然存在。我的研究表明 2008 R2 和 EDNS 存在一些问题,但命令其他人声称已经解决了该问题,但并没有帮助。
是否有其他人设置了通过 Windows 2008 R2 DNS 服务器运行的单播 DNS-SD 共享?知道这可能是什么原因造成的吗?
答案1
看起来查询消息 (0x3766) 是通过 UDP 发送的,没有 EDNS(如果使用 EDNS,则附加部分中会有一个 Opt RR),这会将最大响应限制为 512 字节。TXT 数据本身就有 546 字节,因此无法在 512 字节内回答查询。服务器应该使用截断(TC 位设置)响应进行回复,这将触发客户端通过 TCP 重试查询。
我对 Windows 不太熟悉,所以我只能建议减小 TXT 记录的大小。就我个人而言,我会尝试将记录数据设置为“1”,看看这对客户端有何影响。(DNS-SD 服务需要 TXT 记录,而某些 DNS 服务器/客户端会因空的 TXT 记录而阻塞,因此单个字符是您可以期望的最小值。)