2011-10-10 1 views
5

IPv6 환경에서 작동하도록 응용 프로그램을 마이그레이션하는 중 일부 비정상적인 문제가 발생했습니다.C#의 DNS 서버에서 IPv6 주소를 반환 중

.NET Remoting을 사용하여 호스트 이름을 제공하는 원격 서비스에 연결하고 있습니다. 해당 호스트 이름 (ipv6.dt112979.company)은 AAAA 호스트로 (네트워크 카드 및 DNS에서 IPv6을 사용할 수있는 Windows 2003 서버에서 실행되는) DNS 서버에 등록됩니다.

문제는 해당 서버에 연결할 때마다 "해당 호스트를 알 수 없습니다."입니다. 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 컴퓨터에서 수행되었습니다.

ipv6.dt112979.company에 대한 A 레코드가 있으면 호출은 성공하지만 IPv4 주소 만 반환합니다.

안부, 누누 Centeio

+0

개발 컴퓨터에 특정 IPV6이 설치되어 있고 활성화되어 있습니까? 그렇지 않은 경우 No Host 예외 메시지가 다시 발생하는 것은 놀라운 일이 아닙니다. –

+0

@GregoryABeamer 네, 확신합니다. OSSupportsIPv6을 인쇄하고 True를 반환합니다. 또한, "ping -6 ipv6.dt112979.company"를 사용할 수 있고 모든 통신이 IPv6을 사용한다는 Wireshark로 증명할 수 있습니다. –

+0

궁금한데 ... 완전히 활성화 된 IPv6 네트워크가 없기 때문일 수 있습니까? 모든 호스트에서 Teredo를 사용하고 있다고 생각합니다. –

답변

1

문제를 발견했습니다. 완전히 활성화 된 IPv6 네트워크에 없었습니다. 개인 주소 (FE80 : :)에 의존하고 있었고 ping 및 nslookup을 수행 할 수 있음에도 불구하고 Winsock2는 그런 식으로 생각하지 않습니다.

Cisco UBE를 실제 IPv6 네트워크로 구성했으며 모든 것이 예상대로 작동하기 시작했습니다.

도움 주셔서 감사합니다.

0

Dns.GetHostAddresses은 여기서 IPaddress-값의 배열을 반환합니다, 당신은 당신이 그들 모두를 통해 반복하고 있는지입니까?

또한 로컬 컴퓨터가 IPv6을 지원하지 않으면 Dns.GetHostAddresses을 사용할 때 IPv6 결과가 결과 목록에서 필터링됩니다. 원격 호스트가 IPv6을 지원한다는 것을 확인했지만 로컬 호스트가이를 지원하는지는 확실합니다.

+0

OSSupportsIPv6을 인쇄 중이며 True를 반환합니다. 함수가 SocketException을 던지기 때문에 결과를 반복 할 수 없습니다. 내 호스트는 IPv6를 지원합니다 ... 또한 IPv6 (원격 호스트에서 다른 IPv6 호스트에 연결할 수 있음)을 사용하여 원격 호스트에 ping 할 수 있습니다 (Wireshark에서 입증 됨). –