2011-09-15 91 views
1

使用Dns.GetHostAddresses(“fred”)时,它仅返回IPv4地址作为响应。如何获得IPv6地址?我会用不同的方法吗?GetHostAddress()不返回IPv6,仅返回IPv4

Socket.OSSupportsIPv6返回true,IPv6连接正常工作。操作系统是Windows 2008 R2,.Net版本是3.5。

+8

“fred”是否有与之相关的IPv6 DNS记录? – Lazarus

+0

@Lazarus:不,我没有 - 我已经添加了主机文件的条目,我现在已经解决了ipv4和ipv6地址!我如何知道是否有与主机名关联的dns记录?为什么“ping-6 fred”正常工作,而GetHostAddresses()没有? – ya23

+0

@ ya23我会怀疑在无法解析IPv6时,ping会回退到IPv4查找。 – Lazarus

回答

1

IPv6仍然使用DNS来解析地址,因此为了实现此目的,您需要向该域名的区域文件添加一个IPv6条目。它会正确解决。

如果IPv6不可用,我怀疑Ping会回退到IPv4,而不是你一旦指定了'-6'标志就希望如此。

+0

这不是我所看到的。如果我使用'dns.lookup('google.com',{all:true},...)在node.js中查询''我得到了一个ipv6和ipv4地址,在C#中使用'Dns.GetHostAddresses(“google .com“)'在同一台机器上不返回ipv6地址。 – gman

+0

如果系统上未安装IPv6,则GetHostAddresses将过滤IPv6地址。鉴于Google不在您的本地网络上,您可能会获得映射到IPv6的IPv4。你和Google之间有没有端到端的IPv6?我在这里假设node.js和.Net执行系统是相同的,如果不是这两个配置为相同的DNS解析链。 – Lazarus

+0

[这里的例子](http://stackoverflow.com/questions/37386839/both-dns-gethostaddress-and-dns-gethostentry-return-only-ipv4-addresss-how-do-i)。也许我在做一些愚蠢的事情 – gman