Saltar al contenido
Anuncios

Diferentes comandos para administrar DNS en Windows

Diferentes comandos para administrar DNS en Windows

Cuando escribimos un nombre de dominio -por ejemplo el nombre de la web en la que estás ahora mismo- tu ordenador realiza una “traducción” de dicho nombre a una dirección IP asociada. Es decir, que bajo la apariencia de que nada ocurre, en realidad suceden cosas. Y por supuesto pueden darse situaciones que impidan que dicha resolución tenga lugar, motivo por el cual te interesará conocer esta lista de comandos para gestionar DNS en Windows.

Hay muchos motivos por los que podría interesarnos comprobar el estado del Sistema de Nombres de Dominio en el ámbito de la administración de sistemas. Por ejemplo, para verificar que se actualizan correctamente o diagnosticar problemas de carga de sitios web.

¿Qué son los DNS?

Me permito citar en parte uno de mis artículos (que encontraréis más adelante) para definirlo. Un servidor DNS es, según la Wikipedia (definición completa aquí):

[…]un sistema de nomenclatura jerárquico descentralizado para dispositivos conectados a redes IP como Internet o una red privada. Este sistema asocia información variada con nombre de dominio asignado a cada uno de los participantes.

Según el que escribe estas líneas, existe además otra definición de DNS más de andar por casa y comprensible para todos: un servidor de este tipo posibilita la conversión de direcciones IP en formato numérico a un formato textual más fácil de asimilar para las personas.

Administrar DNS con nslookup

Una de las primeras herramientas que hemos de considerar es nslookup, una utilidad incluida en cualquier sistema Windows actual que nos permite hacer comprobaciones desde la consola (CMD o bien powershell).

RelacionadoDescubre cómo medir la velocidad de servidores DNS

Uso básico de Nslookup

Empezaremos describiendo la forma en que podemos ver el servidor DNS que realiza la traducción de nombres en nuestra red. Es el primer paso en la cadena cuando lanzamos una solicitud a una web/servicio ubicado en internet, o quizá en nuestra red u otra red departamental.

nslookup

En mi caso aparece listado el nombre de un appliance que tengo en mi red local, situado tras el encaminador (router) y que hará un reenvío de las solicitudes al mismo.

nslookup host privado

Ahora, si queremos ver la resolución de nombre para una IP, escribiremos lo siguiente:

nslookup <dirección_ip>

Obtendremos algo como lo siguiente.

nslookup público

En el campo nombre, aparece listado el nombre (valor A de registro DNS) para el host remoto, en este caso el servidor DNS primario de Google, tan conocido por todos. En el ejemplo anterior podemos hacer lo contrario, es decir, colocar en lugar de la IP un nombre de dominio, con lo que recibiremos la transcripción de la IP.

Comprobar resolución de nombres de un servidor

Veamos ahora otro ejemplo. Lo que haremos es efectuar una solicitud como la anterior (preguntaremos por la página web protegermipc.net) a un servidor de nombres concreto. Esto puede servirnos para determinar si dicho servidor de nombres funciona correctamente.

nslookup <host_remoto> <servidor_remoto>

nslookup host servidor 2

Podemos utilizar tanto el formato numérico (IP) como alfanumérico (nombre de dominio).

Pongamos el mismo ejemplo pero con otro servidor. Ahora preguntaremos por este sitio web a 1.1.1.1, el servidor de nombres primario de Cloudflare.

nslookup protegermipc.net 1.1.1.1

nslookup host servidor

Las primeras dos líneas se refieren al servidor al que hemos efectuado la consulta. La siguiente sección nos da el nombre del registro (A, por defecto) y su IP correspondiente. Nótese que la respuesta es “no autoritativa”.

Igual que para el ejemplo previo, podríamos sustituir sin problemas el dominio protegermipc.net por su correspondiente IP, o bien sustituir la IP del servidor de Cloudflare por su dirección numérica correspondiente.

Obtener respuesta autoritativa de un servidor DNS

Vamos ahora con algo un poco más curioso. En último ejemplo hablaba de que la respuesta recibida era no autoritativa. ¿A qué se refiere esto? Lo que nos dice es que hemos recibido una respuesta (que de hecho es perfectamente válida) pero que dicha respuesta no proviene del registro primario, de la raíz de los registros de nombres.

SOA es lo que se conoce como Start of Authority -comienzo de autoridad- y es que cada dominio tiene siempre un servidor DNS primario asociado.  En la siguiente imagen se explica como solicitud recursiva o solicitud no recursiva.

respuesta dns recursivaSi, cuando nuestro navegador pregunta al servidor DNS más cercano a nosotros, este no conoce la respuesta, lo que hará es lanzar una consulta recursiva (elevará nuestra consulta) a los servidores DNS con los que tiene contacto por distribución geográfica. Si ningún servidor tuviera registros de la web deseada, es escalaría dicha solicitud al servidor de nombres autoritativo o primario, que es el SOA.

Por supuesto, nosotros podemos recurrir directamente al SOA si queremos, sin tomar en cuenta la cadena habitual de resolutores (eso sí, seguiremos necesitando a nuestro servidor DNS loca por motivos evidentes).

Obtener el SOA de un host

nslookup -type=soa <dominio_o_IP>

nslookup soa

Preguntar al SOA por un host

Con el comando anterior hemos obtenido el valor SOA (ns1.wordpress.com) para el dominio, a través de nuestro resolutor local, que a su vez ha hecho sus preguntas o ya tenía en caché el resultado. De ahí que aún veamos una respuesta no autoritativa.

Ahora lo que haremos es preguntar por el dominio deseado al SOA específicamente.

nslookup -type=soa <dominio_o_IP> <servidor_DNS_SOA>

nslookup soa 2

Violá! Ahí lo tenemos, ns1.wordpress.com se corresponde con la ip198.181.116.9. También veremos otros datos más técnicos, en relación a los TTL -TimeToLive o Tiempo de Vida- para los registros DNS. razonable.

Comprobar caducidad de un registro DNS en caché con Nslookup debug

Los TTL o tiempos de vida se refieren a resultados que quedan en caché en los servidores primario, intermedios e incluso en nuestro mismo host local. El uso de la cache es muy importante para aliviar de carga a los servidores de nombres autoritativos, de lo contrario saturaríamos la red con “tanta pregunta” a los servidores.

El uso de la cache tiene un efecto negativo, sin embargo, y es que podríamos acabar recibiendo respuestas DNS desfasadas. Si vemos que la respuesta autoritativa (la que envía ns1.wordpress.com, en mi caso) y la no autoritativa (la que envía box.local, en mi caso) difieren, significaría que estamos utilizando un registro DNS cacheado en el resolutor de nombres de dominio al que hemos preguntado.

Para ver durante cuanto tiempo se cachea un registro usaremos la opción debug, como verás a continuación.

C:\WINDOWS\system32>nslookup -debug protegermipc.net
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0

QUESTIONS:
136.1.168.192.in-addr.arpa, type = PTR, class = IN
ANSWERS:
-> 136.1.168.192.in-addr.arpa
name = box.local
ttl = 0 (0 secs)

------------
Servidor: box.local
Address: 192.168.1.136

------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 0, additional = 0

QUESTIONS:
protegermipc.net.lan, type = A, class = IN

------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 0, additional = 0

QUESTIONS:
protegermipc.net.lan, type = AAAA, class = IN

------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 4, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 2, authority records = 0, additional = 0

QUESTIONS:
protegermipc.net, type = A, class = IN
ANSWERS:
-> protegermipc.net
internet address = 192.0.78.25
ttl = 150 (2 mins 30 secs)
-> protegermipc.net
internet address = 192.0.78.24
ttl = 150 (2 mins 30 secs)

------------
Respuesta no autoritativa:
DNS request timed out.
timeout was 2 seconds.
timeout (2 secs)
Nombre: protegermipc.net
Addresses: 192.0.78.25
192.0.78.24

La parte seleccionada en cursiva y color ojo representaría el bloque donde se muestra el TTL (tiempo de refresco) para el nombre de dominio de esta web. Pero cuidado, en el ejemplo hemos usado la siguiente sintaxis:

nslookup -debug <host>

Por tanto, hemos obtenido resultados del servidor de nombres más cercano (box.local). Si quisiéramos saber cómo trata la caché el SOA (servidor DNS primario para el recurso) lo añadiríamos al final, obteniendo algo así:

[...]
Got answer:
HEADER:
opcode = QUERY, id = 4, rcode = NOERROR
header flags: response, auth. answer, want recursion
questions = 1, answers = 2, authority records = 0, additional = 0

QUESTIONS:
protegermipc.net, type = A, class = IN
ANSWERS:
-> protegermipc.net
internet address = 192.0.78.25
ttl = 300 (5 mins)
-> protegermipc.net
internet address = 192.0.78.24
ttl = 300 (5 mins)
[...]

Gestionar DNS en Windows con ipconfig

La herramienta ipconfig es otra utilidad de linea de comandos de Windows que encontraremos en cualquier edición. Es el primer lugar al que acudir cuando necesitamos conocer la dirección IP que tiene asignado un aparato (ifconfig o ip addr en Linux).

Sin embargo también nos da otros datos valiosos y uno de ellos el servidor DNS primario/secundario suponiendo que hayamos asignado dos. Ojo, no me refiero al servidor SOA a pesar de haber usado el término primario, pero es el servidor DNS primario para nosotros. Esto es así porque de los posibles, será el primero en traducir la respuesta.

ipconfig all

Si hubiera más de uno, aparecería más de un registro, pero no es mi caso.

Ver y vaciar la caché DNS en Windows

Windows (y cualquier sistema operativo, por defecto) emplea una memoria cache local para resolución de nombres. Las entradas almacenadas en caché podemos verlas así:

ipconfig /displaydns

ipconfig displaydns

Si, por ejemplo, decidimos cambiar de servidores DNS, podríamos ver que los efectos no se notan de manera inmediata. Lanzaremos este comando para solucionarlo:

ipconfig /flushdns

ipconfig flushdns

La caché habrá quedado vacía y cualquier solicitud futura tendrá que pasar por el servidor DNS  que hayamos escogido.

Registrar DNS

Por último hablaremos de la opción para registrar dns en Windows. ¿Qué es lo que hace? Bien, si nuestro equipo reside en una red sin dominio (como un grupo de trabajo) realmente no hará nada útil. Tampoco ayuda en base a la comunicación con los servidores DNS públicos.

Por contra, si estamos en una red de dominio lo que hace el comando es bien crear o bien actualizar el registro A/AAAA de nuestro host (equipo) en el sistema de resolución de nombres integrado de Active Directory.

ipconfig registerdns

Hasta aquí por hoy. Nos ha dado tiempo a repasar algunas cosas interesantes acerca de los nombres de dominio, su funcionamiento y cómo administrar DNS en Windows. Cualquier errata, sugerencia o mejora será bienvenida en los comentarios, y por supuesto recuerda el dicho: compartir es vivir 😉

Categorías

Redes, Tutoriales, Windows

Etiquetas

, , , ,

Anuncios

Alejandro Ver todo

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

Deja tu comentario (puedes hacerlo de forma anónima)

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: