Condividi tramite


La configurazione di nuove sessioni per i servizi LDAP richiede più tempo del previsto se la destinazione è destinata ai nomi host

Questo articolo illustra un problema in cui una nuova configurazione di sessione per i servizi LDAP richiede più tempo del previsto se è destinata ai nomi host.

Numero KB originale: 4559609

Sintomi

Le query LDAP (Lightweight Directory Access Protocol) destinate ai nomi host richiedono in modo casuale più tempo del previsto per rispondere.

Inoltre, gli eventi client DNS, ad esempio i seguenti, possono essere registrati nel registro eventi:

Nome registro: sistema
Origine: Microsoft-Windows-DNS-Client
ID evento: 1014
Livello: Avviso
Utente: SERVIZIO DI RETE
Descrizione:
Risoluzione dei nomi per il nome _ldap._tcp.<sito>._sites.<timeout del nome> dopo che nessuno dei server DNS configurati ha risposto.

Note

In questa voce di log il <parametro name> può essere uno dei seguenti:

  • Nome NETBIOS di dominio
  • Nome host del controller di dominio
  • Nome host FQDN DNS del controller di dominio

Questo problema causa più problemi che interessano amministratori, utenti e applicazioni. Questi problemi includono, ma non sono limitati ai seguenti:

  • Una connessione LDAP con controller di dominio windows Server 2008 R2 o versioni successive richiede circa sei secondi. Le stesse connessioni a controller di dominio di Windows Server 2003 o Windows Server 2008 richiedono in genere meno di un secondo. In questo caso, le operazioni LDAP successive, ad esempio le ricerche di binding e LDAP, sembrano non avere alcun ritardo aggiuntivo dopo la connessione LDAP iniziale.
  • Il comando LDIFDE.EXE è lento indipendentemente dal fatto che venga usato/Sparameter.
  • Lo script di controllo integrità di Microsoft System Center Active Directory Management Pack (SCOM ADMP) (AD_General_Response.vbs) presenta tempi di esecuzione lenti.
  • Microsoft Utenti e computer di Active Directory (ADUC) è lento all'avvio o alla lentezza dell'apertura dei contenitori dell'unità organizzativa. Estensioni nello snap-in Utenti e computer di Active Directory DSA. MSC usa il nome computer FQDN del controller di dominio come nome di dominio.
  • Le estensioni del Centro di amministrazione di Microsoft Active Directory (ADAC) nel Centro di amministrazione di Active Directory usano il nome computer FQDN del controller di dominio come nome di dominio.
  • Microsoft Group Policy Management Console (GPMC) non usa in modo coerente i flag di risoluzione dei nomi.
  • Gli script di Visual Basic Script (VBS) che effettuano chiamate LDAP che fanno riferimento al nome DNS completo del controller di dominio sono lenti a essere eseguiti.
  • Le applicazioni .NET Framework che usano System.DirectoryServices e System.DirectoryServices.Protocols possono riscontrare ritardi durante la creazione di sessioni server.

Causa

A partire da Windows 7 e Windows Server 2008 R2, Windows ha introdotto una modifica nel comportamento di ricerca dei nomi per risolvere due scenari di problemi precedenti:

  • I client LDAP vengono restituiti a NTLM ogni volta che il nome di dominio NetBIOS viene fornito come nome host nella connessione LDAP.
  • I client LDAP non si connettono a un controller di dominio nel dominio se un client ha lo stesso nome del nome di dominio NetBIOS di destinazione.

Il ritardo si verifica perché una delle due condizioni seguenti è vera:

  • Si verifica un tempo di attesa lungo per una risposta di trasmissione. Questo ritardo non viene visualizzato se la risoluzione dei nomi NetBIOS su TCP/IP (NetBT) tramite le trasmissioni è disattivata.
  • I ritardi nella risoluzione dei nomi DNS si verificano quando l'applicazione esegue query per diversi nomi DNS che non esistono.

I ritardi possono essere osservati in una traccia di rete che mostra i client LDAP che eseguono ricerche di nomi NetBIOS per un record "[HOSTNAME]<0x1C>" prima di eseguire una ricerca DNS per individuare il computer host dell'applicazione (vedere la figura A).

Figura A

Screenshot della finestra di Microsoft Network Monitor con traccia di rete, inclusi i record 0x1C.

La traccia di rete di un client LDAP di Windows Server 2003 o 2008 ha mostrato che ha eseguito direttamente la ricerca DNS per il computer host senza eseguire la ricerca NetBIOS per il record "<0x1C>".

Figura B

Screenshot della finestra Monitoraggio rete Microsoft con traccia di rete del client LDAP di Windows Server 2003 o 2008.

Nel caso di DNS, viene visualizzata una query sui nomi che terminano in un nome computer del controller di dominio, ad esempio:

_ldap._tcp. Default-First-Site-Name._sites. ADDC01.contoso.com
_ldap._tcp. ADDC01.contoso.com
_ldap._tcp. Default-First-Site-Name._sites. ADDC01
_ldap._tcp. ADDC01

Risoluzione

Quando si imposta come destinazione un server LDAP in base al nome host anziché al nome di dominio, è consigliabile usare l'opzione di sessione LDAP_OPT_AREC_EXCLUSIVE per indicare che la destinazione è un nome host anziché un nome di dominio.

Questa opzione viene impostata in modo diverso a seconda dell'interfaccia di programmazione usata. Usare le informazioni seguenti come riferimento.

Wldap32

Se viene passato un nome server DNS di Active Directory per il parametroHostNameparameter, ldap_set_option deve essere chiamato per impostare il flag LDAP_OPT_AREC_EXCLUSIVE prima di chiamare qualsiasi funzione LDAP che crea la connessione effettiva.

In questo modo viene forzata una ricerca record A e viene ignorata qualsiasi ricerca di record SRV quando il computer risolve il nome host. In alcuni scenari migliora le prestazioni di rete. Ad esempio, in una succursale che usa una connessione remota, l'uso della ricerca record A può evitare di forzare la chiamata a eseguire una query su un server DNS remoto per i record SRV quando risolve i nomi.

ADSI

Se è necessario specificare un server, usare il flag ADS_SERVER_BIND per evitare query non necessarie o errate al server DNS. Per altre informazioni, vedere questa documentazione di ADsOpenObject() e delle funzioni correlate.

System.DirectoryServices

Se ADsPath include un nome server, specificare il flag AuthenticationTypes.ServerBind quando si usa il provider LDAP. Non usare questo flag per i percorsi che includono un nome di dominio o per i percorsi serverless. Se si specifica un nome di server senza specificare questo flag, il traffico di rete non è necessario.

Ad esempio:

DirectoryEntry ent = new DirectoryEntry("LDAP://server01",null,null,AuthenticationTypes.ServerBind);

System.DirectoryServices.Protocols

Quando si prepara una nuova connessione LDAP, includere un oggetto LdapDirectoryIdentifier costruito usando un nome host e una porta facoltativa che si desidera contattare e include anche un <parametro fullyQualifiedDnsHostName> impostato su True.

Il nuovo comportamento predefinito in Windows 7, Windows Server 2008 R2 e versioni successive può essere ripristinato al comportamento precedente a Windows 7. Questo può reintrodurre i problemi che interessano i nomi NetBIOS, come descritto nella sezione "Causa". Tuttavia, esistono anche scenari in cui il comportamento pre-Windows 7 offre risultati migliori. Di conseguenza, l'impostazione che produce risultati migliori dipende dallo scenario di utilizzo principale del client LDAP.

La soluzione a lungo termine deve sempre essere quella di ottenere l'applicazione per usare nomi di dominio e server con i flag appropriati quando si chiamano interfacce LDAP, ADSI o .NET. È consigliabile usare i flag corretti per rendere l'applicazione indipendente dalle dipendenze dello scenario quando il codice client dei servizi directory deve decidere il metodo di risoluzione in situazioni ambigue.

È possibile ripristinare il comportamento precedente a Windows 7 impostando il valore del Registro di sistema seguente:

Sottochiave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LDAP
Voce: UseOldHostResolutionOrder
Tipo: REG_DWORD
Valore (dati): 1

Come approccio aggiuntivo, è possibile disattivare la risoluzione dei nomi usando la trasmissione per NetBt. Vedere 819108 Impostazioni per ridurre al minimo il traffico WAN periodico per configurare NodeType come "p-mode".

Configurazione per i nodi

  • Usare 0x00000008 per il nodo ibrido o h-node
  • Usare 0x00000004 per nodo misto o m-node
  • Usare 0x00000002 per WINS da punto a punto o p-node
  • Usare 0x00000001 per il nodo broadcast o b-node

Tipi di nodo di risoluzione dei nomi

  • B-Node (broadcasting): usa le trasmissioni per risolvere i nomi. Non consigliato per reti di dimensioni maggiori.
  • P-Node (peer-to-peer): usa solo WINS, nessuna trasmissione. Nessun server WINS, nessuna risoluzione.
  • M-Node (misto): trasmettere prima, quindi WINS. (Non consigliato perché si desidera ridurre al minimo le trasmissioni).
  • H-Node (ibrido): usa prima WINS, quindi le trasmissioni. (Consigliato perché riduce il numero di trasmissioni provando WINS per primo e facendo ricorso alla trasmissione solo come ultima risorsa).

Riferimenti

Per altre informazioni, vedere gli articoli seguenti:

funzione Ldap_init

Opzioni di sessione LDAP (vedere LDAP_OPT_AREC_EXCLUSIVE, 0x98)

Funzione ADSI AdsopenObject

ADSI AuthenticationEnum con il valore ADS_SERVER_BIND

Enumerazione S.DS AuthenticationTypes con il valore ServerBind

S.DS. Costruttore LdapDirectoryIdentifier P con il flag fullyQualifiedDnsHostName