A veces, es necesario comprobar cómo se está comportando el DNS en sus configuraciones, ya sean simples o complejas. Por suerte, los ordenadores traen una utilidad integrada que ayuda a hacerlo. Este recurso explica una serie de comandos útiles en PowerShell y el símbolo del sistema de Windows y expone las diferencias entre los dos shells. Entremos, pues, en materia. (Aunque, siendo realistas, seguramente ni esté leyendo esto porque, con toda probabilidad, se ha saltado esta parte y ha ido directamente a los comandos. ¡Típico!) .
Nota: Todos los ejemplos se refieren a un sistema que ejecute Windows 10.
Windows introdujo su símbolo del sistema (CMD) original para los sistemas operativos de Microsoft en 1981. Este programa funciona «por debajo» de Windows y proporciona un mayor control sobre el sistema. Se ejecuta en una simple ventana negra que muestra un prompt. Dependiendo del equipo, el prompt sería algo parecido a esto: C:\> o C:\Users\example. Esta herramienta permite ejecutar comandos de una sola línea.
PowerShell se lanzó por primera vez en Windows en 2006. Este shell se ejecuta en una ventana azul y utiliza unos comandos llamados cmdlets, en lugar de comandos CMD o MS-DOS. Incluye un sistema de secuencias de comandos y funciones de administración integradas, y puede ejecutar comandos Batch. Esto significa que se puede completar una serie de cmdlets, en lugar de un solo comando cada vez. A diferencia del símbolo del sistema de Windows, PowerShell no está limitado a programas de consola. La versión actual se ejecuta en .Net 5.0, que es compatible con Linux y macOS. PowerShell también puede acceder a diferentes bibliotecas de varios sistemas.
Hay varias formas de arrancar el símbolo del sistema de Windows. Una de ellas es hacer clic en el icono de búsqueda de la barra de tareas y escribir «símbolo del sistema» o «cmd». La aplicación debería aparecer, entonces, en la parte superior de la ventana de búsqueda, bajo «Mejor coincidencia».
Si le gustan los atajos de teclado tanto como a mí, también puede presionar Win + R y se abrirá el comando «Ejecutar». Escriba «cmd» y haga clic en «Aceptar». Así de sencillo.
Se puede acceder a PowerShell de la misma forma en que se accede al símbolo del sistema de Windows, pero, en lugar de escribir «cmd» en la ventana de búsqueda o del comando «Ejecutar», escribimos «PowerShell». Eso sí, si utiliza la opción de búsqueda, verá que hay una pequeña diferencia, ya que al introducir «PowerShell», aparecen dos opciones: Windows PowerShell y Windows PowerShell ISE. Aquí voy a utilizar el Windows PowerShell básico.
Otra opción es presionar Win + X. Esto abrirá un menú nuevo que le dará la posibilidad de acceder a PowerShell como administrador. En este menú aparecen también otras herramientas de Windows, como el comando «Ejecutar».
¿Sabía que…? PowerShell ISE es una aplicación host para PowerShell. «ISE» son las siglas de «Integrated Scripting Environment» (entorno de secuencias de comandos integrado). Esta opción ofrece una interfaz, mientras que el PowerShell estándar se parece más al símbolo del sistema.
Y por fin llegamos a la parte que, sin duda, más le interesa. A continuación, expongo varios comandos CMD de Windows que le ayudarán a diagnosticar o verificar su DNS. (No se preocupe, que como tengo mucha imaginación, voy a fingir que mi trabajo no ha sido en vano y que no se ha saltado las secciones anteriores para venir a esta directamente).
El comando «nslookup» ayuda a diagnosticar problemas con la resolución de nombres DNS y es comparable al comando «dig» en Mac y Linux. Puede encontrar la dirección IP de un host o realizar una búsqueda de DNS inversa (para encontrar el nombre de dominio de una IP). «nslookup» también puede ofrecer información sobre los registros DNS para su dominio.
Un comando «nslookup» sería algo así: C:\Users\username>nslookup dnsmadeeasy.com
En este ejemplo, hice una consulta simple para obtener la dirección IP de «DNS Made Easy». Como respuesta, recibí la dirección IPv6 e IPv4 para el dominio. La razón por la que dice «non-authoritative answer» (respuesta no autoritativa) es que estoy utilizando un servidor recursivo para la consulta.
Si tiene una dirección IP y necesita el nombre del dominio, puede realizar una búsqueda de DNS inversa. La consulta se hace de la misma manera que en el ejemplo anterior, pero (como habrá deducido) se busca lo contrario:
C:\Users\username>nslookup 162.243.68.201
Pongamos que quiere encontrar el servidor de nombres para un dominio concreto o configurar un parámetro específico en la línea de comandos. En este caso, utilizaría el comando «set» de Windows. Por ejemplo:
C:\Users\username>nslookup
>set q=ns
>dnsmadeeasy.com
(Hay que pulsar «Intro» después de escribir cada comando)
El resultado debería ser algo así:
También puede utilizar los comandos «nslookup» y «set» para verificar o diagnosticar los registros DNS para su dominio. El proceso es el mismo que en el ejemplo anterior, con la diferencia de que, en este caso, se especifica el registro para el cual se desea realizar la consulta. Con esta información, se puede abordar rápidamente cualquier error o problema que detecte. En la captura de pantalla de aquí abajo, realicé una búsqueda para los registros MX, PTR, y SOA, pero, por supuesto, no son los únicos que se pueden consultar.
C:\Users\username>nslookup
>set q=mx
>dnsmadeeasy.com
(Hay que pulsar «Intro» después de escribir cada comando)
Consejo: Para consultar varios tipos de registros, no es necesario escribir «nslookup» para cada uno de ellos. En lugar de eso, introduzca el comando «nslookup» inicial y, a continuación, ejecute comandos «set» para cada registro. Esto puede hacerlo incluso si después empieza a verificar registros para un dominio diferente.
Consejo: Nunca está de más limpiar la caché del DNS antes de ejecutar comandos. Para ello, escriba «ipconfig/flushdns» y pulse «Intro». Esto debería borrar la caché.
Para obtener información adicional sobre el DNS de su dominio, puede utilizar el comando «debug», que proporcionará la información del encabezado de las solicitudes al servidor DNS (ver la siguiente captura de pantalla).
C:\Users\username>nslookup
>set debug
>example.com
Para diagnosticar la red, puede ejecutar un comando «ping» en CMD, que sirve para medir la latencia de una conexión en una ubicación de destino. A efectos de demostración, voy a realizar una prueba de ping con 8.8.8.8, la dirección de DNS pública de Google.
C:\Users\username>Ping 8.8.8.8
Así, se sabe el tiempo total que se tarda en obtener una respuesta del servidor al que se le hace el ping.
Otro comando útil para el diagnóstico de redes es el comando «traceroute», que traza la ruta de un paquete desde el punto de origen hasta el destino. Resulta muy útil sobre todo para solucionar problemas de conectividad. En la siguiente captura de pantalla, hago un traceroute al nombre de dominio www.example.com y su dirección IP.
C:\Users\username>tracert 127.0.0.1
C:\Users\username>tracert www.example.com
Lo que hace el comando es comprobar la ruta que siguen los paquetes para llegar a su destino. Las diferentes paradas enumeradas en esta lista se conocen como «saltos» o «hops». Además del número de saltos, se ve también el tiempo que se ha tardado en responder a la consulta. Esta información puede ayudarle a mejorar la velocidad de su DNS o a identificar routers problemáticos.
Consejo: El símbolo del sistema guarda un historial de los comandos recientes. Si necesita ver un comando que se haya introducido anteriormente durante la sesión, presione la tecla de la flecha hacia arriba para ir pasando de comando en comando, tal y como se muestra en el GIF de aquí arriba.
Si prefiere la utilidad Windows PowerShell, esta es su sección. Estos son los equivalentes de los comandos de Windows que acabamos de ver en PowerShell:
En PowerShell, el comando «nslookup» es «Resolve-DnsName».
PS C:\Users\username>Resolve-DnsName dnsmadeeasy.com (o C:\Users\username>Resolve-DnsName 162.243.68.201)
Consejo: Para ahorrar tiempo en PowerShell, empiece a escribir las primeras letras de un cmdlet y pulse el tabulador para completar el resto automáticamente. Por ejemplo, al escribir «reso» y pulsar el tabulador (reso + Tabulador), PowerShell autocompletará «Resolve-DnsName». Lo mismo para cualquier otro cmdlet, como «Test-Connection» (empiece a escribir «test-con» y pulse el tabulador, y así con todos).
PowerShell utiliza el cmdlet «Resolve-DnsName» para las búsquedas de registros. Para especificar el registro en cuestión, deberá completar el cmdlet añadiendo «-type».
PS C:\Users\username>Resolve-DnsName dnsmadeeasy.com -Type MX (o el registro que elija).
Fíjese en que no importa si escribo «-Type» o «-type»; el cmdlet se ejecuta igual porque, en este caso, PowerShell no distingue entre mayúsculas y minúsculas.
En PowerShell, «Test-Connection» es el equivalente del comando «ping».
PS C:\Users\username>Test-Connection dnsmadeeasy.com
Los resultados se presentan de manera distinta, pero seguimos viendo el origen (nombre del ordenador), los saltos y el tiempo que se ha tardado en recibir una respuesta.
Tracert en PowerShell es «tracert». En esta ocasión, el cmdlet sí que se llama igual que el comando de CMD.
PS C:\Users\username>tracert example.com
Los recursos en línea también son de gran ayuda para solucionar problemas con el DNS. Estas herramientas son especialmente útiles, ya que se puede acceder a ellas desde cualquier lugar y con cualquier dispositivo. Por ejemplo, la herramienta de búsqueda de DNS de Constellix (nuestra empresa asociada) puede recuperar registros DNS y realizar comprobaciones en función de la ubicación geográfica. También realizará búsquedas en cualquier servidor de nombres que se especifique. Los registros compatibles son A, AAAA, CNAME, MX, TXT, NS, SOA y SRV.
Otras de las ventajas de utilizar la herramienta de búsqueda de DNS de Constellix son que se pueden realizar comprobaciones en diferentes dominios o servidores de nombres en una misma sesión y que los resultados se pueden filtrar por dominio, tipo de registro, solucionador o ubicación, además de poder maximizar o minimizar cada comprobación. Además, también puede copiar la URL de los resultados y enviársela a su equipo por correo electrónico, algo que, además de resultar muy cómodo, ahorra muchísimo tiempo.
Las opciones que acabamos de ver permiten verificar el DNS y solucionar problemas. Puntos clave: el símbolo del sistema, PowerShell y las herramientas de DNS en línea proporcionan el servidor de nombres, las instrucciones de registro y otra información relativa al DNS, pero su funcionamiento varía. CMD utiliza comandos de una sola línea, mientras que PowerShell utiliza cmdlets y puede ejecutar comandos Batch. Hay recursos, como la herramienta en línea de búsqueda de DNS de Constellix, que realizan comprobaciones en función de la información que escriba.
Evidentemente, esta no es, ni mucho menos, una guía completa del símbolo del sistema o de PowerShell. Ambos shells sirven para mucho más. A continuación, le dejo algunos enlaces que le ayudarán a conocer mejor estas dos utilidades.
Si le ha parecido interesante este artículo, estos otros recursos podrían resultarle útiles:
Lista de comandos del símbolo del sistema de Windows