Resolución de Nombres de Máquina (DNS, WINS, etc.)

Primero vamos a definir exactamente qué significa esta expresión “Resolución de Nombres”. Cuando tenemos un grupo de máquinas 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 https://windowserver.wordpress.com  o hacemos un acceso directo a \\servidor\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 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, y 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/IPv4 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 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 (Microsoft sólo soporta hasta 24) 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 y 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.

Pero de todas formas, debemos tener en cuenta que el que decide cuál se usa es el desarrollador de la aplicación. Inclusive nos estamos refieriendo con esto al propio Windows.

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

 

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

Si con ninguno de los anteriores pudo resolver, 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:

  • Localhost
    Algunos autores lo consideran un método de resolución de nombres y otros no. Consiste en ver si no se trata del propio equipo.
  • 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 y posteriores utilizan DDNS (Dynamic DNS) y los clientes Windows 2000 y posteriores 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 o posterior, 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 determinado por el servidor DNS que la hizo

Orden de resolución de Hostnames

En este momento debemos hacer una aclaración sobre una característica que implmenta Microsoft a partir de Windows 2003: el archivo HOSTS forma parte del Hostname Cache. Es decir, cualquier entrada en el archivos HOSTS es automáticamente puesta en el Hostname Cache sin tiempo de expiración.

Suponiendo un cliente Windows 2000 o posterior 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. Localhost
  2. Hostname Cache + archivo HOSTS
  3. Servidor DNS

Si con ninguno de los anteriores pudo resolver, y está configurado, va a probar por los métodos de resolución de nombres NetBIOS

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.

 

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, 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 o posterior 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.

Anuncios
Post a comment or leave a trackback: Trackback URL.

Comentarios

  • Marcelo Samia  On 25/11/2013 at 20:41

    Me gusto mucho como explicaste el tema de los nodos.

    • Guillermo Delprato  On 26/11/2013 at 06:51

      Hola Marcelo, me alegro que te sirva lo de los nodos, pero “cuidado”, porque el tipo por omisión era verdad hasta W2003/XP, actualmente el nodo por omisión es H (Hybrid)

  • Carlos Porras  On 29/10/2015 at 20:10

    Buenas tardes, tengo un servidor de dominio y DNS con ip 192.168.1.2 y un servidor Milrotik que tiene las funciones de Router/Proxy/Firewall con ip 192.168.1.254, sucede que cuando a una PC le asigno la IP del servidor de dominio en Servidor DNS Preferido el usuario inicia sesión rápidamente e ingresa a los recursos compartidos por \\servidor\compartido hasta aquí todo bien, pero cuando le asigno la IP del router Mikrotik para bloquear paginas web y algunas otras restricciones de navegación la PC tarda mucho cuando el usuario inicia sesión y ya no puede ingresar al recurso compartido por \\servidor\compartido pero si le asigno la IP \\192.168.1.2\compartido si ingresa.

    Yo necesito que la PC tenga asignada la IP del router Mikrotik pero que a su vez me permita resolver nombre por Host para poder iniciar sesión y acceder a los recursos compartidos mediante validación por Host del servidor o que método puedo usar.

    Quedo atento a vuestra respuesta.

    • Guillermo Delprato  On 30/10/2015 at 06:31

      Hola Carlos, separemos los temas
      Para que pueda salir a Internet, tiene que tener al Router configurado como Puerta de Enlace
      Pero para resolver nombres del Dominio, obligatoriamente tiene que tener para usar como DNS *únicamente* al Controlador de Dominio con DNS
      Para que los nombres de Internet, en la consola del DNS se le configura la ficha Reenviadores, normalmente a los DNSs del ISP o de Google. Si fuera que el Router el que limita el acceso a páginas de Internet, entonces debes configurar como Reenviadores del DNS al Router

  • Julio  On 18/02/2016 at 13:32

    Que tal Guillermo,
    Haciendo pruebas de crear directamente los nombres de computadora (computadoragerencia01 y computadoragerencia02) usando ADUC en W2K8R2 , el primero lo crea sin ningun problema y le asigna el “computer name (pre windows 2000)” con los primeros 15 caracteres, por tal motivo la creación de la segunda computadora no lo permite porque ya existe otro nombre pre windows 2000, a no ser que cambiemos este pre windows 2000 computer name (no creo que sea recomendable). Se podría concluir que a pesar de que los hostname acepten nombres mas largos, no es aconsejable usar nombres de equipo mayores a los 15 caracteres ??
    Al ingresar un equipo al dominio, la verificación de la existencia de otro nombre duplicado asumo que la hace tambien con este Pre windows 2000 computer name que vendria a ser el parte del sAMaccount name ??
    Cual sería tu recomendación para la asignación de nombres de equipo ?

    • Guillermo Delprato  On 18/02/2016 at 14:21

      Hola Julio, exactamente no es conveniente superar los 15 caracteres. Todo lo que utilice NetBIOS tiene ese límite. Y además te cansarás de escribir :)
      Tampoco puede ser sólo números, y hay varias limitaciones. Te dejo un enlace donde explica todo el tema de los nombres
      Naming conventions in Active Directory for computers, domains, sites, and OUs
      https://support.microsoft.com/en-us/kb/909264

  • pablo  On 13/02/2017 at 05:36

    hola tengo una duda ;

    Se supone que configure mi servidor DNS en una red local, esto quiere decir
    que las demas pcs podran accesar a racanix.com pero no se puede…
    Tengo que agregar mi dns a las demas pcs para que resuelva mi dominio.
    Hay alguna forma que les resuelva sin colocar el dns a cada pc???

    • Guillermo Delprato  On 13/02/2017 at 07:22

      Hola Pablo, no dices, ni yo tengo idea si esa dirección es la de tu red, o es externa
      En ambiente de Dominio Active Directory, la única forma que debe configurarse para que todo funcione adecuadamente, es que todas las máquinas que forman parte del Dominio tengan configurado para usar como DNS únicamente a el o los Controladores de Dominio con DNS
      Y para que resuelvan nombres externos, en los servidores DNS se configuran “Reenviadores”

Trackbacks

Este espacio es para comentarios sobre la nota. No es un sitio de soporte

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: