DNS: Scavenging: los registros no se eliminan si la depuración se deshabilita manualmente con DNSCMD

En este artículo se proporciona una solución a un problema en el que se habilita Scavenging en el servidor DNS de Windows para deshacerse de algunos registros antiguos y obsoletos de la zona.

Se aplica a: Windows Server 2012 R2
Número de KB original: 2791165

Síntomas

Es posible que se encuentre en un escenario en el que habilite Scavenging en windows DNS Server para deshacerse de algunos registros antiguos y obsoletos en la zona.

Configure el ciclo de Scavenging y el envejecimiento (sin intervalo de actualización y actualización) adecuados para su entorno y espere a que el ciclo de Scavenging elimine los registros.

Observe que el ciclo de Scavenging se ejecuta, pero no elimina los registros con marcas de tiempo antiguas.
Decide esperar a que se ejecute otro ciclo de depuración, pero aún así los registros no se eliminan.

Causa

Puede entrar en este escenario en el que la zona DNS se configuró anteriormente manualmente para que un servidor diferente (mediante dnscmd) la eliminación se haya deshabilitado en el entorno y, a continuación, se haya habilitado de nuevo en otro servidor.

Solución

Para la zona en cuestión, ejecute el siguiente comando:

dnscmd /zoneinfo contoso.com

(Usaré la zona como contoso.com por ejemplo) Obtendrá el resultado de la siguiente manera:

Zone query result:

Zone info:

                ptr                   = 0000000000327C90
                zone name             = ocntoso.com
                zone type             = 1
                shutdown              = 0
                paused                = 0
                update                = 2
                DS integrated         = 1
                read only zone        = 0
                in DS loading queue   = 0
                currently DS loading  = 0
                data file             = (null)
                using WINS            = 0
                using Nbstat          = 0
                aging                 = 1
                 refresh interval    = 168
                  no refresh          = 168
                  scavenge available  = 3606130
                Zone Masters          NULL IP Array.
                Zone Secondaries   NULL IP Array.
                secure secs           = 3
                directory partition   = AD-Domain     flags 00000015

                zone DN               = DC=contoso.com,cn=MicrosoftDNS,DC=DomainDnsZones,DC=contoso,DC=com          Scavenge Servers

                 Ptr          = 000000000031D480
               MaxCount     = 1

                AddrCount    = 1
                                Server[0] => af=2, salen=16, [sub=0, flag=00000000] p=13568, addr=192.168.1.1

Aquí verá la dirección IP 192.168.1.1. Es la dirección IP del servidor la que tiene permiso para guardar la zona (lo más probable es que este sea un servidor que ya no existe) Si no es la dirección IP del servidor en el que ha configurado Scavenging, es necesario cambiarlo. Para cambiar el servidor de Scavenging para una zona, ejecute el comando :

dnscmd /zoneresetscavengeservers contoso.com <Ip of the current DNS Server>

donde <la dirección IP del servidor> DNS actual es la dirección IP del servidor DNS donde está configurado Scavenging.

Más información

El siguiente comando restablece toda la configuración del servidor de scavenging y quita los servidores especificados manualmente.

dnscmd /zoneresetscavengeservers contoso.com (without ip address).

Nota:

El tiempo máximo que un registro obsoleto puede tardar en eliminarse a través de Scavenging es (Sin intervalo de actualización + Intervalo de actualización + Intervalo de ciclo de eliminación).