GetHostAddress()不返回IPv6,只返回IPv4

本文关键字:返回 IPv4 IPv6 GetHostAddress | 更新日期: 2023-09-27 18:08:35

当使用Dns.GetHostAddresses("fred")时,它只返回IPv4地址作为响应。如何获得IPv6地址,以及?我要用别的方法吗?

插座。OSSupportsIPv6返回true, IPv6连接工作正常。操作系统为Windows 2008 R2, . net版本为3.5

GetHostAddress()不返回IPv6,只返回IPv4

IPv6仍然使用DNS来解析地址,因此为了使其工作,您需要在此域名的区域文件中添加IPv6条目。然后它会正确地解决。

我怀疑Ping将回落到IPv4如果IPv6不可用,不完全是你所希望的,一旦你指定了'-6'标志。

如果有人在2021年仍然有这个问题,System.Net.Dns类有一个未记录的行为:它过滤它认为不可达的地址当你除了环回的唯一IPv6地址是链路本地。即使域名只解析为v6地址(您可以尝试使用v6.localhost.ayra.ch),也会执行此过滤,在这种情况下会抛出异常。

如果你位于一个IPv4网络,但想要在。net中解析v6地址的能力,你可以通过手动为你的设备分配一个自定义IP来欺骗你的方法来解决这个问题。为您的设备分配IPv6地址2001:db8::1,前缀长度为32,没有默认网关。到目前为止,我还没有发现任何因为这个而停止工作的东西,而且。net现在可以解析IPv6了。

请注意,建议的IPv6地址和范围是保留在文档中使用的,这意味着你应该永远不会在互联网上遇到这个范围。如果你想确保你的选择不与遵循此指令的其他人的地址冲突,我建议你在最后3个地址段使用你的mac地址。

我做了一个页面,生成这些地址与您的MAC或随机:https://cable.ayra.ch/docmac/