Konfigurace NTP serveru v Linuxu

By | 02/06/2019

Konfigurace NTP serveru v Linuxu

Motivace:

NTP je protokol pro synchronizaci vnitřních hodin počítačů. Konfigurace NTP serveru tak může zajišťovat synchronizaci času všech počítačů v síti.

OS:

Implementace byla prováděna na Ubuntu 18.04 LTS, postup může být podobně aplikovatelný na starší verze Ubuntu.

Implementace:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace služby NTP:

sudo apt-get install ntp

Pomocí příkazu níže vypíšeme aktuální nastavení NTP serverů:

ntpq -p

Výpis příkazu ntpq -p:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.002
 host55.rax.ru   88.212.202.5     4 u    -   64    1   73.870    4.151   0.002

Je možné použít výchozí nastavení NTP serverů. Nicméně proč posílat pakety do světa, když je možné použít české NTP servery. Proto výchozí NTP servery uvedené níže budou zakomentovány v ntp.conf:

sudo vim /etc/ntp.conf
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
#pool ntp.ubuntu.com

A nahradit je českými v configu ntp.conf:

server tik.cesnet.cz
server tak.cesnet.cz
server ntp.nic.cz

Další české NTP servery lze najít zde: http://phoenix.inf.upol.cz/~bazgierv/ntp.html

Volitelně je možné posílat NTP zprávy broadcastem do naší sítě pro síťová zařízení. To se provede v configu ntp.conf, odkomentováním příkazu broadcast 192.168.123.255. Pokud se nacházíme na podsíti 192.168.88.0 255.255.255.0, bude původní IP adresa broadcastu 192.168.123.255 nahrazena 192.168.88.255.

broadcast 192.168.88.255

Pozn. Praktická konfigurace ukázala, že na starším Ubuntu 12.04.5 LTS příkaz broadcast nefungoval resp. neukazovala se ve výpisu ntpq -p IP adresa broadcastu.

Aby se aplikovaly změny udělat restart NTP služby:

sudo service ntp restart
sudo service ntp-systemd-netif restart

Tímto je konfigurace NTP serveru hotova.

Ověření:

ps -A | grep ntpd

Výpis příkazu ps -A | grep ntpd:

1500 ? 00:00:00 ntpd

Výpis nastavených NTP serverů:

ntpq -p

Výpis příkazu ntpq -p:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.88.255  .BCST.          16 B    -   64    0    0.000    0.000   0.000
 tik.cesnet.cz   .ATOM.           1 u    2   64    1   14.978   14.234   0.000
 tak.cesnet.cz   .GPS.            1 u    2   64    1   15.176   14.057   0.000
 ntp.nic.cz      .GPS.            1 u    3   64    1   13.124   13.020   0.000

Několik minut potrvá, než se servery inicializují. Jakmile inicializace skončí, objeví se u NTP serverů ve většině případů hvězdička či křížek.

ntpq -p

Výpis příkazu ntpq -p:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.88.255  .BCST.          16 B    -   64    0    0.000    0.000   0.000
*tik.cesnet.cz   .ATOM.           1 u   62   64  377   12.301    0.266   5.036
+tak.cesnet.cz   .GPS.            1 u   64   64  377   10.327    6.662   7.570
+ntp.nic.cz      .GPS.            1 u   65   64  377   11.431    2.013   7.067

Služba NTP vybírá vhodné NTP servery podle dlouhodobých statistik. Vždy se preferuje synchronizace NTP serveru s menším stratum (st) a tím je zrovna server tik.cesnet.cz.

Legenda:

* – Aktuální a preferovaný zdroj.
+ – Další kandidát pokud aktuální vypadne (považovaný za dobrý zdroj).
remote – IP nebo hostname vzdáleného NTP serveru.
refid – Reference zdroje. GPS znamená, že čas je synchronizovaný pomocí družic, nebo může se objevit i PPS (pulse per second). ATOM jsou atomové hodiny či velmi přesný krystal
st – Stratum, který udává vrstvu časového zdroje v hierarchii. Čím menší číslo, tím přesnější čas.

  • Stratum 1 značí NTP server s nejpřesnějším časem a jeho referečním externím časovým zařízení jsou atomové, nebo rádiové hodiny či GPS.  Tato referenční časová zařízení jsou označena stratum 0 v hierarchii.
  • Stratum 16 znamená, že je zdroj nesynchronizovaný.
    • Výjimkou je broadcast adresa označená jako BCST, s nesoucím stratum 16, je což je standardní.

t – Typ zasílané zprávy (u=unicast, m=multicast, b=broadcast, l=local,..).
when – Počet sekund, které uplynuly od NTP odpovědi (synchronizace).
pool – Při naplnění časovače when, vyšle NTP klient žádost o další synchronizaci, zde po 64 sekundách.
reach – Stav synchronizace v hodnotě hexa, každá logická 1 níže reprezentuje nový přijatý paket (z prava).

  • 0x377 = (1111 1111)2 – synchronizace plně funkční, NTP proces přijal úspěšně posledních 8 paketů (to od restartu to může trvat desítek minut).
  • 0x0 = (0000 0000)2 – z posledních 8 paketů, NTP proces nepřijal zatím žádné.
  • 0x1 = (0000 0001)2 – NTP proces přijal poslední (nejnovější) paket z posledních 8 paketů.
  • a tak by se dalo pokračovat…

delay – Odezva (round trip time) v ms (od vyslání NTP žádosti po NTP odpověď).
offset – Časový rozdíl v ms mezi NTP klientem a zdrojem.
jitter – Rozdíl mezi NTP odpověďmi.

Další užitečné informace:

ntpq -c rv

Výpis příkazu ntpq -c rv:

associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd 4.2.8p10@1.3728-o (1)", processor="x86_64",
system="Linux/4.15.0-29-generic", leap=00, stratum=2, precision=-21,
rootdelay=11.325, rootdisp=10.660, refid=195.113.144.201,
reftime=e1e9284c.afdf01cc Sat, Feb 8 2020 13:30:04.686,
clock=e1e92942.8ab0c750 Sat, Feb 8 2020 13:34:10.541, peer=60775, tc=7,
mintc=3, offset=-2.836449, frequency=12.163, sys_jitter=0.959939,
clk_jitter=2.414, clk_wander=0.644, tai=37, leapsec=201701010000,
expire=201912280000

Z výpisu se dá usuzovat, že je náš server je synchronizován (řetězec leap_none, sync_ntp) serverem tik.cesnet.net na IP adrese 195.113.144.201. Připojením na NTP server se stratum 1 se námi nakonfigurovaný server podle hierarchie stává stratum 2, což ukazuje výpis. Poslední synchronizace byla provedena Feb 8 2020 13:30:04.686 .

Logy:

grep "ntpd" /var/log/syslog

Vypsání příkazu grep “ntpd” /var/log/syslog:

Jun 12 16:08:49 jesterka ntpd[3582]: proto: precision = 2.165 usec (-19)
Jun 12 16:08:49 jesterka ntpd[3582]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): good hash signature
Jun 12 16:08:49 jesterka ntpd[3582]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): loaded, expire=2019-12-28T00:00:00Z last=2017-01-01T00:00:00Z ofs=37
Jun 12 16:08:49 jesterka ntpd[3582]: Listen and drop on 0 v6wildcard [::]:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listen normally on 2 lo 127.0.0.1:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listen normally on 3 enp1s0 192.168.88.15:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listen normally on 4 lo [::1]:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listen normally on 5 enp1s0 [fe80::227:eff:fe0e:c6e5%2]:123
Jun 12 16:08:49 jesterka ntpd[3582]: Listening on routing socket on fd #22 for interface updates

Test synchronizace času na WIN:

Nakonfigurovaný NTP server nám běží na IP 192.168.88.15:

Konfigurace NTP serveru

Hodiny byly úspěšně synchronizovány.

Zachycení zpráv – Wireshark:

Zachycení zpráv NTP client/server:

Konfigurace NTP serveru

Zachycení zprávy NTP broadcast:

Konfigurace NTP serveru


Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *