- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 09/99

Synchronizace času pomocí NTP

Nedávno jsem se zděsil při pohledu na hlavičku jednoho mého e-mailu, který jsem odeslal do linux@linux.cz. Čas byl sice v pořádku (také jsem ho den předtím upravoval), avšak datum byl posunut o dva dny dopředu. Proto jsem se rozhodl, že tomu udělám přítrž - že si instaluji NTP klienta a čas se mi bude synchronizovat automaticky. Po úspěšné instalaci jsem se rozhodl přispět svojí troškou do mlýna a napsat tento článek do LN.

Nejdříve by se hodilo alespoň trochu poodhalit roušku tajemného protokolu NTP (Network Time Protocol). Jde o client/server protokol založený na UDP paketech, který je podporovaný na většině dnes používaných platforem. (Linux, Unix, Mac, Amiga, Dos, Netware, OS/2, Windows, ...) Je definován v RFC 1305 a v současné době je k dispozici jeho již 4. verze obsahující krom samotné synchronizace času také podporu pro autentifikaci klientů a mnohá další rozšíření.

Někteří z vás teď jistě přemýšlejí nad tím, jakým způsobem jsou synchronizovány ty servery, podle kterých se synchronizují ostatní klienti. Tyto servery (nazývané stratum 1) jmohou být synchronizovány několika způsoby: pomocí signálu z GPS satelitu, pomocí radiového signálu z atomových hodin, nebo nějakým jiným způsobem (přiznám se, že je všechny neznám).

O několik řádek výše jsem zmínil termín stratum, což je hodnota udávající, jak přesné (respektive jak daleko v hierarchii serverů) se server nalézá. Nejpřesnější je samozřejmě onen stratum 1 server, který je synchronizovaný jinak, než protokolem NTP@. O něj se synchronizuje stratum 2 a tak dále ...

Když už teď všichni víme, jak to přibližně funguje, přikročme k instalaci. Pro synchronizaci Vašeho linuxového miláčka budete potřebovat balík nalézající se na url http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ Jde o zdrojový kód ntp daemona + několika utilit obhospodařujících onu synchronizaci. Po stažení a kopilaci + instalaci balíku zbývá to poslední a nejdůležitější - konfigurace. Ta je kupodivu velice jednoduchá (alespoň ta základní). Nejdříve je potřeba se rozhodnout, jak důležité je pro Vás mít přesný čas. Pokud je to pro Vás méně důležité, chcete jen, abyste neměli čas posunutý o řádově dny (a zároveň pokud nemáte pevnou linku), doporučuji Vám možnost č. 1 - spouštění ntpdate z cronu, což zařídíte řádkou:

1 * * * * root /cesta.k/ntpdate -s -o 3 jméno.NTP.serveru

tím se Vám bude čas synchronizovat jednou za hodinu. Pro ortodoxní časoměřiče je určena možnost č. 2 - standalone daemon ntpd. Tento daemon při svém startu načítá konfigurační soubor /etc/ntp.conf, jehož syntaxe je jednoduchá:

driftfile /etc/ntp.drift # viz dokumentace

restrict default nomodify # zákaz runtime # konfigurace # pro všechny restrict 127.0.0.1 # žádné restrikce # pro 127.0.0.1 (pri odstranění # této řádky # nebude ntpd fungovat) server jméno.ntp.serveru # [version verze] #jméno serveru, #podle kterého se má #ntpd synchronizovat #event. i verze protokolu

Řádek specifikujících server může být pochopitelně více (doporučeny jsou 3).

Tím bychom měli hotovou konfiguraci... až na jeden malý detail - kde sehnat jméno NTP serveru, podle kterého se budeme synchronizovat? Odpověď je jednoduchá: http://www.eecis.udel.edu/~mills/ntp/servers.htm. Na této adrese je seznam mnoha serverů, které veřejně poskytují přesný čas. Abych Vám ušetřil hledání jejich jmen, nabízím zde několik adres stratum 1 serverů pro Evropu (s adresami na jejich administrátory):

ntps1-[012].uni-erlangen.de  \
		time@informatik.uni-erlangen.de
ntps1-[01].cs.tu-berlin.de   \
		gg@cs.tu-berlin.de
ntps1-1.rz.Uni-Osnabrueck.DE \
		timeadm@Uni-Osnabrueck.DE
time.ien.it     denasi@ien.it
Time2.Stupi.SE  roll@stupi.se

Poté, co spustíte vlastní ntpd, si zajisté budete chtít ověřit jeho funkci. K tomu slouží několik utilit:

ntptrace - jako traceroute, avšak zjišťuje cestu od Vašeho serveru k stratum 1
ntpdc - utilita umožňující runtime konfiguraci ntpd
ntpq - utilita umožňující zjišťování parametrů ntpd
(více viz dokumentace) *


- předchozí článek - následující článek - obsah - úvodní stránka -