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

我们已经build立了一个合作伙伴公司的隧道。 他们的安全策略的一部分坚持,我们的DNS查询只有TCP(UDP不会路由)。

我们可以使用dig +tcp并validation查询是否正确parsing,但是我们自己的AD集成的(Server 2008)DNS服务器使用UDP作为转发的查询,这将在一个SERVFAIL中超时并重新返回到原始客户端。

有条件的转发器的设置没有规定协议select: Server 2008条件转发器

RFC 1123说

发送非区域传输查询的DNSparsing器或服务器务必首先发送UDP查询。

…但这已被5966年取代

一个parsing器应该首先发送一个UDP查询,但可以select发送一个TCP查询,而不是如果它有很好的理由期望如果通过UDP发送的响应将被截断

如果我在Server 2008(最后一个RFC是从2010),这不是一个好兆头。 有谁知道一种方法,我可以强迫我的货代只使用TCP(或至less第一)? 是否有可能在任何其他的DNS实现,以防万一我必须设置一个中介?

有没有办法在Microsoft DNS服务器中closuresUDP(检查dnscmd文档)。

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

每当RFC说“应该”,你最好遵循它所说的,以避免陷入未指定/不可预知的行为。 正确的方法是在收到截断响应的UDP 之后才使用TCP。

RFC 1035 (关于首选方法):

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

RFC 2181 (关于UDP截断resposes):

在设置了TC的情况下,不完全适合的部分RRSet可能留在响应中。 当DNS客户端收到TC集的回复时,应忽略该回应,并使用TCP连接等机制重新进行查询,该机制将允许更大的回复。

他们最好有一个很好的理由不允许UDP 53(极不可能)。