Konfigurace NTP serveru v Linuxu

By | 02/06/2019

Konfigurace NTP serveru v Linuxu

Update článku k 13.11.2020.

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 a Ubuntu 20.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

Pokud je nakonfigurovaný firewall, je nutné povolit provoz UDP/123:

sudo ufw allow 123/udp

Konfigurace NTP serveru je uvedena v configu ntp.conf.

sudo vim /etc/ntp.conf

Částečný výpis příkazu ntp.conf, kde je vidět defaultní konfigurace, kterou je doporučenou nechat, tak jak je vidět níže, jelikož při dotazu obecně na pool.ntp.org (nebo 0.ubuntu.pool.ntp.org, 1.ubuntu.pool.ntp.org, ..) se hledají ty nejbližší NTP servery [1]. Nastavení iburst vyšle místo jedno paketu dávku osmi paketů, pokud je nějaký server nedosažitelný.

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

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

Alternativně a nepovinně je možné provést manuální konfiguraci zakomentováním řádků pool a nastavením manuálních NTP serverů 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 vložit ty české 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

Jak již bylo uvedeno, je doporučené nechat původní nastavení v ntp.conf.

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. Např. 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 za 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í:

sudo service ntp status

nebo

sudo systemctl status ntp

Výpis příkazu sudo service ntp status:

 
ntp.service - Network Time Service
     Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-11-13 22:10:44 CET; 2min ago
       Docs: man:ntpd(8)
    Process: 2469 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
   Main PID: 2478 (ntpd)
      Tasks: 2 (limit: 1058)
     Memory: 1.1M
     CGroup: /system.slice/ntp.service
             └─2478 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 123:130

Alternativní 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
==============================================================================
 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
 192.168.88.255  .BCST.          16 B    -   64    0    0.000    0.000   0.002

Několik minut potrvá, než se servery inicializují a zobrazí. 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
==============================================================================
 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
 192.168.88.255  .BCST.          16 B    -   64    0    0.000    0.000   0.002
+lx.ujf.cas.cz   .GPS.            1 u    5  128  377    9.591   18.999   9.845
+mort.cihar.com  195.113.144.201  2 u   80  128  377   11.954    9.248  13.198
+time.cloudflare 10.31.8.4        3 u   86  128  377    9.869   23.143  12.487
+tallis.lavondys 195.113.144.201  2 u   87  128  377   12.291   11.693   9.685
+herbrand.noumic 193.190.230.37   2 u   77  128  377   35.567    6.740  13.332
*a1.vnet.cx      .GPS.            1 u   74  128  377   13.254    9.796  11.677
-ntp3.kashra-ser 192.168.100.15   2 u   83  128  337   36.479   16.896  10.220
+time.cloudflare 10.31.8.4        3 u   68  128  377    9.693   10.641  12.378
-monit.blesmrt.n 147.231.2.6      2 u    3  128  377   22.025   16.332   6.950
+wrath.majkl578. 147.231.100.11   2 u    3  128  377   14.576    8.742  10.747

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 NTP server a1.vnet.cx.

Legenda:

*” – Aktuální a preferovaný zdroj.
+” – Další kandidát pokud aktuální vypadne (považovaný za dobrý zdroj).

  • Další znaky jako tečka (.), pomlčka(), hash(#) či mezera znamenají, že server nesplňuje požadavky, je nedostupný, nebo není potřeba. [2]

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. Další referenční zdroje lze najít zde.
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-109-generic", leap=00, stratum=2, precision=-19,
rootdelay=13.254, rootdisp=34.237, refid=217.30.75.147,
reftime=e2f64d93.fdc6abac  Sun, Aug 30 2020 18:08:51.991,
clock=e2f64f4b.fb056d43  Sun, Aug 30 2020 18:16:11.980, peer=41734, tc=7,
mintc=3, offset=13.651486, frequency=-25.865, sys_jitter=6.732608,
clk_jitter=14.437, clk_wander=5.903, tai=37, leapsec=201701010000,
expire=202012280000

Z výpisu se dá usuzovat, že je náš server je synchronizován (řetězec leap_none, sync_ntp) serverem a1.vnet.cx na IP adrese 217.30.75.147. 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 Sun, Aug 30 2020 18:08:51.991.

Logy:

grep "ntpd" /var/log/syslog

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

Aug 30 18:24:35 jesterka ntpd[8135]: ntpd 4.2.8p10@1.3728-o (1): Starting
Aug 30 18:24:35 jesterka ntpd[8135]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 113:123
Aug 30 18:24:35 jesterka ntpd[8138]: proto: precision = 1.956 usec (-19)
Aug 30 18:24:35 jesterka ntpd[8138]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): good hash signature
Aug 30 18:24:35 jesterka ntpd[8138]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): loaded, expire=2020-12-28T00:00:00Z last=2017-01-01T00:00:00Z ofs=37
Aug 30 18:24:35 jesterka ntpd[8138]: Listen and drop on 0 v6wildcard [::]:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listen normally on 2 lo 127.0.0.1:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listen normally on 3 eth0 192.168.88.15:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listen normally on 4 lo [::1]:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listen normally on 5 eth0 [fe80::227:eff:fe0e:c6e5%2]:123
Aug 30 18:24:35 jesterka ntpd[8138]: Listening on routing socket on fd #22 for interface updates
Aug 30 18:24:36 jesterka ntpd[8138]: Soliciting pool server 195.113.20.2
Aug 30 18:24:37 jesterka ntpd[8138]: Soliciting pool server 89.221.214.130
Aug 30 18:24:37 jesterka ntpd[8138]: Soliciting pool server 81.2.248.189
...

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

Zdroje:

[1] https://www.pool.ntp.org/en/use.html
[2] https://support.f5.com/csp/article/K10240

 

Napsat komentář

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