Warning: include(/home/sw/ziembor/public_html/include/headtmpl.php) [function.include]: failed to open stream: No such file or directory in /Windows_NT/time-synchronization-w2k.php on line 1

Warning: include() [function.include]: Failed opening '/home/sw/ziembor/public_html/include/headtmpl.php' for inclusion (include_path='.:/:/usr/local/php/pear5') in /Windows_NT/time-synchronization-w2k.php on line 1
Synchronizacja czasu w Windows 2000: SNTP i inne metody.

Synchronizacja czasu w Windows: SNTP i inne metody.

Ziemek Borowski http://ziembor.waw.pl/zmb/

Synchronizacja czasu w środowisku Win32

Najprostszą, dostępną chyba w każdej wersji Windows możliwością synchronizacji czasu jest polecenie

       net time /?

a w szczególności

net time \\inny_komputer_win32 /set /y

/y jest nieudokumentowanym przełącznikiem, potwierdzający chęć zmiany czasu. W przeciwnym wypadku użytkownik jest proszony o potwierdzenie wykonania tej zmiany. Wykonuje się je zazwyczaj w skryptach logowania, co w wypadku systemów aspirujących do możliwości uzyskania certyfikatów bezpieczeństwa: takich jak rodzina Windows NT (w tym Windows 2000 i XP) było dość kłopotliwe -- normalny użytkownik nie ma prawa zmiany czasu (albo należy do grupy Power users (Użytkownicy zaawansowani)). W czasie przygotowań związanych z problemem roku 2000 Microsoft opublikował także serwis TimeServ służący do synchronizacji czasu w Windows NT: ftp://ftp.microsoft.com/reskit/y2kfix -- wykorzystujący SNTP do synchronizacji czasu (przy czym używa innego interfejsu użytkownika niż omawiany w dalszej częsci W32Time, po szczegóły odsyłąm do dołączonej dokumentacji).

Wraz z pojawieniem się modelu domenowego pojawiło się jeszcze parametr /DOMAIN pozwalający na synchronizowanie czasu w domenie NT oraz /RTSDOMAIN (Reliable Time Server) .

Synchronizacja czasu w środowisku heterogenicznym

W wypadku środowisk rozproszonych, heterogenicznych, np. używających jako serwery infrastruktury systemów uniksopodobnych (np. FreeBSD lub Linuksa) lub routerów (np. Cisco lub Nokia) interesuje nas raczej użycie protokołu SNTP. Podobnie w sytuacji gdy musimy synchronizować czas w naszej sieci ze źródłami zewnętrznymi, np. z zegarem atomowym lub implementujemy strukturę lasu ActiveDirectory wraz z protokołem Kerberos (gdzie bilety są wystawiane na określony okres i sprawdzana jest zgodność zegarów pomiędzy oboma stronami transakcji). SNTP (opisany w RFC 2030 Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI. -- przy czym Microsoft w swojej dokumentacji odwołuje się do starszego RFC 1769) jest dostosowaną do potrzeb urządzeń wbudowanych wersją protokołu NTP -- mniejsze są możliwości kontrolowania serwera i klienta, oraz słabsze są mechanizmy nadmiarowości protokołu -- przy zachowaniu zgodności z protokołem macierzystym.

Działanie klienta protokołu SNTP w Windows 2000 jest nieco dziwne. Informacje o dostępnych serwerach NTP ustawia się przy pomocy polecenia

       net time /setsntp:server1,server2

Listę ustawionych serwerów sprawdza się przy pomocy:

       net time /querysntp

Sama synchronizacja czasu jest natomiast przerzucona są serwis W32Time -- przy czym nie do końca rozumiem kiedy/w jakich odstępach czasowych jest ona przeprowadzana. Na pewno w czasie startu serwisu:

p:\>date /t &time /t &net stop W32time &net start  W32time  & date /t & time /t
Cz 2001-10-11
12:08
The Windows Time service is stopping.
The Windows Time service was stopped successfully.
The Windows Time service was started successfully.
N 2001-10-28
15:08

Teoretycznie także w czasie wykonywania polecenia

net time /set

jednak zdarzają się sytuacje, że opcja ta nie działa. Przyczyny bywają różne. Przydatne do diagnozy mogą być następujące narzędzia:

W wypadku synchronizacji czasu w domenie synchronizacja przeprowadzana jest raz w ciągu zadanego okresu: początkową jego wartością jest 45 minut. Po trzech udanych synchronizacjach okres jest zwiększany do 8 godzin (zaś 3 nieudane próby to powrót do wartości początkowej 45 minut -- (Q224799).

Poza udostępnianą wraz z systemem usługą Windows Time można użyć jednego z wielu innych dostępnych klientów NTP pracujących w środowisku Win32:

lub dowolny inny wymieniony np. na stronie Time Synchronization Software On Windows NT, Windows NT Server, and Windows XP Platform.

Uwagi

Usługi NTP i SNTP używają portu 123/UDP -- należy go udostępnić na filtrze pakietów dla stacji korzystających z tego protokołu, dla odpowiednich serwerów.

Listę dostępnych publicznie serwerów można uzyskać pod adresem http://www.eecis.udel.edu/~mills/ntp/servers.htm. W Polsce zostały udostępnione m.in. serwery ze stratum 1 -- tj. najwyższym możliwym poziomem dokładności, podłączone do zegara atomowego -- parametr stratum określa w NTP odległość (w ilości serwerów ,,po drodze'') od zegara atomowego.

Poza tym istnieją jeszcze serwery z mniejszą dokładnością (Stratum 2, czasem 3):

Oczywiście stosowanie NTP lub SNTP nie zawsze ma sens. Czasem prościej (po daniu użytkownikom praw do zmiany czasu, przy pomocy pochodzącego z Resource Kit narzędzia NTrights.exe lub regularnie synchronizować czas z użyciem psexec z www.sysiternals.com:

for /f "tokens=1 " %%i in (lista.dat) do psexec \\%%i net time \\PDC /set /y

(gdzie lista.dat to nazwy komputerów w domenie, a %%i lub %i (w momencie gdy uruchamiany z linii poleceń nie ze skryptu) to zmienna oznaczająca poszczególne komputery).
W wypadku usług krytycznych dla działania firmy wskazane jest jednak poleganie na własnym zegarze atomowym (lub odbiorniku sygnału z jednego z autoryzowanych zegarów) lub przynajmniej używanie klienta czasu NTP.

Patrz też

Dziękuję


Warning: include(/home/sw/ziembor/public_html/include/bottomtmpl.php) [function.include]: failed to open stream: No such file or directory in /Windows_NT/time-synchronization-w2k.php on line 309

Warning: include() [function.include]: Failed opening '/home/sw/ziembor/public_html/include/bottomtmpl.php' for inclusion (include_path='.:/:/usr/local/php/pear5') in /Windows_NT/time-synchronization-w2k.php on line 309