Descubre los 10 comandos de PowerShell para administrar tu servidor DNS Server y tenerlo completamente bajo control de manera sencilla e invirtiendo el mínimo tiempo posible.
En un artículo anterior, describimos los Comandos de PowerShell para desplegar un DNS Server de manera guiada, y tener un servidor de DNS completamente funcional con a penas esfuerzo administrativo.
Además, este proceso se podía guionizar en un pequeño script para replicarlo de manera rápida en caso de necesidad para, por ejemplo, hacer despliegues en otros clientes o para desplegar un nuevo servidor de DNS de manera rápida en caso de caída.
En este nuevo artículo vamos a ver cómo realizar algunas tareas de mantenimiento del DNS Server mediante comandos de PowerShell, seleccionando para ello diez comandos que pueden ayudarnos a administrarlo de manera sencilla.
10 comandos de PowerShell para la administración de tu Servidor DNS:
A continuación, vamos a ver algunos cmdlets útiles para la gestión del servicio de DNS, que nos permitirán administrar este servicio dentro de sistemas de servidores de Microsoft minimizando el esfuerzo administrativo.
Hemos de decir, que todos estos comandos pueden ser realizados mediante operación de entorno gráfico, pero mediante el uso de PowerShell se puede ahorrar mucho tiempo.
1. Detener el servicio de DNS:
Una de las primeras tareas que necesitamos saber hacer cuando mantenemos un servicio es detener el servicio, por lo que para detener el servicio de DNS lazaremos el siguiente comando.
Este comando en realidad es el que se usa comúnmente para la parada de servicios, pero con el “DNS” que indica que queremos detener el servicio de resolución de nombres:
Stop-Service DNS
Este comando solo será operativo para servidores, en los clientes se podrá parar la cache, pero no el servicio de DNS ya que se refiere al servidor.
2. Arrancar el servicio de DNS:
De igual manera que pasa con la parada del servicio, a la hora de arrancar el servicio de resolución de nombres ejecutaremos un comando genérico para servicios, pero ajustándolo para el servicio que nos ocupa.
El comando es muy similar al anterior, y básicamente solo deberemos cambiar el “stop” por “start”:
Start-Service DNS
Normalmente, este comando no muestra ningún mensaje de estado ni similar, para saber si se está ejecutando se podrá lanzar el comando “Get-Service DNS” o acceder a la consola gráfica. Lanzar este comando
3. Reiniciar el servicio de DNS:
Ya hemos aprendido a arrancar y parar el servicio, pero en ocasiones necesitamos poder reiniciar, o sea hacer una parada y un arranque rápidos del servicio.
Para hacer esto, y que pase por el ciclo de parada y arranque en un solo comando, se podrá lanzar el comando de reinicio:
Restart-Service DNS
Esto, entre otras cosas, hará que se relean los ficheros de configuración y podremos cargar cambios o solventar algún error puntual.
Con estos comandos, tendríamos lo básico para poder operar el servicio de DNS.
4. Comprobar la resolución de nombres:
Otra de las tareas más típicas es la de comprobar la resolución de nombres para ver si el sistema es capaz de resolver un nombre en concreto.
El cmdlet “Resolve-DnsName” realiza una consulta de DNS para el nombre especificado.
Este cmdlet es funcionalmente similar a la herramienta nslookup que permite a los usuarios consultar nombres.
Para ejecutarlo, se puede hacer básicamente de dos maneras que se verán a continuación:
- Lanzar el comando y que resuelva de la manera que quiera.
- Lanzar el comando forzando que resuelva un servidor concreto.
A continuación, veremos como hacerlo de las dos maneras.
En este primer caso vamos a ver como hacer la resolución del sitio web “www.jotelulu.com”.
Resolve-DnsName -Name www.jotelulu.com
En este segundo caso vamos a ver como resolver la web “www.jotelulu.com” usando para ello un servidor en concreto.
Resolve-DnsName -Name www.jotelulu.com -Server 10.0.0.1
5. Mostrar el contenido de la caché de DNS:
En ocasiones, puede ser interesante poder ver en qué estado se encuentra la caché de resolución de nombres de nuestro servidor, o de un cliente. En caso de necesitar hacerlo, se puede hacer mediante el método tradicional de CMD o mediante nuestro potente amigo PowerShell.
Para mostrar el contenido de la caché de DNS server mediante PowerShell podemos lanzar el siguiente comando:
Show-DnsServerCache
Este nos mostrará páginas y páginas de entradas por lo que puede ser interesante volcar la salida a un documento de texto para revisarlo cuidadosamente.
6. Limpiar la caché del servicio de DNS:
También es posible que necesitemos limpiar la caché del DNS server de nuestro servidor o nuestro cliente, y en caso de necesitar hacerlo, al margen de las opciones de CMD que tenemos disponibles, podremos usar nuestro propio comando de PowerShell:
Clear-DnsServerCache
Este comando puede lanzarse entre dos consultas para ver el cambio y la bajada de volumen de entradas.
7. Revisar las estadísticas del servicio de DNS:
Una tarea que puede ser interesante para poder hacer revisiones del DNS es el de mostrar las estadísticas del servidor DNS para ver entradas, consultas, etc.
En caso de querer ejecutar esta consulta, se podrá lanzar o desde la consola gráfica o desde un cmdlet de PowerShell.
El cmdlet de PoserShell es el siguiente:
Get-DnsServerStatistics
Una vez más, puede ser interesante volcar la salida a un documento de texto para revisarlo con tranquilidad o para hacer seguimiento y auditoría.
8. Revisar los detalles de la configuración del servicio de DNS:
Si necesitamos mostrar la configuración de nuestro servidor de DNS para revisarla o auditarla tendremos también un comando de PowerShell disponible. Esto hará que no sea necesario acceder a la consola gráfica para mostrarla.
Para mostrar los detalles de configuración del DNS server:
Get-DnsServer
En este caso también podremos volcar la salida de esta consulta a un archivo de texto (.txt) para revisarlo con tranquilidad o para hacer seguimiento y auditoría de posibles cambios, creando por ejemplo una baseline (línea base).
9. Añadir nuevos registros de servicios y equipos
Otra de las tareas típicas de toda infraestructura de resolución de nombres es el alta y la baja de los registros de servicios, equipos y servidores.
Para ello, lo primero que debemos tener en cuenta es que disponemos de distintos tipos de registros dentro del DNS.
Add-DnsServerResourceRecordCName -ZoneName <NOMBRE_ZONA> -Name <ENTRADA> -HostNameAlias <ALIAS_COMPLETO>
Donde:
- Add-DnsServerResourceRecordCName: Es el comando para dar de alta el registro de tipo CNAME.
- ZoneName <NOMBRE_ZONA>: Identifica la zona sobre la que se va a trabajar.
- Name <ENTRADA>: Es la entrada de registro que se debe dar de alta.
- HostNameAlias <ALIAS_COMPLETO>: Es el alias de la entrada que se está dando de alta
Un ejemplo de ello puede ser:
Add-DnsServerResourceRecordCName -ZoneName jotelulu.com -Name prueba-nacho -HostNameAlias prueba-nacho-jotelulu.com
Esto sería para el caso de CNAME, pero varía para otros registros, presentando una forma como la siguiente para cada caso.
A continuación, ponemos algunos ejemplos.
Para Registro PTR (puntero):
Add-DNSServerResourceRecordPTR -ZoneName 1.168.192.in-jotelulu.com -Name 12 -PTRDomainName nacho1-jotelulu.com
Para Registro A:
Add-DnsServerResourceRecordA -Name puntero -IPv4Address 192.168.1.122 -ZoneName server1.jotelulu.com -TimeToLive 01:00:00
Para Registro AAA:
Add-DnsServerResourceRecordAAAA -Name «nachopc» -ZoneName «jotelulu.com» -AllowUpdateAny -IPv6Address «fff4::1» -TimeToLive 01:00:00
Para registro MX:
Add-DnsServerResourceRecordMX -Preference 10 -Name «.» -TimeToLive 01:00:00 -MailExchange «mail.jotelulu.com» -ZoneName «jotelulu.com»
Entre otros ejemplos, para ver más ejemplos puede visitar la documentación de PowerShell para DNS.
10. Dar de baja registros de servicios y equipos
En caso de tener que retirar una de las entradas de registro de una de las zonas de resolución de nombres se deberá realizar el borrado del registro de DNS mediante el uso del comando “Remove-DnsServerResourceRecord”, que tal como vemos es bastante similar al usado para dar de alta la entrada, cambiando únicamente el verbo inicial.
Remove-DnsServerResourceRecord -ZoneName <NOMBRE_ZONA> -RRType <TIPO_REGISTRO> -Name <ENTRADA> –Force
Donde:
- Remove-DnsServerResourceRecord: Es el comando para el borrado del registro.
- ZoneName <NOMBRE_ZONA>: Identifica la zona sobre la que se va a trabajar.
- RRType <TIPO_REGISTRO>: Es el tipo de registro disponible entre las opciones A, AAA, MX, CNAME, etc.
- Name <ENTRADA>: Es la entrada de registro que se debe borrar.
- Force: Fuerza el borrado.
Como en el apartado previo, se debería distinguir en el caso de cada tipo de registro, siendo A, AAA, MX, etc.
Un ejemplo de ello podría ser:
Remove-DnsServerResourceRecord -ZoneName jotelulu.com -RRType A -Name pc-jioller –Force
Conclusiones
Como puedes ver, conocer algunos comandos de PowerShell puede ayudar a optimizar el servidor de DNS de manera realmente sencilla.
Las tareas de administración básicas se pueden realizar usando los cmdlets que se han mostrado, realizando casi la totalidad de las tareas necesarias de esta manera.
Si quieres leer más sobre este tema puedes echarle un ojo al artículo Comandos de PowerShell para desplegar un DNS Server en este mismo blog.
Y si quieres leer un poco más sobre DNS Server, puedes consultar el artículo Qué hacer cuando el Servidor DNS no responde que podrás encontrar dentro de este mismo blog.
¡Gracias por acompañarnos!