locked
Mise à jour dynamique intermittente du DNS par le DHCP RRS feed

  • Question

  • Bonjour,

    J'ai une plateforme DHCP sur windows server 2016 configuré ainsi pour mettre à jour les enregistrements DNS des clients auprès du DNS:

    - mise à jour dynamique activé

    - le serveur dhcp met toujours à jour les enregistrements A et PTR

    - le serveur dhcp est membre du groupe DnsUpdateProxy

    - le serveur DHCP utilise les crédentials pour la mise à jour (le mot de passe de ce compte n'expire jamais et ce compte n'a pas de privilèges administrateurs)

    Le serveur DHCP doit mettre à jour les enregistrements DNS sur les serveurs DNS 2016 donc les zones sont intégrées à Active Directory.

    Nous constatons que les échecs de mises à jour sont récurrents et aucune erreur n'est spécifiée. Aussi les erreurs sont plus fréquentes pour les enregistrements PTR.

    Comment peut-on résoudre le problème?


    xxxxxxxxxxxxxxx@xxxxxxxxxx


    lundi 21 septembre 2020 14:23

Réponses

  • J'oubliais,

    Lorsque le ou les serveurs DHCP sont configurés pour mettre à jour les enregistrements d'Hosts dans le DNS, on constate parfois que ces enregistrements datent et ne sont pas mis à jour.
    Il peut être alors difficile d'identifier la root-cause afin de l'éliminer.
    Pour ce faire, on va activer le mode "Enregistement de debogage" dans "Propriétés du serveur DNS".

    Ref : https://adamtheautomator.com/microsoft-dns-debug-log-script/

    On laisse tourner quelques temps pour que le fichier de débogage s'alimente, puis on examine ce dernier.
    Cependant, en tirer la quintescence rapidement est hardu car ce fichier peut comprendre plusieurs dizaines de milliers de lignes.

    L'objectif du script ci-dessous est de fournir un moyen simple et rapide d'arriver à cet objectif.

    Description générale du fonctionnement :
    > Recherche de toutes les IPs de l'ensemble des serveurs DNS du domaine courant
    > Recherche dans l'ensemble des lignes du fichier de log les lignes qui ne comprennent pas la chaine 'NOERROR' ou sont vides
        > Puis dans ces lignes, recherche des lignes comprenant une IP
        > puis dans les lignes comprenant une IP, celles dont l'IP ne correspond pas à celle des serveurs DNS. Ce sont donc des IPs de client DNS.
    > Construction d'un PSCustomObject avec les info synthétiques et export cans un fichier .csv

    J'ai repris le script dans le lien ci-dessus,j'ai juste ajouté et francisé les commentaires

    #requires -Module ActiveDirectory
    <#
    Lorsque le ou les serveurs DHCP sont configurés pour mettre à jour les enregistrements d'Hosts dans le DNS, on constate parfois que ces enregistrements datent et ne sont pas mis à jour. 
    Il peut être alors difficile d'identifier la root-cause afin de l'éliminer. 
    Pour ce faire, on va activer le mode "Enregistement de debogage" dans "Propriétés du serveur DNS". 
    
    Ref : https://adamtheautomator.com/microsoft-dns-debug-log-script/
    
    On laisse tourner quelques temps pour que le fichier de débogage s'alimente, puis on examine ce dernier. 
    Cependant, en tirer la quintescence rapidement est hardu car ce fichier peut comprendre plusieurs dizaines de milliers de lignes.
    
    L'objectif du script ci-dessous est de fournir un moyen simple et rapide d'arriver à cet objectif. 
    
    Description générale du fonctionnement : 
    > Recherche de toutes les IPs de l'ensemble des serveurs DNS du domaine courant
    > Recherche dans l'ensemble des lignes du fichier de log les lignes qui ne comprennent pas la chaine 'NOERROR' ou sont vides
        > Puis dans ces lignes, recherche des lignes comprenant une IP
        > puis dans les lignes comprenant une IP, celles dont l'IP ne correspond pas à celle des serveurs DNS. Ce sont donc des IPs de client DNS.
    > Construction d'un PSCustomObject avec les info synthétiques et export cans un fichier .csv
    #>
    
    
    # DNS server name sous forme NETBIOS ou FQDN
    $dnsServer = $env:COMPUTERNAME 
    # Le fichier .csv qui va être créé
    $OutputFilePath = 'C:\DNSLog\DNSDebugLogSummary.csv' 
    
    # Le fichier de log qui a été défini dans la zone de diaglogue "Enregistrement de debogage"
    $DnsDebugLogFilePath = "\\$dnsServer\c$\DnsLog\DDNSTroubleshooting.log"
    
    # Recherche de toutes les IPs des serveurs DNS du domaine courant
    $DnsServerIPs = ((Get-ADDomain).ReplicaDirectoryServers | Resolve-DnsName).IPAddress
    Write-Verbose -Message "DNS servers trouvés $($DnsServerIPs -join ',')"
    
    # Recherche dans l'ensemble des lignes du fichier de log des lignes qui ne comprennement pas la chine de texte 'NOERROR' ou sont vides.
    # Cela récupère seulement les lignes avec des erreurs.
    Select-String -Pattern 'NOERROR|^\s*' -Path $DnsDebugLogFilePath -NotMatch | 
        foreach {
                try {
                    # Recherche des lignes avec une adresse IP
                    if ($_.Line -match '\b(?:\d{1,3}\.){3}\d{1,3}\b') 
                        {
                        Write-Verbose -Message 'Found line with IP address.'
                        $IP = $Matches[0]
                        # Si l'IP n'est pas un serveur DNS, cela doit être l'IP d'un client.
                        if ($DnsServerIPs -notcontains $IP) 
                            {
                            Write-Verbose "Traitement IP '$IP'"
                            $Split = $_.Line.Split(' ')
                            $Date = $Split[0]
                            $Time = $Split[1] + $Split[2]
                            $Err = [regex]::Match($_.Line, '\[(.*)\]').Groups[1].Value
                            [pscustomobject]@{ 'Date' = "$Date $Time"; 'IP' = $IP; 'Error' = $Err }
                            }
                        }
                    } 
                catch 
                    {
                    Write-Warning $_.Exception.Message
                    }
                } | 
                Export-Csv -Path $OutputFilePath -Append -NoTypeInformation -Delimiter ";"
    
    Invoke-Item -Path $OutputFilePath
    

    ça peut être utile également

    cordialement

    Olivier

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 06:16
  • Un peu de ménage dans le DNS, devrait résoudre son pb.

    Oui. Il est aussi possible d'ajouter les droits pour le compte qui est configuré afin qu'il puisse écrire sur les enregistrement dont il n'est pas propriétaire.

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 10:12
  • Bonjour Ngoug

    Cela semble correct, mais un petit check rapide dans le DNS pour vérifier quelques enregistrements dynamiques seulement (Onglet Securité sur une entrée Host)

    Si tu vois DHCP$ ou PCxxx$ (comptes machines correspondant au HostName du serveur DHCP ou dPCxxx), c'est que ce sont ces comptes qui ont créé les enregistrements. Tu devrais voir le compte utilisé par le DHCP pour créer/mettre à jour les enregistrements.

    ==> Pas de pitié, un nettoyage manuel s'impose (idem pour PTR bien entendu). Suppression des enregistrements dynamiques anciens. Aucun pb à prévoir, le compte utilisé par le DHCP recréra ces enregistrements automatiquement au prochain renouvellement du bail DHCP.

    Ne pas oublier, si ce n'est pas fait me configurer le vieillissement des enregistrement pour toutes les zones intégrées à l'AD. 

    cordialement

    Olivier

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 06:10
  • Dans la partie sécurité de la zone DNS :

    

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    vendredi 25 septembre 2020 06:58

Toutes les réponses

  • Bonjour Ngoug

    Cela semble correct, mais un petit check rapide dans le DNS pour vérifier quelques enregistrements dynamiques seulement (Onglet Securité sur une entrée Host)

    Si tu vois DHCP$ ou PCxxx$ (comptes machines correspondant au HostName du serveur DHCP ou dPCxxx), c'est que ce sont ces comptes qui ont créé les enregistrements. Tu devrais voir le compte utilisé par le DHCP pour créer/mettre à jour les enregistrements.

    ==> Pas de pitié, un nettoyage manuel s'impose (idem pour PTR bien entendu). Suppression des enregistrements dynamiques anciens. Aucun pb à prévoir, le compte utilisé par le DHCP recréra ces enregistrements automatiquement au prochain renouvellement du bail DHCP.

    Ne pas oublier, si ce n'est pas fait me configurer le vieillissement des enregistrement pour toutes les zones intégrées à l'AD. 

    cordialement

    Olivier

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 06:10
  • J'oubliais,

    Lorsque le ou les serveurs DHCP sont configurés pour mettre à jour les enregistrements d'Hosts dans le DNS, on constate parfois que ces enregistrements datent et ne sont pas mis à jour.
    Il peut être alors difficile d'identifier la root-cause afin de l'éliminer.
    Pour ce faire, on va activer le mode "Enregistement de debogage" dans "Propriétés du serveur DNS".

    Ref : https://adamtheautomator.com/microsoft-dns-debug-log-script/

    On laisse tourner quelques temps pour que le fichier de débogage s'alimente, puis on examine ce dernier.
    Cependant, en tirer la quintescence rapidement est hardu car ce fichier peut comprendre plusieurs dizaines de milliers de lignes.

    L'objectif du script ci-dessous est de fournir un moyen simple et rapide d'arriver à cet objectif.

    Description générale du fonctionnement :
    > Recherche de toutes les IPs de l'ensemble des serveurs DNS du domaine courant
    > Recherche dans l'ensemble des lignes du fichier de log les lignes qui ne comprennent pas la chaine 'NOERROR' ou sont vides
        > Puis dans ces lignes, recherche des lignes comprenant une IP
        > puis dans les lignes comprenant une IP, celles dont l'IP ne correspond pas à celle des serveurs DNS. Ce sont donc des IPs de client DNS.
    > Construction d'un PSCustomObject avec les info synthétiques et export cans un fichier .csv

    J'ai repris le script dans le lien ci-dessus,j'ai juste ajouté et francisé les commentaires

    #requires -Module ActiveDirectory
    <#
    Lorsque le ou les serveurs DHCP sont configurés pour mettre à jour les enregistrements d'Hosts dans le DNS, on constate parfois que ces enregistrements datent et ne sont pas mis à jour. 
    Il peut être alors difficile d'identifier la root-cause afin de l'éliminer. 
    Pour ce faire, on va activer le mode "Enregistement de debogage" dans "Propriétés du serveur DNS". 
    
    Ref : https://adamtheautomator.com/microsoft-dns-debug-log-script/
    
    On laisse tourner quelques temps pour que le fichier de débogage s'alimente, puis on examine ce dernier. 
    Cependant, en tirer la quintescence rapidement est hardu car ce fichier peut comprendre plusieurs dizaines de milliers de lignes.
    
    L'objectif du script ci-dessous est de fournir un moyen simple et rapide d'arriver à cet objectif. 
    
    Description générale du fonctionnement : 
    > Recherche de toutes les IPs de l'ensemble des serveurs DNS du domaine courant
    > Recherche dans l'ensemble des lignes du fichier de log les lignes qui ne comprennent pas la chaine 'NOERROR' ou sont vides
        > Puis dans ces lignes, recherche des lignes comprenant une IP
        > puis dans les lignes comprenant une IP, celles dont l'IP ne correspond pas à celle des serveurs DNS. Ce sont donc des IPs de client DNS.
    > Construction d'un PSCustomObject avec les info synthétiques et export cans un fichier .csv
    #>
    
    
    # DNS server name sous forme NETBIOS ou FQDN
    $dnsServer = $env:COMPUTERNAME 
    # Le fichier .csv qui va être créé
    $OutputFilePath = 'C:\DNSLog\DNSDebugLogSummary.csv' 
    
    # Le fichier de log qui a été défini dans la zone de diaglogue "Enregistrement de debogage"
    $DnsDebugLogFilePath = "\\$dnsServer\c$\DnsLog\DDNSTroubleshooting.log"
    
    # Recherche de toutes les IPs des serveurs DNS du domaine courant
    $DnsServerIPs = ((Get-ADDomain).ReplicaDirectoryServers | Resolve-DnsName).IPAddress
    Write-Verbose -Message "DNS servers trouvés $($DnsServerIPs -join ',')"
    
    # Recherche dans l'ensemble des lignes du fichier de log des lignes qui ne comprennement pas la chine de texte 'NOERROR' ou sont vides.
    # Cela récupère seulement les lignes avec des erreurs.
    Select-String -Pattern 'NOERROR|^\s*' -Path $DnsDebugLogFilePath -NotMatch | 
        foreach {
                try {
                    # Recherche des lignes avec une adresse IP
                    if ($_.Line -match '\b(?:\d{1,3}\.){3}\d{1,3}\b') 
                        {
                        Write-Verbose -Message 'Found line with IP address.'
                        $IP = $Matches[0]
                        # Si l'IP n'est pas un serveur DNS, cela doit être l'IP d'un client.
                        if ($DnsServerIPs -notcontains $IP) 
                            {
                            Write-Verbose "Traitement IP '$IP'"
                            $Split = $_.Line.Split(' ')
                            $Date = $Split[0]
                            $Time = $Split[1] + $Split[2]
                            $Err = [regex]::Match($_.Line, '\[(.*)\]').Groups[1].Value
                            [pscustomobject]@{ 'Date' = "$Date $Time"; 'IP' = $IP; 'Error' = $Err }
                            }
                        }
                    } 
                catch 
                    {
                    Write-Warning $_.Exception.Message
                    }
                } | 
                Export-Csv -Path $OutputFilePath -Append -NoTypeInformation -Delimiter ";"
    
    Invoke-Item -Path $OutputFilePath
    

    ça peut être utile également

    cordialement

    Olivier

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 06:16
  • - le serveur dhcp met toujours à jour les enregistrements A et PTR

    Le paramètre par défaut, c'est "Mettre à jour les enregistrements si les clients le demande". 

    Attention si on change de mode et qu'un enregistrement DNS existe déja pour un nom, il est possible que le serveur DHCP ne puisse le mettre à jour car il n'est pas propriétaire. 

    L'ajout des droits pour le compte de la machine  du serveur DHCP dans la zone DNS en question devrait aider.

    Sinon il est possible dans les propriété du protocole (IPv4 par exemple) de définir un compte spécifique administrateur pour les inscriptions DNS :


    mercredi 23 septembre 2020 06:29
  • @Philippe

    C'est bien ce qu'il disait avoir fait : utilisation d'un compte de domainepour les mise à jour DNS par le DHCP.

    Son soucis  : les enregistrements existant ne sont pas mis à jour., et pour cause, le compte utilisé par le DHCP n'est pas owner des enregistrements existants, ce sont les soit les comptes machines des différents hosts, soit le compte machine du serveur DHCP (avant implémentation du compte utilisé par le DHCP).

    Un peu de ménage dans le DNS, devrait résoudre son pb.

    Olivier

    mercredi 23 septembre 2020 07:43
  • Un peu de ménage dans le DNS, devrait résoudre son pb.

    Oui. Il est aussi possible d'ajouter les droits pour le compte qui est configuré afin qu'il puisse écrire sur les enregistrement dont il n'est pas propriétaire.

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    mercredi 23 septembre 2020 10:12
  • tout à fait
    mercredi 23 septembre 2020 11:33
  • Bonjour,

    Merci pour votre retour.

    Comment ajouter les droits pour qu'il puisse écrire sur les enregistrements dont il n'est pas propriétaire ?


    xxxxx@xxxxxx
    jeudi 24 septembre 2020 08:51
  • Bonjour,

    Merci pour votre retour.

    Comment ajouter les droits pour qu'il puisse écrire sur les enregistrements dont il n'est pas propriétaire ?


    xxxxx@xxxxxx

    Bonjour Ngoug,

    Il est interdit de partager des informations personnelles dans le site de Microsoft - TechNet, veuillez modifier la signature de votre profil. Merci d'avance pour votre compréhension.

    Cordialement,
    Nedeltcho


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 24 septembre 2020 10:11
  • Hello,

    Je ne vois aucune signature sur mon profil, pouvez-vous m'indiquer le menu pour que je retires?


    xxxxxxxxx@xxxxxxxxxx


    jeudi 24 septembre 2020 20:27
  • Hello,

    Je ne vois aucune signature sur mon profil, pouvez-vous m'indiquer le menu pour que je retires?


    xxxxxxxxx@xxxxxxxxxx


    Bonjour Ngoug,

    Allez à Accès rapide --> Mes paramètres --> Votre signature.

    Cordialement,
    Nedeltcho


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.






    vendredi 25 septembre 2020 05:47
  • Dans la partie sécurité de la zone DNS :

    

    • Marqué comme réponse Ngoug mardi 29 septembre 2020 12:35
    vendredi 25 septembre 2020 06:58
  • Merci, c fait.
    vendredi 25 septembre 2020 11:03
  • Merci à tous,C'était effectivement le problème.

    Je vais forcer d'abord en appliquant les permissions sur la zone DNS, si ca ne passe pas, je suppime et ce sera recréer.

    vendredi 25 septembre 2020 11:12
  • Les droits ont déjà été ajoutés au niveau du DHCP.
    vendredi 25 septembre 2020 11:13
  • Le DHCP possède plusieurs étendues avec des bails différents, pour configurer le scavenging, je vais utiliser le plus long bail pour éviter de supprimer les ressources actives.

    Le bail le plus long est de 30jours.

    Que me suggerez vous pour paramétrer le vieillissement?

    vendredi 25 septembre 2020 11:17
  • Bonjour Ngoug

    30 jours c'est long comme bail. Mais bon, si tu as suffisamment d'adresses pour fournir tout le monde ...

    Si je me plug sur ton réseau avec mon PC portable (tu m'as gentiment invité :() ), je lock une IP pendant 30 jours. Ca peut être génant pour les machines "légitimes".

    5-7 jours me semble être plus raisonnable comme durée de bail. J'ai eu des cas ou j'avais des scopes avec 32 adresses, et 20-25 machines, mais sur lequel j'ai du mettre une durée de bail à 1 jour, à cause du pb évoqué ci-avant (là c'était des douchettes IP).

    Pour le veillissement, ca ne supprime que les baux échuent. Si un bail est actif, ça ne nettoie pas, aucune inquiétude.

    Cordialement

    Olivier

    vendredi 25 septembre 2020 12:39