Arkadiusz Ćwiek

Synchronizacja czasu w linux’ie poprzez NTP(d)

NTP (ang. Network Time Protocol) to protokół służący do precyzyjnej synchronizacji czasu na różnych urządzeniach (komputerach) podłączonych do tej samej sieci. Jest on zaimplementowany w większości współczesnych systemów operacyjnych i przy zastosowaniu standardowego sprzętu komputerowego klasy PC, precyzja może wynosić kilka milisekund. Stosowanie wielu źródeł czasu jednocześnie znacząco poprawia precyzje synchronizacji, dostarczając wielopoziomową redundancję oraz pozwala wychwytywać i eliminować dostawców fałszywego czasu.

NTPd sprawdzenie stanu i uruchomienie

Ntpd jest demonem (programem działającym w tle) synchronizyjącym na bierząco czas komputera z wybranymi serwerami czasu NTP. Aby sprawdzić czy na naszym komputerze ntpd jest uruchomiony wydajemy polecenie:

service ntpd status


lub w przypadku starszych dystrybucji:

/etc/init.d/ntpd status

Aby włączyć lub wyłączyć ntpd w powyższych poleceniach zastępujemy „status” przez „start” lub „stop” (włączenie lub wyłączenie ntpd możemy zrobić tylko jako root lub poprzez su).

Natomiast jeśli chcemy aby ntpd był uruchamiany podczas każdego startu systemu to wydajemy (znów jako root, albo poprzez su) polecenie:

chkconfig ntpd on

Sprawdzanie dokładności synchronizacji czasu poprzez NTPd

Do sprawdzenia oszacowanej dokładności synchronizacji czasu służy program ntpstat, który raportuje stan synchronizacji oraz oszacowaną dokładność synchronizacji i czestotliwość z jaką odpytywany jest serwer czasu.
Oczywiście tuż po włączeniu ntpd czas może być rozsynchronizowany nawet o wiele sekund, jednak po maksymalnie kilku minutach, przy dobrym połączniu internetowym i stadardowej konfiguracji przy której do synchronizacji są wykorzystywane serwery czasu klasy stratum 3, w polsce pozwoli uzyskać oszacowaną dokładność synchronizacji czasu na poziomie ~ 50 ms (1/20 sekundy), co jest często wystarczające. Po odpowiedniej modyfikacji konfiguracji, korzystając tylko z publicznych serverów czasu można w polsce uzyskać synchronizacje z dokładnością ~ 10 ms (1/100 sekundy). Natomiast na kontynentach na których sieć internet jest rozwinięta słabiej a ilość publicznie dostepnych serwerów czasu mniejsza, precyzja jest znacznie mniejsza.

przydatne komendy

ntpdc -c sysinfo
ntpdc -c peer
ntpq -p

Uwaga

If you use DHCP then it will read /var/lib/ntp/ntp.conf.dhcp, not /etc/ntp.conf

Jak zwiększyć dokładność synchronizacji czasu z wykorzytsaniem NTP/ntpd

Jeśli precyzja synchronizacji jaką dostajesz przy stadardowej konfiguracji jest niewystarczająca to modyfikacja konfiguracji ntpd pozwala znacznie poprawić ten precyzje.
Opis poszczegulnych parametrów konfiguracyjnych ntpd mozna znaleźć m.in tu. A gdybyś nie był wstanie podołać temu zadaniu samodzielnie, skontaktuj się ze mną poprzez e-mail lub komentarze.

Dość długą liste serwerów NTP można znaleźć tutu.