2011-02-04 6 views
7

tengo un problema muy específico relativo Dns.GetHostEntry:condiciones de error Dns.GetHostEntry y métodos de resolución

Un servicio utiliza Dns.GetHostEntry para recuperar todas las direcciones IP de un host, usando el nombre de del huésped. Esto siempre funcionó bien. En un cliente específico, Dns.GetHostEntry arroja el error "no se conoce ese host" al consultar hosts específicos. El problema solo ocurre cuando intentamos resolver hosts que están en un dominio diferente al de la máquina en la que está instalado el servicio. El servicio ha funcionado durante bastante tiempo, pero recientemente dejó de funcionar, lanzando el error "no se conoce ese host" (lamentablemente, no hay ningún rastro de pila disponible). Nslookup funciona, sin problemas allí. El servicio en cuestión está escrito en VB.NET, con el objetivo de .NET Framwork 2.0.

Los comentarios en la entrada de MSDN para .NET 3.0 (http://msdn.microsoft.com/en-us/library/ms143998(v=VS.85).aspx indictate que puede haber un problema con las entradas de DNS inversa para los anfitriones, pero no fue capaz de reproducir el problema en una red de prueba, incluso con todo inversa zonas de búsqueda eliminadas (hay más comentarios para otras versiones de .NET, todas tienen problemas similares). [EDIT:] Incluso deliberadamente addind un registro PTR incorrecto no hace que el problema ocurra en mi máquina de prueba.

[EDIT2:] la única cosa que hizo que el error fue llegar a desconectar el adaptador de red, y de ese modo hacer disponible el servidor de DNS, a pesar de que el delantero todavía resolver trabajó debido al almacenamiento en caché.

Entonces, mis preguntas son:

  1. ¿Bajo qué condiciones arroja este error específico GetHostEntry?
  2. Qué métodos de resolución utiliza? Si no me equivoco se utiliza la función de getnameinfo no administrado WinSock (http://msdn.microsoft.com/en-us/library/ms738532(v=vs.85).aspx) ,: "La resolución de nombres puede ser por el Sistema de Nombres de Dominio (DNS), un archivo de hosts local, o por otros mecanismos de denominación".
  3. Cualquier idea por qué esto falla repentinamente de las máquinas en el otro dominio (pero no para las máquinas en el mismo dominio)?

Gracias y un saludo, cun83

+0

que el "ipconfig/flushdns" hizo en la máquina local y reiniciar el servidor DNS después de modificar los registros PTR? Puede que todavía esté usando los resultados almacenados en caché –

+0

Sí, descargué el caché, incluso reinicié el servicio de servidor DNS y el servicio de cliente solo para asegurarme de que nada se almacena en caché. – cun83

Respuesta

5

Yo personalmente siempre uso Dns.GetHostAddresses. Siempre me da un resultado confiable.

En cuanto a por qué Dns.GetHostEntry le da el error especificado, creo que es debido al hecho de que DnsGetHostEntry intentará hacer una búsqueda DNS inversa antes de devolverle la dirección IP. Si falla la búsqueda DNS inversa, le dará "no se conoce ese host".

Por lo que yo sé, Dns.GetHostAddresses sólo devuelve la dirección IP.

Cuestiones relacionadas