Môj blog nielen o IT
25.01.2018
Správne nastavený čas v doménovom prostredí je jedna z najdôležitejších vecí, ktoré musíte vedieť v doméne zabezpečiť. Nie je to kvôli užívateľom, ktorí používajú hodiny pre svoju potrebu, ale hlavne pre správne fungovanie autentifikácie, pretože ak sa čas na počítači líši o viac ako 5 minút, nebudete sa vedieť prihlásiť alebo nebudete vedieť pristupovať k prostriedkom domény.
Viackrát som sa stretol s problémom, kedy počítače nemajú správne synchronizovaný čas a okrem toho, že to nevyzerá dobre, užívatelia sa stretávajú s praktickými problémami, že sa nemôžu prihlásiť alebo sa nevedia dostať k potrebným dokumentom v sieti.
Stanice a servery v doméne synchronizujú svoj čas z doménového radiča. Ak je doménových radičov v doméne viac, zosynchronizuje sa čas z ktoréhokoľvek radiča v doméne. Samotné doménové radiče teda musia mať tiež medzi sebou správne nastavenú synchronizáciu času, aby nevznikali rozdiely medzi jednotlivými klientmi. Funguje to teda tak, že doménové radiče synchronizujú svoj čas s tým radičom, na ktorom beží rola PDC emulator (spravidla to býva ten prvý, ktorý bol v doméne nainštalovaný). PDC emulator si svoj čas synchronizuje s nejakým externým NTP serverom, tým pádom je čas v doméne správny a konzistentný. Synchronizáciu času znázorňuje nasledovný obrázok:
Najskôr je vhodné zistiť, kde je problém, aby sme nemuseli zbytočne nastavovať celú doménu. Zistíme to jednoducho:
Ak je problémom iba jeden počítač (stanica, server), treba sa toto zariadenie prihlásiť a zistiť, odkiaľ si synchronizuje čas. To sa dá spraviť z administrátorského cmd.exe príkazom:
w32tm /query /source
Pokiaľ príkaz vrátil názov doménového radiča, klient si synchronizuje čas z neho. Čokoľvek iné znamená, že klient nepoužíva doménový čas.
Tiež je nutné skontrolovať, či sa synchronizujú z doménového radiča alebo nie. Ak príkaz vypisuje Local CMOS clock znamená to, že buď majú všetky počítače zlú konfiguráciu (nepravdepodobné), alebo že je problém s doménovými radičmi. Preto je nutné spustiť diagnostiku DC priamo na doménovom radiči pomocou príkazu
dcdiag /s:NAZOV_DC
Tento nástroj urobí diagnostické testy na zadané DC, resp. ak parameter vynecháme, urobí diagnostiku na lokálnom DC. Najviac nás zaujíma test Advertising, ktorý by mal byť úspešný. Diagnostika by teda mala vypísať toto:
Testing server: Bratislava\DC2
Starting test: Advertising
......................... DC2 passed test Advertising
Pokiaľ vypíše niečo iné, problém može byť:
Najviac nám samozrejme prezradí Event Viewer v logoch, takže odporúčam pozrieť a tým zistiť, čo je príčinou problému.
Štandardne by sa PDC mal synchronizovať s nejakým verejným NTP serverom. Na to je potrebné poznať adresu NTP servera (dá sa nájsť napríklad na pool.ntp.org, alebo môžete použiť rovno NTP server Microsoftu – time.windows.com). PDC musí byť pochopiteľne schopný s NTP serverom komunikovať, t.j. musí byť schopný použiť Outgoing UDP port 123. Keďže PDC bude potom zdroj času pre ostatné zariadenia v sieti, je nutné, aby bol schopný prijímať aj požiadavky cez NTP, t.j. musí mať povolené pravidlo Incomming UDP port 123. Keď máme potrebné informácie, môžeme vyresetovať nastavenia služby Windows Time, nakonfigurovať službu a použiť konfiguráciu. Na to budeme potrebovať administrátorský cmd.exe a nasledovné príkazy:
Zastavenie služby Windows Time:
net stop w32time
Zmazanie nastavení:
w32tm /unregister
Vytvorenie štandardných nastavení:
w32tm /register
Spustenie sluťby Windows Time:
net start w32time
V tejto chvíli máme spustenú službu Windows Time s jej štandardnými nastaveniami. Následne potrebujeme nakonfigurovať zdroj času, čo urobíme opäť z príkazového riadka:
w32tm /config /manualpeerlist:time.windows.com,0x1 /syncfromflags:manual /reliable:yes /update
Teraz je nutné reštartovať službu Windows Time a aktualizovať čas manuálne:
net stop w32time
net start w32time
w32tm /resync /rediscover
Ak sa nám čas aktualizoval bez problémov, PDC je funkčný a môžeme postúpiť ďalej na opravu ostatných doménových radičov. Samozrejme, že je dobré skontrolovať, či všetko funguje tak, ako má pomocou príkazov:
w32tm /query /source
w32tm /query /configuration
Pokiaľ už PDC správne funguje, potrebujeme doménovým radičom oznámiť, že sa majú synchronizovať s hierarchiou domény, t. j. v administrátorskom cmd.exe spustíme nasledovné príkazy:
Vyresetujeme všetky nastavenia služby Windows Time:
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
Nastavíme synchronizáciu so štruktúrou domény:
w32tm /config /syncfromflags:domhier /update
Reštartujeme službu Windows Time a aktualizujeme čas:
net stop w32time
net start w32time
w32tm /resync /rediscover
A skontrolujeme, či všetko funguje správne:
w32tm /query /source
w32tm /query /configuration
Teraz by sme mali vidieť, že DC aktualizujú svoj čas z PDC.
To, čo je pri DC dôležité je, aby bežala služba Windows Time, aby jej spúšťanie bolo nastavené na Automatic a aby príkaz dcdiag zbehol v časti Advertising správne, t. .j výsledok testu musí byť Passed. Rovnako je dobré skontrolovať, či je povolené pravidlo Inbound UDP port 123 a či NTP server aj beží, čo sa dá skontrolovať napr. príkazom:
nestat -anp udp | findstr 123
Správny výpis by mal vyzerať takto:
UDP 0.0.0.0:123 *:*
Keď nám funguje PDC a všetky DC v doméne, nastavíme aj ostatné servery, resp. stanice tak, aby svoj čas synchronizovali so štruktúrou domény. Tento krok však väčšinou nie je nutné robiť, keďže členovia domény majú tieto nastavenia automaticky. Postup je rovnaký ako pri nastavovaní ostatných DC (viď vyššie).
Pokiaľ sú DC rozbehnuté ako virtuálne stroje, je dôležité, aby virtualizačný host (Hyper-V, VMWare, atď.) „netlačili“ svoj lokálny čas ako zdroj času pre virtuálne DC. Dá sa to zakázať vypnutím služby Time Synchronization v nastavení konkrétneho virtuálneho stroja v Hyper-V:
Pokiaľ používate VMWare, postup na vypnutie synchronizácie času nájdete na ich KB.
Verím, že tento článok niekomu môže pomôcť, nakoľko na internete sa veľmi ťažko zháňajú (funkčné) riešenia na tento problém. Nie je síce problém nájsť hŕstku príkazov, ktoré treba spustiť, ale vždy je dobré rozumieť tomu, čo vlastne do príkazového riadku píšete 🙂
Pokiaľ sa chcete dozvedieť viac, rád vás uvidím na niektorom z mojich kurzov Windows Server.