Synchronizacja zegara systemowego poprzez NTP

25 10 2009

Czas – rzecz niezwykła. Coś, co jest i płynie. Zapewne każdy z nas chce znać go jak najdokładniej, gdyż to według niego cywilizacja ludzka planuje swój każdy dzień. W związku z tym możemy zadbać o to, by nasz systemowy zegar pokazywał godzinę z dokładnością nawet do kilku milisekund. W tym celu stworzony został protokół NTP oraz jego klient/serwer ntpd.

ntpd działa w naszym systemie jako daemon. Przy uruchomieniu łączy się z serwerami czasu i wstępnie koryguje zegar systemowy pod warunkiem, że różnica nie jest większa niż 1000 sekund (dlatego nie nada się do przestawiania zegara z czasu letniego na zimowy i odwrotnie). Następnie działa w tle i stopniowo przyspiesza albo zwalnia zegar, by uzyskać jak najdokładniejszy czas, uśredniając różnice z podanych serwerów.

Na wstępie powinniśmy ustawić godzinę na tyle dokładnie, żeby różnica nie przekroczyła wspomnianych 1000 sekund. Możemy to zrobić ręcznie bądź poleceniem:

# ntpdate ntp.icm.edu.pl

Następnie upewniamy się, że mamy zainstalowany w systemie pakiet ntp (dostępny w Slackware).

Pora przejść do edycji pliku konfiguracyjnego /etc/ntp.conf. Opcjami server podajemy serwery protokołu NTP, dzięki którym ntpd będzie mógł korygować czas. Jeżeli chcemy mieć dostęp do logów, warto użyć opcji logfile <ścieżka do pliku z logami>. Resztę opcji pozostawiamy domyślnie. Pomijając komentarze i puste linie, ntp.conf może wyglądać tak:

server 150.254.183.15
server 193.110.137.171
server 193.0.71.133
fudge   127.127.1.0 stratum 10
driftfile /etc/ntp/drift
broadcastdelay  0.008
restrict default noquery nomodify
restrict 127.0.0.1
logfile /var/log/ntp

Warto zwrócić uwagę na plik /etc/ntp/drift, w którym przechowywana będzie częstotliwość korygowania zegara. Wartość tworzona jest na podstawie obserwacji jego dokładności przez ntpd.

Teraz wypada zdefiniować w pliku /etc/ntp/step-tickers serwery NTP, z którymi będzie łączył się ntpdate przy starcie. Mogą być te same, co w ntp.conf:

150.254.183.15
193.110.137.171
193.0.71.133

Na zakończenie ustawiamy systemową strefę czasową poprzez skopiowanie odpowiedniego pliku do /etc/localtime. Dla Polski:

# cp -f /usr/share/zoneinfo/Europe/Warsaw /etc/localtime

Ostatni ruch to nadanie skryptowi startowemu atrybutu wykonywalności:

# chmod 755 /etc/rc.d/rc.ntpd

Od następnego uruchomienia systemu daemon ntpd rozpocznie swoją pracę. Ażeby zobaczyć statystyki dotyczące poszczególnych serwerów w porównaniu do naszego zegara, wydajemy polecenie:

# ntpq -p

Pamiętajmy jedynie, by nie mieszać ntpd z innymi synchronizatorami. Po dokładniejszy opis opcji zapraszam do dokumentacji.


Opcje

Info

2 Odpowiedzi do “Synchronizacja zegara systemowego poprzez NTP”

25 10 2009
Planeta jakilinux.org » Synchronizacja zegara systemowego poprzez NTP (22:00:32) :

[...] źródłowa: Synchronizacja zegara systemowego poprzez NTP [...]

6 11 2009
middleofdreams (23:25:31) :

Ja zwykle używam openntpd, wrzucam jako daemon’a… i wszystko śmiga. A konfiguracja zdaje sie prostsza ;) Tyle, że na Archu :p

Odpowiedz

Możesz używać tagów : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>