NTP server
Obsah
Úvod
Po několika instalaci GPS z NTP jsem se rozhodl pro NTP server udelat samosattnou stránku. Vzhledem k době, již bude zaměřena na instalaci na systému Debian 12 - Bookworm.
Instalace NTP
Prvně provedeme vlastní instalaci. Pokud mame nainstalovany chrone, tak bude odinstalovan. Nakonec vytvoříme adresář pro logy, z nějakého důvodu se při instalaci nevytvoří.
sudo apt-get update && sudo apt-get -y install ntp sudo mkdir /var/log/ntpsec && sudo chown ntpsec:ntpsec /var/log/ntpsec
Pokud nechceme akceptovat pro NTP server načtenou adresu z DHCP, tak upravíme default konfiguraci:
sudo nano /etc/default/ntpsec
IGNORE_DHCP="yes"
Nastavení NTP
Konfigurační soubor se presunul z /etc/ntp.conf do /etc/ntpsec/ntp.conf, vněm pak provedeme potřebné úpravy.
sudo nano /etc/ntpsec/ntp.conf
Nezapomeňme po změně konfigurace ntp server restartovat.
sudo service ntp restart
Zdreje času
Ve výchozí konfiguraci jsou nastavene tzv pooly, z kterych se automaticky čerpají nejbližší adresy. Místo výchozích můžeme zvilit třeba cz zdroje.
pool cz.pool.ntp.org
Ty ale mažu a místo nich používám:
server ntp.cesnet.cz iburst server tak.cesnet.cz iburst server ntp.nic.cz iburst
GPSd
Pokud máme k dispozici GPS modul a nainstalované utility gpsd, můžeme je nastavit jako zdroj času.
# GPS Serial data reference server 127.127.28.0 minpoll 2 maxpoll 4 iburst prefer fudge 127.127.28.0 time1 0.1376 flag1 1 refid GPS stratum 1 # PPS on memory source server 127.127.28.2 minpoll 2 maxpoll 4 fudge 127.127.28.2 time1 0.0000 flag1 1 refid PTP # PPS Kernel mode server 127.127.22.0 minpoll 2 maxpoll 4 true fudge 127.127.22.0 time1 0.0000 refid PPS
V nastavení může být problém z hodnotou time1. Povoleny rozsah je 0.0 až 0.9999. Mělo by se jednat o hodnotu, aby offset byl co nejmenší (0,1393). Offset zjistíme výpisem ntpq -p.
- Kladná hodnota - hodnotu time1 snižíme o hodnotu offset podělenou 1000
- Záporná hodnota - hodnotu time1 navýšíme hodnotu offset podělenou 1000
Přístup
Ve výchozím stavu NTP server poskytuje data jen pro localhost. To samozřejmně nestačí a tak upravíme
restrict 10.0.0.0/8 # Povoli dotazy z privátní sítě restrict all # Povoli dotazy odkudkoliv
Pro vzdálený přístup a čtení jsou parametry:
- nomodify - "Nepovolit hostiteli / podsíti změnit nastavení ntpd, i když mají správné klíče." Implicitně ntpd vyžaduje autentizaci se symetrickými klíči pro modifikace provedené pomocí ntpdc. Takže pokud nenakonfigurujete symetrické klíče pro váš ntpd nebo je necháváte řádně chráněný, nemusíte používat "nomodify", pokud nemáte obavy že autentizace NTP může být ohroženo.
- noserve - "Nepřipojujte čas tomuto hostiteli / podsíti." Tato možnost je skutečně určena k použití, pokud chcete povolit hostiteli, podsíti přístup k vašemu serveru ntpd pouze pro sledování a / nebo vzdálenou konfiguraci.
- notrust - ignorovat všechny pakety NTP, které nejsou kryptograficky ověřeny. Tato volba informuje ntpd, že ignoruje všechny pakety, které nejsou kryptograficky ověřeny. NEPOUŽÍVEJTE "notrust", pokud ntp crypto (tj. Symetrické klíče nebo autokey) nebylo správně nakonfigurováno na "obou koncích" asociace ntp (např. Vaše ntpd a vzdálený časový server, váš ntpd a klient).
- noquery - "Nedovolte hostiteli / podsíti dotazovat váš stav ntpd." Funkce ntpd status query poskytované ntpq / ntpdc zobrazí některé informace o systému kde je spuště ntpd (např. Verze OS, verze ntpd). To si mnozí lidé nepřejí, aby ostatní věděli. Musíte se rozhodnout, zda je shrnutí těchto informací důležitější než možné výhody umožňující klientům vidět synchronizační informace o vašem ntpd.
- ignore - Zakázat pakety všeho druhu, včetně dotazů ntpq a ntpdc .
- kod - Pošlete balíček kiss-o'-death (KoD), pokud je přítomen limited příznak a paket porušuje omezení rychlosti stanovené příkazem Vyhoďte. KoD pakety jsou samy o sobě limitovány pro každou zdrojovou adresu zvlášť. Pokud je příznak kod používán v omezení, které nemá limited vlajku, nevzniknou žádné odpovědi KoD.
- limited - Zakázat časovou službu, pokud paket poruší omezení rychlosti stanovené příkazem discard . To se nevztahuje na dotazy ntpq a ntpdc .
- mssntp - Povolení ověřování MS-SNTP systému Microsoft Windows pomocí služeb služby Active Directory. Poznámka: Potenciální uživatelé by si měli být vědomi toho, že tyto služby zahrnují připojení TCP k jinému procesu, který by mohl potenciálně blokovat, a odmítá služby ostatním uživatelům. Tento příznak by měl být používán pouze pro vyhrazený server bez klientů jiných než MS-SNTP.
- nomodify - Zakaž dotazy ntpq a ntpdc, které se pokoušejí změnit stav serveru (tj. Rekonfigurace času spuštění). Dotazy, které vracejí informace, jsou povoleny.
- noquery - Zakázat dotazy ntpq a ntpdc . Časová služba není ovlivněna.
- nopeer - Zakázat pakety, které by mohly mobilizovat sdružení, pokud nebyly ověřeny. To zahrnuje vysílání, symetrický a mnohostranný serverový paket, pokud neexistuje nakonfigurovaná asociace. Obsahuje také sdružení pool , takže pokud chcete používat servery z direktivy peer a také chcete ve výchozím nastavení používat nopeer , budete chtít také řádek "restrict source ..." , který neobsahuje direktivu nopeer . Všimněte si, že tento příznak se nevztahuje na pakety, které se nepokouší mobilizovat sdružení.
- noserve - Zakázat všechny pakety kromě ntpq a ntpdc dotazů.
- notrap - Odmítnout poskytnout službu přetahování řídicích zpráv režimu 6 odpovídajícím hostitelům. Služba trap je subsystém protokolu protokolu ntpdc, který je určen pro použití programem protokolování vzdálených událostí.
- notrust - Odmítnout pakety, které nejsou kryptograficky ověřeny. Pečlivě si uvědomte, jak tento příznak interaguje s volbou auth povelem povolit a zakázat . Je-li povoleno auth , což je výchozí, ověření je vyžadováno u všech paketů, které mohou mobilizovat přidružení. Je-li auth zakázán, ale není přítomen příznak notrust , přidružení může být mobilizováno, bez ohledu na to, zda je ověřeno. Je-li auth zakázáno, ale je přítomen příznak notrust , ověření je vyžadováno pouze pro zadaný rozsah adresy / masky.
- ntpport - Toto je ve skutečnosti modifikátor algoritmu shody, spíše než příznak omezení. Její přítomnost způsobuje, že záznam o omezení je nutný pouze v případě, že zdrojový port v paketu je standardní port NTP UDP (123). Omezující řádek obsahující ntpport je považován za specifičtější než jedna se stejnou adresou a maskou, ale chybí ntpport .
- version - Odmítnout pakety, které neodpovídají aktuální verzi NTP.
NTP Second File
Tento soubor je jiz soucastí vlastní instalace a tudíž není aktuální. Pro poradek ale původní text ponechávám.
Jednou za dva roky, maximálně dvakrát do roka se přidává jedna sekunda. NTP server s touto informací umí pracovat a o této změně dává jeden den dopředu vědět aby se podřízené servery na tuto událost připravili a nenastal problém z důvodu náhlé změny, chybějícího časového údaje. Z toho plyne, že o této informaci musí vědět servery prvního řádu, aby ji dále delegovali. V případě synchronizace GPS je tato informace přenášena přímo GPS družicemi. Pokud je ale synchronizace pro NTP server prvního řádu brána z jiného zdroje který o této změně předem neinformuje, je vhodné přidat odkaz na soubor, obsahující data kdy posun nastane. Vlastní soubor můžeme stáhnout z několika zdrojů, například:
- http://www.ietf.org/timezones/data/leap-seconds.list
- ftp://tycho.usno.navy.mil/pub/ntp/leap-seconds.list
- ftp://time.nist.gov/pub/leap-seconds.list
Následně do konfiguračního souboru /etc/ntp.conf přidáme řádek z odkazem na stažený soubor:
# pouziti sekundoveho souboru leapfile "/cesta/na/leap-soubor"
Poté je nutné službu restartovat, aby se nastavení aplikovalo. Kontrolu vlastního souboru je pak potřeba provádět několikrát do roka.
Kličová slova.
ntp leap second file http://support.ntp.org/bin/view/Support/ConfiguringNTP
Ověření NTP
Pokud jsme zatím neprovedli, tak provedeme restart služby
sudo service ntp start
Následně ověříme funkcionalitu NTP:
ntpq -pn
Pro úplný výpis z dalšími informacemi můžeme použít:
ntpq -crv -pn
Po chvíli by jsme měli vidět, že se synchronizuje čas z nastavených serverů. Nás nejvíce zajímá SHM a PPS.
pi@raspberrypi:~$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ns1.luns.net.uk 33.117.170.50 2 u 54 64 7 65.454 2.666 5.800 +resntp-b-vip.lo 127.151.91.34 3 u 45 64 17 55.704 -5.169 8.482 +bart.nexellent. 194.242.34.149 2 u 17 64 17 76.585 -4.271 57.595 +v01.s01.be.it2g 193.190.230.65 2 u 20 64 37 86.464 -2.374 228.460 xSHM(0) .GPS. 0 l 11 16 377 0.000 144.714 3.026 oPPS(0) .PPS. 0 l - 16 0 0.000 0.000 0.000
Kde první znak znamená:
"mezera" Peer je vyřazen jako nedostupný, synchronizovaný na vlastní server (synchronizační smyčka) nebo velká synchronizační vzdálenost. x falsetick Peer je vyřazen algoritmem průniku jako falešný. . excess Peer je vyřazen, protože není mezi prvními deseti podle synchronizační vzdálenosti, a tak je nevhodný kandidát k dalšímu použití. - outlyer Peer je vyřazen clusteringovým algoritmem jako outlier. + candidat Peer je přeživší a je kandidátem na kombinační algoritmus. # selected Peer je přeživší, ale není mezi prvními šest seřazených podle synchronizační vzdálenosti. Pokud je asociace pomíjivá, může být odpojen, aby šetřil zdroje. * sys.peer Peer byl prohlášen za systémový a jeho proměnné jsou předávány vlastnímu systému. o pps.peer Peer byl prohlášen za systémový a předává proměnné vlastnímu systému. Skutečná synchronizace je však odvozena od signálu puls-per-second (PPS), ať už nepřímo přes ovladač referenčních hodin PPS nebo přímo přes rozhraní jádra.
remote - Adresa vzdáleného NTP serveru refid - Referenční NTP server vzdáleného NTP serveru st - vrstvy vzdáleného peeru t - Typ peeru: l - místní, u - unicast, m - multicast, b - broadcast, p - seznam when - Interval v sekundách od posledního přijatého paketu pool - Interval v sekundách dotazování (log2 sec - min/max pool ) reach - Registr dostupnosti (v osmičkové soustavě) delay - Aktuálně odhadované zpoždění offset - Offset serveru vzhledem k tomuto hostiteli jitter - Odhadovaná časová chyba peerových hodin měřená jako exponenciální průměr časových rozdílů RMS
Prepnuti NTP na lokal
Našel jsem dvě varianty, ale neumím je posoudit, ani jestli funguji.
timesyncd
V konfiguračním souboru timesyncd.conf nastavíme adresu NTP serveru a případně záložního
sudo nano /etc/systemd/timesyncd.conf
NTP=127.0.0.1 FallbackNTP=cz.pool.ntp.org
networkd
V konfiguračním souboru networkd.conf zakažeme nastaveni NTP serveru
sudo nano /etc/systemd/networkd.conf
[DHCP] UseNTP=false