Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Které DC používám?
duben 07
Které DC používám?

Už jsem kdysi psal o DNSku ve vztahu k Active Directory. Jak ale zjistíte, které DC (Domain Controller, řadič domény) se právě používá ze stanice nebo serveru? Windows totiž nepoužívají trvale všechna dostupná DC, ale vždycky se delší dobu (zjednodušeně řečeno) připojují stále na jedno a to stejné. Jsou ale dvě věci základní komponenty, které možná používají různá DC. Jedním je přístup na LDAP, Kerberos a NTLM a druhým přístup na SYSVOL.

DC pro LDAP, Kerberos a NTLM přístup

Do LDAPu počítač chodí zjišťovat údaje z Active Directory. Jsou to věci jako zobrazované jméno uživatele (displayName), které vidíte v nabídce start, jména uživatelských účtů, když se díváte na NTFS zabezpečení, nebo třeba když přidáváte uživatele do lokální skupiny. Outlook 2007 si z ADčka pomocí LDAPu čte seznam svých Client Access Serverů (CAS) a když už je připojen, tak by si z něho stahoval Global Address List (GAL) - tedy pokud byste měli vypnutý takový ten Cached Mode, jako je třeba na Terminal Serverech. Ostatní servery to používají pro všechny služby, které mají s Active Directory co do činění. Prakticky všechny služby něco v ADčku hledají - jen co mě teď hned napadne:

  • NPS (dříve IAS) a TMG (dříve ISA), RD Gateway (dříve TS Gateway) - parametry účtu uživatele, speciálně záložka Dial-In a členství ve skupinách
  • Remote Desktop Server (dříve Terminal Server) - vyhledává licenční server a čte si parametry účtu jako je Remote Control apod.
  • DHCP server - si kontroluje autorizaci
  • DNS server - no dobrá, ten to dělá, jen když běží sám na DC a tak žádné vzdálené nepotřebuje
  • IIS server - pokud se přihlašujete SSL certifikátem, tak zjišťuje seznam skupin ve který ten uživatel je
  • WDS server - hledá si u účtů počítačů jejich MAC adresy (nebo GUIDy)

Samozřejmě se o DC ověřujete pomocí protokolů jako je Kerberos a NTLM. Takže na nějaké DC musí mít přístup i klient, ale obvykle i server, na který zrovna přistupujete. Jen pro zajímavost, členství ve skupinách se, s výjimkou speciálních případů, nezjišťuje přes LDAP, ale je to součástí již zmíněných autentizací jako je Kerberos nebo NTLM.

Další klientské služby, o kterých nejspíš ani nevíte, které potřebují LDAP jsou například:

  • Group Policy klient - vám stahuje politiky
  • Certificate Autoenrollment client - vám vydává certifikáty z doménové certifikační autority
  • DFS klient - v doméně používate DFS (asi lépe řečeno DFS Namespaces) i když ho nemáte nakonfigurováno, protože na Group Policy se přistupuje přes DFS cestu
  • Secure Channel - služba Netlogon ho používá na změnu hesla počítače, změny hesla uživatele pokud zmáčkete CTRL-ALT-DEL a taky na tzv. PAC validation, pokud přistupujete na službu, která běží pod účtem uživatele (a přitom nepoužívá Kernel Mode Authentication ani Managed Service Account).

No takže se už konečně pojďme podívat, jak zjistíte, ke kterému DC se všechny tyto přístupy vztahují. Výchozí Domain Controller (DC) zjišťuje služba Netlogon. Má takovou součástku zvanou DC Locator, která to celé provádí.

Na průzkum potřebujete NLTEST, který je buď součástí Support Tools (pro Windows Server 2003 a Windows XP a starší), nebo Remote Server Administration Tools (RSAT, je součástí nástrojů pro Active Directory Domain Services) pro Windows Server 2008 a Windows Vista a novější (ve Windows Server 2008 R2 a Windows 7 je to naštěstí už built-in):

NLTEST /SC_QUERY:<jmeno-domeny>

Předchozí příkaz vám zjistí (vůbec bez doteku sítě), jaký byl stav posledního pokusu o přístup na DC. Pokud chcete ověřít, že to pořád ještě funguje, použijte:

NLTEST /SC_VERIFY:<jmeno-domeny>

A pokud byste si chtěli přepnout stroj, aby používal jiné DC, tak použijte

NLTEST /SC_RESET:<jmeno-domeny>

Ještě bych upozornil, že příkaz SET vám může vypsat proměnnou LOGONSERVER, ve které je také napsáno jméno DC pomocí kterého jste se původně přihlásili. Jenže to je možná stará informace. Netlogon se klidně v průběhu života přepne někam jinam, ale proměnnou LOGONSERVER to už změnit nemůže. Zkuste se třeba přihlásit bez možnosti přístupu do sítě (z keše). Stejně uvidíte, že LOGONSERVER je obsahuje jméno posledního DCčka, když jste se přihlašovali naposledy on-line (takhle se to chová od Windows XP, ve dvoutisícovkách to ještě bylo prázdné).

Vyhledávání DC pomocí DNS

Předchozí příkazy používaly DNS dotazy k tomu, aby vůbec nějaká DCčka našly. Pokud si to chcete vyzkoušet sami, můžete klidně podobný dotaz udělat pomocí NSLOOKUP a ověřit si, že to skutečně funguje. Pokud máte špatně DNS, tak ani Netlogon a ani NLTEST fungovat nebudou. V následujícím příkazu si musíte opravit jméno domény.

NSLOOKUP
SET Q=SRV
_ldap._tcp.dc._msdcs.<vase-domena.local>

Předchozí příkaz vyhledá všechna DC, která jsou vůbec v AD viditelná. Pokud chcete jenom DCčka z vaší sítě (site), tak musíte dotaz trošku upravit.

NSLOOKUP
SET Q=SRV
_ldap._tcp.<vase-sajta>._sites.dc._msdcs.<vase-domena.local>

No dobrá, vaši sajtu zjistíte pomocí

NLTEST /DSGETSITE

Nebo se můžete podívat do registrů do klíče

HKLM\System\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteName

Přístup na SYSVOL

Stanice stahuje z DC ještě jednu věc. Zásady skupin (Group Policy). To se ale dělá pomocí DFS a sdílených souborů (sdílené soubory jsou Server Message Block (SMB) neboli Common Internet File System (CIFS) protokol a používají buď TCP 445, nebo prehistorický TCP 139). Nejprve si pomocí předchozího LDAP přístupu zjistí, jaké ty objekty vlastně potřebuje. To je tedy pořád ten předchozí případ. Potom si pomocí DFS zjistí, ze kterého DC to vlastně bude stahovat. DFS klient to také zjišťuje stejným způsobem pomocí LDAP dotazu do výchozího DC.

Jenže tady to končí. Potom se už DFS klient zeptá nějakého libovolného DC (ptá se přesněji řečeno DFS Root serveru, což je v případě SYSVOL zase nějaké DCčko) pomocí SMB protokolu, kde si má stáhnout obsah SYSVOL. Výsledkem může být úplně jiný řadič domény (DC).

Jak to omrknete? Tak to se liší podle verze systému. Nástroj DFSUTIL se dostane stejným způsobem jako byl případ NLTESTu. Prostě si buď stáhněte Support Tools, nebo si doinstalujte Remote Server Administration Tools (RSAT, tady je to součástí nástrojů pro File Server).

Pro Windows Server 2003 a Windows XP se použije:

DFSUTIL /PKTINFO

Zatímco pro Windows Server 2008 a Windows 7 a novější musíte zadat:

DFSUTIL CACHE REFERRAL

Informaci, kterou hledáte najdete v odkazu na SYSVOL adresář. U aktuálního serveru bude napsáno ACTIVE.

No a máte kompletní přehled. A přijďte na GOPAS Teched. Bute to paráda!

 

Comments

oldweb

Zdravím, odkaz na oldweb.sevecek.com nefunguje?
Jan Čekala on 23.1.2012 22:55

Re: Které DC používám?

ne, bohuzel. co byste presne potreboval, treba to napisu znovu. na Pipni mi zrusili hosting bez predchozi informace, takze mam jen zalohu databaze toho stareho, bez obrazku.
ondas on 24.1.2012 15:46

Re: Které DC používám?

jo, aktuální přízpěvek pro kamaráda, co chce, aby jeho DFS klient používal rovnou přihlašovací DC, místo toho, aby si sám vybíral:

HKLM\System\CurrentControlSet\Services\DFS
PreferLogonDC = DWORD = 1

viz. http://support.microsoft.com/kb/831201
ondass on 4.6.2012 14:17

Re: Které DC používám?

pro zjištění, které DC je zrovna aktivní z pohledu DFS a SYSVOL je možno také prostě a jednoduše otevřít v průzkumníkovi cestu:

\\moje.domena.local

a kliknout pravým tlačítkem na SYSVOL referal. Tam dostanete záložku DFS a uvidíte, který server je zrovna aktivní.
ondass on 28.5.2013 19:21

nltest /? > nltest.txt nefunguje

protoze to jde do chyboveho vystupu, takze
nltest /? 2> nltest.txt

na Win 7 / 2008 - 6.1.7601 Service Pack 1 Build 7601
Martin Langer on 2.5.2015 17:56

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments