我可以强制 Windows Server 2008 DNS 条件转发器仅使用 TCP 吗?

Sma*_*ger 5 domain-name-system windows-server-2008

我们已经建立了通往合作伙伴公司的通道。他们的部分安全策略坚持我们的 DNS 查询仅是 TCP(不会路由 UDP)。

我们能够使用dig +tcp并验证查询是否正确解析,但我们自己的 AD 集成(服务器 2008)DNS 服务器使用 UDP 进行转发查询,这将超时并在 SERVFAIL 中重新发送回原始客户端。

条件转发器的设置不提供协议选择: Server 2008 条件转发器

RFC 1123 说

发送非区域传输查询的 DNS 解析器或服务器必须首先发送 UDP 查询。

...但这已在 5966 年由

解析器应该首先发送一个 UDP 查询,但如果有充分的理由期望响应会被截断,如果它是通过 UDP 发送的,则可以选择发送一个 TCP 查询

如果我使用的是 Server 2008(最后一个 RFC 是从 2010 年开始的),这可不是什么好兆头。有谁知道我可以强制我的转发器仅使用 TCP(或至少首先使用 TCP)的方法吗?如果我必须将其设置为中介,是否可以在任何其他 DNS 实现中使用?

Gio*_*oni 4

无法在 Microsoft DNS 服务器中关闭 UDP(请检查dnscmd文档)。

这种对 UDP 数据包的限制似乎不合理,并且确保他们的防火墙足够灵活,可以接受允许您的服务器通过 UDP 端口 53 发送请求的例外情况。

每当 RFC 说“应该”时,您最好遵循它的说明,以避免遇到未指定/不可预测的行为。正确的方法是仅在收到带有截断响应的 UDP后才使用 TCP 。

RFC 1035(关于首选方法):

UDP 不适用于区域传输,但推荐用于 Internet 中的标准查询。

RFC 2181(关于 UDP 截断响应):

在设置 TC 的情况下,不完全适合的部分 RRSet 可能会留在响应中。当 DNS 客户端收到设置了 TC 的回复时,它应该忽略该响应,并使用允许更大回复的机制(例如 TCP 连接)再次查询。

他们最好有充分的理由不允许 UDP 53(极不可能)。