viernes, 16 de octubre de 2015

Creación de Zona DNS con Powershell

Hay momentos en los que necesito crear múltiples zonas y crearlas correctamente.
Siempre necesito crear registros de tipo A, AAAA, CNAME, MX y además configurar correctamente los registro NS y el registro SOA.

He estado investiganco como crearlo automáticamente por powershell y parece que se peude hacer todo lo que quieras.

Utilizando el Powershell ISE y su ayuda con intellisense se puede hacer bastante fácil.

Aconsejo utilizar el parámetro "update-help dnsserver" en el powershell para que funcione el intellisense.



Los cmdlets que he utilizado son:

  • Remove-DnsServerZone
  • Add-DnsServerPrimaryZone
  • Remove-DnsServerResourceRecord
  • Add-DnsServerResourceRecordAAAA
  • Add-DnsServerResourceRecordA
  • Add-DnsServerResourceRecordCName
  • Add-DnsServerResourceRecordMX
  • Add-DnsServerResourceRecord
  • Set-DnsServerResourceRecord

Aunque hay muchos mas.

Al final he hecho el script de powershell utilizando una variable para automatizarlo lo máximo posible. Lo pongo a continuación:

#Descarga la ayuda del dnsserver para que funcione el intellisense
update-help dnsserver


#Introducir el nombre de la zona en la siguiente variable
$QueZona ='prueba.es'
#Como es un ejemplo. BORRA la zona si está creada
Remove-DnsServerZone -Name $QueZona -force 
#Crea una zona primaria con un archivo de zona llamadao zona.dns
Add-DnsServerPrimaryZone -Name $QueZona -ZoneFile "$QueZona.dns"
#Elimina TODOS los registros NS de la zona recien creada. El registro inicial suele ser erroneo.
Remove-DnsServerResourceRecord -Name "@" -RRType Ns -ZoneName $QueZona -Force
#Crea registros de tipo AAAA, A, CNAME, MX
Add-DnsServerResourceRecordAAAA -IPv6Address 2001::115 -Name ns1 -ZoneName $QueZona
Add-DnsServerResourceRecordAAAA -IPv6Address 2001::115 -Name www -ZoneName $QueZona
Add-DnsServerResourceRecordA -IPv4Address 172.20.140.254 -Name ns2 -ZoneName $QueZona
Add-DnsServerResourceRecordAAAA -IPv6Address 2001::115 -Name mail -ZoneName $QueZona

Add-DnsServerResourceRecordCName -HostNameAlias "www.$QueZona" -Name ftp -ZoneName $QueZona
Add-DnsServerResourceRecordCName -HostNameAlias "www.google.es" -Name google -ZoneName $QueZona

Add-DnsServerResourceRecordMX -MailExchange "mail.$QueZona" -Name "@" -Preference 10 -ZoneName $QueZona

#Crea dos registros NS
Add-DnsServerResourceRecord -Name "@" -NameServer ns1.$QueZona -NS -ZoneName $QueZona
Add-DnsServerResourceRecord -Name "@" -NameServer ns2.$QueZona -NS -ZoneName $QueZona

#Modifica los parámetros de "Servidor primario" y "Número de serie" del registro SOA de la zona
$OSOA = Get-DnsServerResourceRecord -ZoneName $QueZona -RRType SOA
$NSOA = Get-DnsServerResourceRecord -ZoneName $QueZona -RRType SOA
$NSOA.RecordData.PrimaryServer = "ns1.$QueZona"
$NSOA.RecordData.SerialNumber = "2015101301"

Set-DnsServerResourceRecord -NewInputObject $NSOA -OldInputObject $OSOA -ZoneName $QueZona
 
Puedes descargar este y otros ejemplos de:

https://github.com/javiteran/Powershell.git

Espero que sea de vuestro interés.

Un saludo.