2011-10-10 18 views
5

Tengo algunos problemas inusuales al migrar mi aplicación para trabajar en entornos IPv6.Devolución de direcciones IPv6 del servidor DNS en C#

Estoy usando .NET remoto para conectarme a un servicio remoto que proporciona un nombre de host. Ese nombre de host (ipv6.dt112979.company) está registrado en mi servidor DNS (se ejecuta en un servidor de Windows 2003 con IPv6 habilitado en la tarjeta de red y en el DNS) como un host AAAA.

El problema es que cada vez que intento conectarme a ese servidor obtengo un "No se conoce dicho host". Configuré Wireshark y no se está emitiendo ninguna consulta de DNS. He hecho un "ipconfig/flushdns" y se observa el mismo resultado.

Por lo tanto, he creado una sencilla aplicación que simplemente hace:

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

Y el resultado es siempre "No existe el anfitrión se encuentra".

He hecho un NSLOOKUP y el resultado es:

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

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

¿Tiene alguna idea de lo que podría ser el problema? He probado esto con .NET 3.5 y .NET 4.0 y el problema es el mismo. Las pruebas se realizaron en una máquina con Windows 7.

Si tenía un registro A para ipv6.dt112979.company, la llamada se produce pero solo devuelve la dirección IPv4.

Saludos, Nuno Centeio

+0

¿Está seguro de que IPV6 está instalado y habilitado en su máquina de desarrollo? De lo contrario, no es sorprendente que reciba el mensaje de excepción Sin host. –

+0

@GregoryABeamer Sí, estoy seguro. Estoy imprimiendo OSSupportsIPv6 y devuelve True. Además, puedo usar "ping -6 ipv6.dt112979.company" y probar con Wireshark que todas las comunicaciones utilizan IPv6. –

+0

Me pregunto ... ¿Puede ser porque no tengo una red IPv6 totalmente habilitada? Creo que estoy usando Teredo en todos los hosts ... –

Respuesta

1

Descubrí el problema. No estaba en una red IPv6 totalmente habilitada. Confiaba en direcciones privadas (FE80: :) y, a pesar de poder realizar ping y nslookup, parece que a Winsocks2 no le gusta eso.

He configurado Cisco UBE para tener una red IPv6 real y todo comenzó a funcionar como se esperaba.

Gracias por su ayuda.

0

Dns.GetHostAddresses devuelve una matriz de valores IPADDRESS, ¿está seguro de que se recorre todos ellos?

Además, si la computadora local no es compatible con IPv6, los resultados de IPv6 se filtran de la lista de resultados al usar Dns.GetHostAddresses. Mencionó que se ha asegurado de que el host remoto sea compatible con IPv6, pero ¿está seguro de que su host local también lo admite?

+0

Estoy imprimiendo OSSupportsIPv6 y devuelve True. No puedo repetir el resultado porque la función arroja una SocketException. Mi host admite IPv6 ... Puedo hacer ping al host remoto con IPv6 (comprobado en Wireshark) y también puedo usar el escritorio remoto para otros hosts IPv6, ... –

Cuestiones relacionadas