从C#中的DNS服务器返回IPv6地址

时间:2011-10-10 13:52:12

标签: c# dns ipv6

我在将应用程序迁移到IPv6环境中时遇到了一些异常问题。

我正在使用.NET远程处理连接到提供主机名的远程服务。该主机名(ipv6.dt112979.company)在我的DNS服务器上注册(在网卡和DNS中启用了IPv6的Windows 2003 Server上运行)作为AAAA主机。

问题在于,每当我尝试连接到该服务器时,都会得到“没有这样的主机已知”。我已经设置了Wireshark,并且没有发出任何DNS查询。我已经完成了“ipconfig / flushdns”并且观察到了相同的结果。

所以,我创建了一个简单的应用程序:

Dns.GetHostAddresses("ipv6.dt112979.company");

结果总是“找不到这样的主人”。

我做了一个NSLOOKUP,结果是:

nslookup ipv6.dt112979.company
Server:  company-dev03.company
Address:  10.200.10.207

Name:    ipv6.dt112979.company
Address:  fe80::a5c3:bfde:5ece:e833

您是否知道问题可能是什么? 我用.NET 3.5和.NET 4.0进行了测试,问题是一样的。 测试是在Windows 7机器上进行的。

如果我有ipv​​6.dt112979.company的A记录,那么该呼叫会超过但只返回IPv4地址。

祝你好运, Nuno Centeio

2 个答案:

答案 0 :(得分:2)

我弄明白了这个问题。 我没有完全启用IPv6网络。我依赖于私有地址(FE80::),尽管能够执行ping和nslookup,看起来像Winsocks2不喜欢它。

我已将Cisco UBE配置为拥有真正的IPv6网络,一切都按预期开始工作。

感谢您的帮助。

答案 1 :(得分:1)

Dns.GetHostAddresses返回一组IPaddress值,你确定要循环遍历所有这些吗?

此外,如果本地计算机不支持IPv6,则在使用Dns.GetHostAddresses时会从结果列表中过滤IPv6结果。您提到您已确保远程主机支持IPv6,但您确定本地主机也支持此功能吗?