domain-name-system – 如何防止与IPv6 AAAA记录相关的延迟?

前端之家收集整理的这篇文章主要介绍了domain-name-system – 如何防止与IPv6 AAAA记录相关的延迟?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的 Windows服务器正在使用我们的Windows DNS服务器注册IPv6 AAAA记录.但是,我们的网络上没有启用IPv6路由,因此这经常导致停顿行为.

微软RDP是最糟糕的罪犯.当连接到DNS中具有AAAA记录的服务器时,远程桌面客户端将首先尝试IPv6,并且在连接超时之前不会回退到IPv4.高级用户可以通过直接连接到IP地址来解决此问题.使用ping -4 hostname.foo解析IPv4地址始终可以立即生效.

我该怎么做才能避免这种延迟?

>在客户端禁用IPv6?

>不,微软说IPv6 is a mandatory part of the Windows operating system.
>客户太多,以确保始终如一地设置.
>当我们最终实施IPv6时,会导致更多问题.

>在服务器上禁用IPv6?

>不,微软说IPv6 is a mandatory part of the Windows operating system.
>需要一个不方便的registry hack来禁用整个IPv6堆栈.
>确保在所有服务器上正确设置这是不方便的.
>当我们最终实施IPv6时,会导致更多问题.

>屏蔽用户facnig DNS recursor上的IPv6记录?

>不,我们正在使用NLNet Unbound和it doesn’t support that.

>防止在Microsoft DNS服务器上注册IPv6 AAAA记录?

>我认为这甚至不可能.

此时,我正在考虑编写一个清除DNS区域中所有AAAA记录的脚本.请帮我找一个更好的方法.

更新:DNS解析不是问题.正如@joeqwerty在他的回答中指出的那样,DNS记录会立即返回. A和AAAA记录都可立即使用.问题是某些客户端(mstsc.exe)将优先尝试通过IPv6进行连接,并需要一段时间才能回退到IPv4.

这似乎是一个路由问题. ping命令会生成“常规故障”错误消息,因为目标地址是不可路由的.

C:\Windows\system32>ping myhost.mydomain
Pinging myhost.mydomain [2002:1234:1234::1234:1234] with 32 bytes of data:
General failure.
General failure.
General failure.
General failure.
Ping statistics for 2002:1234:1234::1234:1234:
    Packets: Sent = 4,Received = 0,Lost = 4 (100% loss),

我无法获取此行为的数据包捕获.运行此(失败)ping命令不会在Microsoft网络监视器中生成任何数据包.同样,尝试将mstsc.exe连接到具有AAAA记录的主机也不会产生任何流量,直到它回退到IPv4.

更新:我们的主机都使用可公共路由的IPv4地址.我认为这个问题可能归结为破坏的6to4配置. 6to4在具有公共IP地址和RFC1918地址的主机上的行为不同.

更新:在我的网络上肯定有6to4可疑的东西.当我在Windows客户端上禁用6to4时,连接立即解决.

netsh int ipv6 6to4 set state disabled

但正如@joeqwerty所说,这只会掩盖这个问题.我仍然试图找出为什么我们网络上的IPv6通信完全不起作用.

解决方法

这个问题非常有趣,我必须承认我从未见过这种行为.在做一些摆弄试图更好地理解它的时候,我拿了一小段nslookup从另一个W2K8R2服务器查询我的一个W2K8R2 RDS服务器,我还从相同的测试服务器捕获了一个RDP会话到同一个RDS服务器的片段. Nslookup显示返回IPv6记录没有延迟,nslookup显示我的测试服务器在查询IPv6记录之前查询IPv4记录.捕获中的时间增量在任一查询中都没有显示出明显的延迟(我可以确定).

编辑

现在你要做点什么了.

确保您捕获Microsoft 6To4适配器的流量,否则您将看不到IPv6:

这是我的RDS服务器的nslookup结果.记下IPv6地址:

现在这里是我捕获的片段:

最后,这是netstat显示连接的片段:

很明显,正如您所确认的那样,DNS解析不是问题所在.问题是RDP连接更喜欢IPv6 over IPv4(这是Windows的默认设置–Windows更喜欢IPv6 over IPv4),而且由于IPv6运行不正常导致延迟(正如您所说)从IPv6回退到IPv4的.您可以通过将客户端配置为更喜欢IPv4 over IPv6来解决此问题,但我认为这只会掩盖问题.更好的解决方案是找出IPv6无法正常工作的原因并解决这个问题.我对IPv6的帮助不够了,但我的猜测是,DNS返回的IPv6记录是“本地”地址,仅在存在RDS主机的子网上有效,并且由于客户端位于不同的子网中,因此它们可以’达到那些IPv6地址.

猜你在找的HTML相关文章