Resolución de Nombres de Máquina (DNS, WINS, HOSTS, LMHOSTS, y etcéteras)

Posted on 23/07/2008

0


Primero vamos a definir exactamente qué significa esta expresión “Resolución de Nombres”. Cuando tenemos un grupo de PCs conectadas en red es porque deseamos compartir recursos. Esto es, desde un equipo poder acceder a los recursos que tenemos en otro. Esto se hace a través del correspondiente cableado que interconecta las placas de red que tenemos instaladas en los equipos, donde lo único que se transmiten son señales eléctricas.

Esto viene a que hay diferentes niveles a los que podemos mirar nuestra red. A los humanos nos resulta mucho más fácil referirnos a los equipos por el nombre que le hallamos asignado, pero este nombre debe ser resuelto en los niveles más bajos de forma de alcanzar el equipo destino. Por ejemplo: si en el browser escribimos http://support.microsoft.com o hacemos un acceso directo a \\server\compartida estamos usando nombres de máquina de alto nivel, pero esto hay que resolverlo primero a una dirección de equipo que entienda el protocolo de red que estemos utilizando (TCP/IP, IPX/SPX, AppleTalk, etc.). Y todavía falta algo más, esta dirección usada por el protocolo se deber resolver a una dirección única que tiene cada placa de red (MAC Address = Media Access Control Address).

En esta nota acotaré el problema a la resolución de nombres de equipo a la dirección de protocolo de red TCP/IP, en el caso de tráfico tipo unicast.

Vamos aclarando, existen tres tipos de tráfico en una red IPv4:

  • Broadcast: desde uno a todos los demás equipos
  • Multicast: desde uno a un grupo de equipos, no a todos, sino a los que se suscribieron a un determinado grupo de multicast
  • Unicast: desde un equipo a otro (1 a 1)

En una red con medio compartido como en el caso más común de Ethernet, aunque el tráfico esté dirigido a un equipo en particular, todos los que estén en el mismo medio “escuchan” la transmisión. Sólo el equipo destino toma la información, los demás la descartan al ver que no está dirigido a ellos.

Entonces estamos ya acotados a una red con protocolo de red TCP/IP v4 y veremos cómo a partir de un nombre de máquina se puede obtener (resolver) la dirección IP correspondiente para poder direccionar la información a nivel de protocolo de red.

 

Nombres NetBIOS y Hostnames

A todos los Windows cuando se los instala en red hay que asignarle un nombre de equipo. Previo a Windows 2000 este nombre corresponde a lo que se conoce como Nombre NetBIOS del equipo y es utilizado para la comunicación entre los mismos. Aunque la longitud máxima es de 16 caracteres, el sistema permite usar sólo 15 porque el último es utilizado para funciones reservadas al sistema.

Cuando tenemos instalado TCP/IP, en las propiedades del mismo se puede ver que existe también un campo llamado Hostname. Es también un nombre de equipo y por omisión es igual al nombre NetBIOS, y conviene que así sea. Pero este Hostname podría ser diferente y tiene características sintácticas muy distintas: puede tener hasta 63 caracteres y sólo están permitidos letras, números y el signo menos (-); a diferencia del nombre NetBIOS que permite la utilización de algunos símbolos.

A partir de Windows 2000, el nombre que colocamos al equipo es el Hostname, no el nombre NetBIOS. Este último es igual al hostname y a diferencia de los casos anteriores no se puede hacer diferente. Windows 2000 y posteriores siguen utilizando el nombre NetBIOS por compatibilidad con los anteriores sistemas operativos y aplicaciones basadas en NetBIOS.

 

Cuando se utiliza cada uno

Una de las preguntas más frecuentes es ¿cuándo se utiliza el Hostname y cuándo el nombre NetBIOS? Esto depende de la aplicación o sintaxis que usemos, pero en general podemos decir que siempre que utilicemos \\server, el sistema interpreta que “server” es el nombre NetBIOS del equipo; y siempre que utilicemos utilitarios de TCP/IP (ftp, telnet, ping, etc.), por ejemplo “ping host” el sistema interpreta que “host” es el hostname.

Para qué toda esta disquisición, porque existen diferentes métodos para resolver nombres NetBIOS y Hostnames. Una de las ventajas de la implementación que hace Microsoft es que si el sistema tiene que resolver un nombre NetBIOS, primero prueba por los métodos específicos, pero si no pudiera, trata por los métodos de resolución de hostname. Si ambos son iguales, que es el valor por omisión, tiene más chances. Y la inversa también es verdad, si no puede resolver un hostname por los métodos propios trata de resolver con los métodos de NetBIOS.

Esto tiene una ventaja y un inconveniente. La ventaja: si no implementamos adecuadamente el sistema de resolución de nombres, igual funciona. La desventaja: ¿por qué demora tanto? porque está probando con varios métodos hasta encontrar uno que haga la resolución. Todo esto funciona si Nombre NetBIOS es igual a Hostname.

Un error muy común es confundir la resolución de nombres con el servicio de Browser (Examinador) que arma el Entorno de Red donde puedo observar los equipos que comparten recursos. Son dos cosas totalmente diferentes e independientes. Puede resolverse el nombre correctamente y sin embargo no ver el equipo en el Entorno de Red; o ver el equipo en el entorno de red y no poder resolver la dirección de red. Por eso cuando queremos ver si podemos acceder a un equipo la mejor forma es tratar de accederlo desde Inicio\Ejecutar (Start\Run) y \\nombre o con el comando “ping nombre”. Tener en cuenta que el comando ping admite dos sintaxis: “ping hostname” y “ping dir_IP”. Si es de interés en una nota posterior veremos el servicio de Browser.

 

Métodos de Resolución de Nombres NetBIOS

Los Windows utilizan los métodos de resolución normalizados y uno propio de Microsoft.

Los métodos normalizados son:

  • NetBIOS Name Cache
    Si en algún momento se resuelve una dirección, permanece durante un cierto tiempo el mapeo en memoria
  • Broadcast
    Se envía información en la red, dirigida a todas los equipos, que contiene algo así como “¿Qué dirección IP tiene el equipo que se llama Server?” Todos los equipos lo escuchan, pero contesta sólo el que se llama Server, informando su dirección IP
  • NBNS (NetBIOS Name Server). Microsoft lo implementa como WINS (Windows Internet Name Server)
    Un server con el servicio WINS instalado y los clientes configurados para usarlo. Para explicarlo en forma sencilla: cuando los clientes inicializan registran con el servidor WINS su nombre y su dirección IP. Con esta información el server construye una base de datos dinámica que incluye todos los clientes que se registraron. Luego cuando los clientes tienen que resolver una dirección IP le preguntan al servidor WINS que si puede responde adecuadamente.

Microsoft implementa un método propio que es una adaptación del método del archivo Hosts de Hostnames:

  • Archivo LMHOSTS
    Es un archivo de texto, donde cada renglón corresponde a un registro e incluye la dirección IP seguida de por lo menos un espacio y el Nombre NetBIOS correspondiente. Este archivo debe estar disponible y mantenerse individualmente en cada PC.

Seguramente lo que todos están esperando es ¿en qué orden los utiliza? Para eso debo explicar un parámetro adicional de TCP/IP que controla parte del orden: Tipo de Nodo. Este parámetro está en el Registro (Registry) y normalmente el sistema se ocupa de mantenerlo, aunque en algunos casos haya que modificarlo manualmente.

 

Tipo de Nodo

Este parámetro puede tener cuatro valores que identifican cada uno de los tipos de nodo y afectan la utilización de Broadcast y/o WINS:

  • B = Broadcast
    Cuando tiene que resolver nombres usa Broadcast, no WINS
  • P = Peer
    Cuando tiene que resolver nombres usa WINS, no Broadcast
  • H = Hybrid
    Cuando tiene que resolver nombres utiliza primero WINS. Si no resuelve prueba Broadcast
  • M = Mixed
    Cuando tiene que resolver nombres utiliza primero Broadcast. Si no resuelve prueba WINS

Si el equipo no tiene configurado servidor WINS utiliza nodo tipo B por omisión. Al asignarle manualmente la dirección de un servidor WINS, cambia automáticamente a tipo H. Si la dirección del servidor de WINS la obtiene por DHCP, el servidor DHCP debe cambiarle el tipo de nodo. En algunos casos puede ser necesario configurarlo a mano, por ejemplo cuando queremos que sea tipo M o P, y no lo hacemos a través de DHCP.

 

Orden de resolución de Nombres NetBIOS

Suponiendo un cliente configurado con dirección de servidor WINS y nodo tipo H, que es el más común, cuando tiene que resolver un nombre NetBIOS utiliza el siguiente orden:

  1. NetBIOS Cache
  2. Servidor WINS
  3. Broadcast
  4. Archivo LMHOSTS
  5. Si con ninguno de los anteriores pudo resolver, y va a probar con los métodos de resolución de Hostnames

 

Métodos de Resolución de Hostnames

Los métodos de resolución de Hostnames están normalizados y son:

  • Archivo Hosts
    Similar al archivo LMHOSTS visto antes, sólo que en este caso se incluyen los hostnames en lugar de los nombres NetBIOS
  • DNS (Domain Name Server)
    Un server con el servicio de DNS instalado y configurado. La construcción de la base con los registros puede ser hecha manualmente o en forma dinámica, de acuerdo a la versión utilizada. Windows 2000 utiliza protocolo DDNS (Dynamic DNS) y los clientes Windows 2000 se registran automáticamente. Windows NT 4.0 no soporta DNS dinámico, ni como cliente ni como servidor. La solución pasa por dos métodos: el primero consiste en dar manualmente de alta estos registros en el servidor DNS, la segunda es utilizar para estos clientes un DHCP server Windows 2000, y configurarlo para que cuando asigne direcciones IP, también haga la registración en el servidor DNS de las mismas
  • Hostname Cache
    A partir de Windows 2000, cuando resuelven un nombre a una dirección IP, esta información permanece almacenada en memoria durante un tiempo

Orden de resolución de Hostnames

Suponiendo un cliente Windows 2000 con dirección de servidor DNS configurado. Si no fuera Windows 2000 o posterior el cache no está disponible. Cuando tiene que resolver un Hostname usa el siguiente orden:

  1. Hostname Cache
  2. Archivo Hosts
  3. Servidor DNS
  4. Si con ninguno de los anteriores pudo resolver, y está configurado, va a probar por los métodos de resolución de nombres NetBIOS

NOTA: A partir de Windows 2003, el archivo Hosts está siempre contenido en el Hostname Cache

 

Optimización

Cuando vemos que el tiempo para acceder a un determinado equipo es muy lento, pero luego el servicio se presta normalmente, lo más probable es que estemos ante un problema de resolución de nombres. Debemos asegurarnos que el tipo de resolución que requiera el acceso esté entre los primeros en probar, y no que utilice primero otros que no resultarán.

Microsoft ha ido, en las últimas versiones, haciendo mejoras en los algoritmos de resolución. Por ejemplo: si el nombre comienza con “\\” se supone que lo que sigue es un nombre NetBIOS, pero si este es de más de 15 caracteres y/o contiene puntos “.” se da cuenta que no es nombre NetBIOS y prueba directamente por los métodos de Hostnames. Si incluye puntos estamos ante un FQDN (Fully Qualified Domain Name) en el cual la primera parte corresponde al Hostname o a un Alias: “host.dominio.com” por ejemplo.
En algunos casos se da también que inicia el segundo método sin esperar respuesta del primero. Es interesante, para el que quiera hilar fino, hacer pruebas utilizando un analizador de protocolo (Sniffer)

 

Resumiendo

Existen en una instalación Windows con TCP/IP dos nombres de equipo: el nombre NetBIOS y el Hostname. Dependiendo la aplicación o el comando que utilicemos se usa uno u otro. El sistema debería poder resolver ambos, aunque hay algunos requerimientos:

  • En ambiente de dominio NT4, es requerido resolver nombres NetBIOS. Es opcional la resolución de Hostnames, salvo que los necesite alguna aplicación.
  • En ambiente de dominio Windows 2000 o posterior puro, es requerido resolver Hostnames y FQDNs. Es opcional la resolución de nombres NetBIOS, salvo que sea utilizado por aplicaciones
  • En un ambiente de dominio Windows 2000 con clientes Pre-Windows 2000 se deben resolver ambos tipos de nombres, ya que los Controladores de Dominio y clientes Windows 2000 se encuentran a través de Hostnames, mientras que los Pre-Windows 2000 lo hacen a través de nombres NetBIOS.

About these ads
Posted in: Active Directory