Nastavení času

Jak správně nastavit čas na stroji připojeném do Internetu a jak ho nejlépe trvale udržovat?

Přesný čas je důležitější, než by se mohlo zdát na první pohled. Hovoříme zde o přesnosti lepší než 1 sekunda, ne o nějaké extrémní přesnosti nutné k běhu speciálních aplikací. Chcete mít možnost dohledat, co se stalo v určitou dobu, srovnávat události na jednotlivých serverech, to vše bez nutnosti prohledávat stovky řádků a čas porovnávat jen přibližně, možná také poskytovat přesný čas ostatním v síti.

Tento problém má několik možných řešení. Nejstarší postupy radí synchronizovat čas pomocí protokolů time nebo daytime realizované programem rdate. Ten pouze vyzvedne systémový čas z cílového serveru a podle něj jednorázově nastaví hodiny na místním stroji nebo dokonce čas jenom vypíše. Postup je vhodný, pokud jsou odchylky v čase malé a pokud není k dispozici jiný protokol.

Mnohé programy ale nesou velmi těžce, když se systémový čas změní skokem. Protokol ntp (port 123 udp a pro trasování také tcp) je přímo určen pro trvalou synchronizaci hodin více počítačů po síti. Servery jsou rozděleny hierarchicky do úrovní, tzv. stratum, nejnižší čislo znamená nejvyšší úroveň. Servery se stratum 1 mají nejvyšší přesnost, jejich hodiny mají externí zdroj dosti přesného času, samy se synchronizují mezi sebou a předávají čas serverům ve stratum 2. Protokol ntp používá sofistikované algoritmy, které zohledňují vlastnosti protokolů z rodiny tcp/ip (žádné záruky), topologickou vzdálenost serverů (čas, který uplyne od vyslání údaje k jeho přijetí), dočasné rozsynchronizování některého stroje a další vychytávky. Přitom platí pravidla, jak měnit místní čas: Je-li odchylka příliš vysoká, považuje se za nepravděpodobnou chybu a čas se synchronizovat nebude. Je-li naopak přijatelná, budou se systémové hodiny mírně zrychlovat nebo přibržďovat o tak malou hodnotu, aby pokud možno nikdo nic nepoznal. Proto také úvodní synchronizace nějakou dobu trvá, minimálně několik minut.

Serverů stratum 1 je na světě asi dvacítka, jejich vlastníci obvykle omezují, kdo se k nim smí připojovat. Poskytovatelé internetových služeb mají zpravidla vlastní servery stratum 2 a poskytují stále ještě dostatečně přesný čas svým zákazníkům. Menší firma si jistě založí jeden nebo více serverů se stratum 3 a klientské stanice, které se s nimi budou synchronizovat, budou tedy mít stratum 4. Obecně platí, že čím vyšší úroveň, tím je zaručená vyšší přesnost a menší tolerance, ale vzhledem k tomu, že velmi záleží také na parametrech síťového připojení, je nejrozumnější synchronizovat se podle topologicky blízkého stroje, i kdyby byl nižší úrovně.

Startovací skript linuxových distribucí počítá s tím, že hodiny u dlouho vypnutého počítače se mohly rozejít s reálným časem nebo dokoncenebyly baterií zálohované. Protože při startu ani skoková změna obvykle nevadí (poznáte ji jenom v záznamech o startu systému), použije se k jednorázovému nastavení času program ntpdate, který sice použije rovněž protokol ntp, ale pouze ke zjištění času a podle tohoto času nastaví systémové hodiny.

Pro počítače, které nejsou trvale připojeny k Internetu, je vhodnější program chrony, který používá podobné principy jako ntp, ale z formy ho nerozhodí ani ztráta spojení.