ADUC se charge lentement lorsqu'il est connecté au client SDP de Cato

Problème

Les utilisateurs et ordinateurs Active Directory (ADUC) peuvent rencontrer des latences ou des lenteurs lorsqu'ils sont connectés au client SDP de Cato.

Environnement

  • Client SDP de Cato v4.2 et au-dessus

Dépannage

Pendant son exécution, ADUC effectue des requêtes DNS pour des enregistrements SRV non standards et inexistants. Ces requêtes ne sont pas nécessaires et on ne sait pas pourquoi ADUC les effectue. Pour plus d'informations, consultez Comportement du résolveur client DNS

Le client SDP de Cato bloque les requêtes DNS sur chaque interface réseau sauf pour l'interface VPN de Cato afin de diriger le DNS via le tunnel VPN. Cela fonctionne bien pour presque toutes les applications sauf ADUC à cause des requêtes SRV mentionnées ci-dessus.

Si ADUC ne reçoit pas de réponse positive aux requêtes des serveurs DNS configurés sur l'adaptateur VPN Cato, il envoie les requêtes aux serveurs DNS configurés sur l'adaptateur physique (WiFi, Ethernet). Ces requêtes sont bloquées par le client VPN Cato donc ADUC ne reçoit jamais de réponse. Bien que cela n'ait pas été reconnu ou confirmé par Microsoft, nous pensons qu'ADUC attend que les requêtes DNS expirent sur les adaptateurs physiques avant de continuer, ce qui explique les temps de chargement lents. Autant que nous sachions, ADUC est la seule application à présenter ce comportement et cela pourrait être un bogue de Microsoft.

Pour vérifier que le problème ci-dessus est rencontré, une capture PCAP peut être effectuée sur le tunnel. Filtrer pour DNS (port 53) pendant que l'utilisateur ouvre ADUC. Appliquer le filtre suivant dans Wireshark pour voir les requêtes SRV :

dns.qry.type == 33

ADUC effectue des requêtes pour des enregistrements SRV inexistants dans deux formats distincts :

  1.  _ldap._tcp.DCName.Domaine.com
  2. _ldap._tcp.SiteName._sites.DCName.Domaine.com

DCName est le nom NetBIOS (nom d'hôte) d'un contrôleur de domaine (DC), SiteName est le nom du site dans lequel se trouve le DC, et Domain.com est le domaine.

ADUC peut potentiellement interroger les enregistrements SRV pour chaque DC dans un domaine. Le problème mentionné dans cet article existe si vous voyez l'une des requêtes SRV et une réponse "Aucun nom de ce type" dans le PCAP.

mceclip0.png

 

Solutions

Créer manuellement des enregistrements SRV

1. Ouvrir le gestionnaire DNS sur le serveur DNS.

2. Développez les zones de recherche directe.

mceclip2.png

3. Cliquez droit sur votre domaine et cliquez sur « Nouveau domaine… ».

mceclip3.png

4. Entrez le nom d'hôte du DC comme nom de domaine.

mceclip4.png

5. Cliquez droit sur le sous-domaine créé à l'étape précédente et sélectionnez « Autres nouveaux enregistrements… ».

mceclip5.png

6. Sélectionnez emplacement de service (SRV) et cliquez sur « Créer un enregistrement… ».

mceclip6.png

7. Entrez les paramètres suivants dans la fenêtre pop-up :

  • Service : _ldap
  • Protocole : _tcp
  • Hôte offrant ce service : le FQDN du DC avec un point à la fin.

mceclip7.png

8. Cliquer sur "OK". Un enregistrement SRV sera créé.

mceclip8.png

9. Cliquez droit sur le sous-domaine nommé d'après le DC que vous avez créé à l'étape 4 et sélectionnez « Nouveau domaine… »

mceclip9.png

10. Nommez le domaine « _sites » et cliquez sur "OK".

mceclip10.png

11. Cliquez droit sur le domaine _sites et sélectionnez « Nouveau domaine... ».

mceclip11.png

12. Nommez le sous-domaine créé à l'étape précédente d'après le site dans lequel réside le DC et cliquez "OK".

mceclip12.png

13. Cliquez droit sur le sous-domaine créé à l'étape précédente et sélectionnez "Autres nouveaux enregistrements...".

mceclip13.png

14. Sélectionnez l'emplacement du service (SRV) et cliquez sur "Créer un enregistrement...".

mceclip14.png

15. Entrez les paramètres suivants dans la fenêtre pop-up :

  • Service : _ldap
  • Protocole : _tcp
  • Hôte offrant ce service : le FQDN du DC avec un point à la fin.

mceclip15.png

16. Cliquer sur "OK". Un nouvel enregistrement SRV sera créé.

mceclip16.png

17. Répétez les étapes 3 à 16 pour chaque DC dans votre domaine.

Créer automatiquement des enregistrements SRV à l'aide de PowerShell

Le script PowerShell ci-dessous peut être exécuté sur un DC pour créer tous les enregistrements SRV nécessaires pour un domaine tant que les serveurs DNS sont également des contrôleurs de domaine. Veuillez noter que ce script peut devoir être modifié pour fonctionner dans l'environnement du client et le support Cato n'est pas responsable des modifications apportées à ce script. Les clients doivent utiliser ce script à leurs propres risques.

Utilisation recommandée :

1. Enregistrez le script dans un fichier avec l'extension .ps1 et copiez-le sur un DC.

2. Sur le DC, ouvrez PowerShell avec des privilèges d'administrateur et exécutez le script :

path_to_script.ps1

3. Vérifiez que le script a détecté le bon domaine et un serveur DNS et que la liste de tous les DCs dans le domaine est correcte.

4. Par défaut, le script demande confirmation avant de créer des enregistrements SRV pour chaque DC. Nous recommandons d'utiliser cette méthode au moins pour le premier DC et de vérifier que les enregistrements SRV ont été créés avec succès avant de continuer.

5. Si les enregistrements SRV pour le premier DC ont été créés avec succès, vous pouvez exécuter à nouveau le script mais choisir l'option "Création en masse" [B] pour créer tous les enregistrements SRV à la fois sans avertissement.

Exemple de sortie :

mceclip1.png

Script : 

$allDCs = (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ } | Select-Object -Property Name, HostName, Domain, Site
$Domaine = (Get-ADForest).Name
Write-Host ""
Write-Host "Domaine:"
Write-Host " $Domaine"
$DNSchaîne = nslookup -type=ns $Domaine | Select-String -Pattern 'nameserver'
$DNSchaîne -match '(?<=nameserver = )(.*)' > $null
$DNSserveur = $Matches[1]

Write-Host ""
Write-Host "Serveur DNS trouvé:"
Write-Host " $DNSserveur"
Write-Host ""
Write-Host "Contrôleurs de Domaine trouvés:"
Foreach ($DC in $allDCs) {
Write-Host " $($DC.HostName)"
}

$titre = 'Créer des Enregistrements SRV'
$question = 'Comment voulez-vous créer des enregistrements SRV?'

$masse = New-Object System.Management.Automation.Host.ChoiceDescription "&Création en masse", "Crée tous les enregistrements SRV à la fois."
$inviter = New-Object System.Management.Automation.Host.ChoiceDescription "&Demander pour chaque", "Demande avant de créer chaque enregistrement SRV."
$choix = [System.Management.Automation.Host.ChoiceDescription[]]($masse, $inviter)

$décision = $Host.UI.PromptForChoice($titre, $question, $choix, 1)
if ($décision -eq 0) {
Foreach ($DC in $allDCs) {
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserveur
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Site)._sites.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserveur
}
Write-Host ""
Write-Host "Enregistrements SRV créés pour tous les DCs."
} elseif ($décision -eq 1) {
Foreach ($DC in $allDCs) {
Write-Host ""
Write-Host "Créer des enregistrements SRV pour $($DC.HostName)?" -ForegroundColor Yellow
$Readhost = Read-Host " ( o / n ) "
if ($Readhost -eq 'o') {
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserveur
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Site)._sites.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserveur
}
}
Write-Host ""
Write-Host "Terminé la création des enregistrements SRV."
} else {
Write-Host 'Annulé'
}

 

 

Cet article vous a-t-il été utile ?

Utilisateurs qui ont trouvé cela utile : 3 sur 4

0 commentaire