Búsqueda de sitios web

Cómo cambiar de forma segura la configuración del cliente DNS


Imagine el siguiente escenario:

  • Ha introducido un par de servidores DNS nuevos, quizás como parte de una actualización del controlador de dominio.
  • Quiere desmantelar los antiguos servidores DNS
  • Todos sus servidores tienen configuración de IP estática

¿Cómo puedes cambiar SEGURAMENTE y FÁCILMENTE la configuración DNS de todos tus servidores?

Automatización de PowerShell

La respuesta a esta pregunta es, por supuesto, PowerShell. Si tiene una gran cantidad de servidores, querrá automatizar este proceso.

Sin embargo, las cosas pueden ir mal rápidamente si no tienes cuidado con esto. Estropear la configuración DNS de tu servidor prácticamente puede hacer estallar tu entorno.

Al trabajar con un cliente que enfrenta exactamente este desafío, se nos ocurrió el siguiente guión:

$HostNames = Import-Csv "DNS_Clients_HostNames.txt" -Delimiter ";"
$OldDNS = ('10.45.1.5', '10.45.1.6')
$NewDNS = ('10.45.1.10', '10.45.1.11')
$ScriptBlockRead = {Get-NetAdapter | Get-DnsClientServerAddress | ? {$_.ServerAddresses -like $OldDNS[0] -OR $_.ServerAddresses -like $OldDNS[1]}}
$ScriptBlockWrite = {Get-NetAdapter | Get-DnsClientServerAddress | ? {$_.ServerAddresses -like $OldDNS[0] -OR $_.ServerAddresses -like $OldDNS[1]} | Set-DnsClientServerAddress -ServerAddresses $NewDNS}
ForEach ($HostName in $HostNames){
    $Adapter = Invoke-Command -ComputerName $HostName.Hostname -ScriptBlock $ScriptBlockRead -ErrorAction SilentlyContinue
    If ($Adapter){
        $Output = $HostName.HostName + ";" + $Adapter.InterfaceAlias + ";" + $Adapter.InterfaceIndex + ";" + $Adapter.ServerAddresses
        Write-Host $Output
        #Invoke-Command -ComputerName $HostName.Hostname -ScriptBlock $ScriptBlockWrite
    }
    Else {
        Write-Host Skipping $HostName.HostName
    }
}

El script toma un archivo de entrada llamado "DNS_Clients_HostNames.txt". Los archivos de entrada deben tener un encabezado (primera línea) llamado "Nombre de host", similar a este:

Hostname
FILESRV01.domain.local
FILESRV02.domain.local
FILESRV03.domain.local
WEBSRV01.domain.local
WEBSRV02.domain.local

Una cosa a tener en cuenta sobre el script es que la línea 11 está comentada: esta es la línea que realmente cambia la configuración DNS del servidor.

Esto se hace como precaución adicional para permitirle evaluar el resultado del script antes de realizar cambios en vivo.

Una vez que haya probado el resultado del script, puede quitar el comentario de la línea 11 para permitir que el script realice los cambios reales en la configuración del cliente DNS de su servidor.

Otra medida de seguridad sería limitar su archivo de entrada a sólo unos pocos servidores. Verifique los servidores manualmente después de ejecutar el script. Si todo parece bien, puede ampliar el archivo de entrada a su lista completa de servidores.

Cuando haya ejecutado el script y haya cambiado todos sus servidores, puede usar el mismo script para verificar que el script ahora omita todos los servidores. Esto indica que la configuración del cliente DNS ha cambiado, ya que ahora no se encuentra ningún adaptador con la configuración anterior del servidor DNS.

Espero que puedas utilizar el guión, tal vez como inspiración para tu propio enfoque. Úselo bajo su propio riesgo ?

Artículos relacionados