2011-09-15 72 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

相關問題