In che modo un sistema client in una rete di Active Directory trova in quale sito risiede?


21

Mentre stavo mettendo insieme una presentazione per iniziare l'amministrazione di Windows, sono stato colpito da una domanda che mi ha stupito di non aver fatto prima.

Lo so:

  • AD è logicamente configurato nei siti per facilitare la replica e ridurre la latenza delle comunicazioni necessarie al dominio tra computer client e servizi di dominio.
  • I siti sono definiti dalle sottoreti ad essi applicate
  • il sottodominio _msdcs contiene una gerarchia di record SRV per la ricerca generale (_tcp) e per la ricerca specifica del sito (_sites)
  • I computer in qualche modo sanno in quale sito si trovano o il controller di dominio decide in modo trasparente in qualche magia del DNS ... o lo fa?

Questo post sul blog suggerisce che i computer client in una rete AD possono "sapere" di quale sito sono membri. La mia domanda è, se questo è il caso, come lo scoprono?

Se il client stesso non lo sa, in che modo il controller di dominio aiuta la macchina nel processo di selezione dei servizi AD più vicini a quel computer client?

Risposte:


29

La risposta è che la prima volta che un client si autentica su Active Directory, non sa in quale sito si trova.

Quando si unisce per la prima volta al dominio, il client esegue query DNS e LDAP generali e ottiene un elenco di tutti i controller di dominio nel dominio, che scende nell'elenco, provando i binding LDAP e il primo controller di dominio a cui si lega, ovvero il primo DC con cui si autentica.

Dopo che il client è entrato nel dominio, Active Directory comunicherà al client a quale sito appartiene. Active Directory lo sa perché l'amministratore ha inserito la sottorete IP del client in Siti e servizi AD e l'ha associata a un sito.

Active Directory indica al client qual è il suo sito AD e il client lo archivia nel proprio registro nel HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNamevalore del registro. In questo modo, la prossima volta che il client si avvia, sa quale query DNS specifica del sito fare in modo che ottenga solo i controller di dominio presenti in quel sito.

Ovviamente il comportamento completo è documentato in KB247811 , ma se si desidera vederlo da soli, è possibile eseguire Wireshark o NetMon e eseguire una traccia del pacchetto, quindi unire un dominio mentre la traccia è in esecuzione. Vedrai l'esatta sequenza di query DNS e collegamenti LDAP. Le query DNS e i collegamenti LDAP successivi vengono fatti alle zone secondarie specifiche del sito perché AD ha comunicato al client a quale sito appartiene.

Il servizio Netlogon aggiorna periodicamente le informazioni sul sito AD, quindi se si passa a una rete diversa, il client riceverà automaticamente il nuovo sito. Questo può essere regolato nel HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutvalore del registro. ( Link )


GAH! Mi hai battuto sul tempo!
MDMarra,

4
@MDMarra È un caso raro, signore.
Ryan Ries,

Per curiosità, il controllo netlogon viene mai rieseguito? Ad esempio, cosa accadrebbe se avessi un sistema che si trovava in Site1 e quindi trasferissi la persona e l'apparecchiatura in Site2, la macchina si identificherebbe e continuerebbe a parlare con Site1?
Peter Grace,

In realtà lo riprendo. Netlogon può aggiornare il nome del sito dinamico senza riavviare: technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries l'

@RyanRies se desideri inserirlo nel testo della risposta, sarebbe fantastico, altrimenti modificherò la risposta per incorporarla.
Peter Grace,

8

Esistono in realtà diverse funzioni / API correlate. Anche se sono lunghi, in realtà è una delle letture più interessanti di Active Directory.

Indipendentemente dalla spiegazione che segue, ci sono due cose di cui devi essere consapevole:

  • Se un controller di dominio nel sito locale non risponde per nessun motivo, si prevede che il client contatterà qualsiasi controller di dominio nel dominio. Questo è normale ed è sempre stato il comportamento predefinito. A volte non è chiaro il motivo per cui si sta verificando.

  • Questo può essere non ottimale. Considera il seguente scenario: Tre siti: New York City (hub / datacener - veloce), Los Angeles (ha parlato a New York - veloce) e Kazakistan (ha parlato a New York - sicuramente non veloce). Se il tuo cliente nel sito di Los Angeles non può contattare il DC locale per qualsiasi motivo, non è inconcepibile che effettuerà l'autenticazione con il Kazakistan.

Ci sono un paio di soluzioni. Puoi fare uno o entrambi.

  • Microsoft ha creato l'impostazione Criteri di gruppo / registro denominata in modo appropriato TryNextClosestSite. Ciò significa che il cliente di Los Angeles dovrebbe provare New York prima di vagare per il pianeta alla ricerca di DC. Brillante! Ci sono voluti otto anni, ma finalmente l'abbiamo ottenuto con Vista / 2008. Ricordare, non abilitato per impostazione predefinita, è necessario creare un oggetto Criteri di gruppo per abilitarlo.

  • Per i siti con raggio in cui non si desidera che quel controller di dominio offra client in altri siti, è possibile creare un'impostazione di Criteri di gruppo / registro che specifica quali record DNS non devono essere registrati. Questo è indicato come DNS Mnemonics.


Trovare un controller di dominio nel sito più vicino (API DsGetSiteName)
http://technet.microsoft.com/en-us/library/cc978016.aspx

Mappatura degli indirizzi IP sui nomi dei siti

"Durante l'avvio di Net Logon, il servizio Accesso rete su ciascun controller di dominio enumera gli oggetti del sito nel contenitore Configurazione. Anche l'accesso rete su ciascun controller di dominio viene notificato di eventuali modifiche apportate agli oggetti del sito. Accesso rete utilizza le informazioni del sito per creare un struttura in memoria utilizzata per mappare gli indirizzi IP ai nomi dei siti.

"Quando un client che cerca un controller di dominio riceve l'elenco di indirizzi IP del controller di dominio dal DNS, il client inizia a interrogare i controller di dominio a sua volta per scoprire quale controller di dominio è disponibile e appropriato. Active Directory intercetta la query, che contiene l'indirizzo IP del client e lo passa a Accesso rete sul controller di dominio. Accesso rete cerca l'indirizzo IP del client nella tabella di mappatura da sottorete a sito trovando l'oggetto sottorete che corrisponde maggiormente all'indirizzo IP del client e quindi restituisce le seguenti informazioni:

  • Il nome del sito in cui si trova il client o il sito che corrisponde maggiormente all'indirizzo IP del client.

  • Il nome del sito in cui si trova il controller di dominio corrente.

  • Un bit che indica se il controller di dominio trovato si trova (il bit è impostato) o no (il bit non è impostato) nel sito più vicino al client.

"Il controller di dominio restituisce le informazioni al client. La risposta contiene anche varie altre informazioni che descrivono il controller di dominio. Il client controlla le informazioni per determinare se provare a trovare un controller di dominio migliore. La decisione viene presa come segue:

"Se il controller di dominio restituito si trova nel sito più vicino (il bit restituito è impostato), il client utilizza questo controller di dominio.

"Se il client ha già provato a trovare un controller di dominio nel sito in cui il controller di dominio afferma che si trova il client, il client utilizza questo controller di dominio.

"Se il controller di dominio non si trova nel sito più vicino, il client aggiorna le informazioni sul sito e invia una nuova query DNS per trovare un nuovo controller di dominio nel sito. Se la seconda query ha esito positivo, viene utilizzato il nuovo controller di dominio. Se il la seconda query non riesce, viene utilizzato il controller di dominio originale.

"Se il dominio interrogato da un computer è uguale al dominio a cui è unito il computer, il sito in cui risiede il computer (come riportato da un controller di dominio) viene archiviato nel registro del computer. Il client memorizza questo nome del sito nella voce del Registro di sistema DynamicSiteName in HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters. Pertanto, l'API DsGetSiteName restituisce il sito in cui si trova il computer. "

Funzione DsGetDcName
http://msdn.microsoft.com/en-us/library/ms675983%28VS.85%29.aspx

Tipi di localizzatori
http://technet.microsoft.com/en-us/library/cc978019.aspx

Funzioni del servizio di directory
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

Come funziona il supporto DNS per Active Directory
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

Come ottimizzare la posizione di un controller di dominio che risiede al di fuori del sito di un client
http://support.microsoft.com/kb/306602

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.