Sma*_*ger 5 domain-name-system windows-server-2008
我们已经建立了通往合作伙伴公司的通道。他们的部分安全策略坚持我们的 DNS 查询仅是 TCP(不会路由 UDP)。
我们能够使用dig +tcp并验证查询是否正确解析,但我们自己的 AD 集成(服务器 2008)DNS 服务器使用 UDP 进行转发查询,这将超时并在 SERVFAIL 中重新发送回原始客户端。
条件转发器的设置不提供协议选择:

RFC 1123 说
发送非区域传输查询的 DNS 解析器或服务器必须首先发送 UDP 查询。
...但这已在 5966 年由
解析器应该首先发送一个 UDP 查询,但如果有充分的理由期望响应会被截断,如果它是通过 UDP 发送的,则可以选择发送一个 TCP 查询
如果我使用的是 Server 2008(最后一个 RFC 是从 2010 年开始的),这可不是什么好兆头。有谁知道我可以强制我的转发器仅使用 TCP(或至少首先使用 TCP)的方法吗?如果我必须将其设置为中介,是否可以在任何其他 DNS 实现中使用?
无法在 Microsoft DNS 服务器中关闭 UDP(请检查dnscmd文档)。
这种对 UDP 数据包的限制似乎不合理,并且确保他们的防火墙足够灵活,可以接受允许您的服务器通过 UDP 端口 53 发送请求的例外情况。
每当 RFC 说“应该”时,您最好遵循它的说明,以避免遇到未指定/不可预测的行为。正确的方法是仅在收到带有截断响应的 UDP后才使用 TCP 。
RFC 1035(关于首选方法):
UDP 不适用于区域传输,但推荐用于 Internet 中的标准查询。
RFC 2181(关于 UDP 截断响应):
在设置 TC 的情况下,不完全适合的部分 RRSet 可能会留在响应中。当 DNS 客户端收到设置了 TC 的回复时,它应该忽略该响应,并使用允许更大回复的机制(例如 TCP 连接)再次查询。
他们最好有充分的理由不允许 UDP 53(极不可能)。