Időszinkronizálás -Linux

Ebben a bejegyzésben megnézzük, hogy a debian alapú linux rendszereken hogyan tudjuk megoldani a pontos idő beállítását. Erre több mód is létezik, mi a timedatectl és a systemd-timesyncd.service szolgáltatással fogunk megismerkedni.

Alapfogalmak

UTC (Universal Time Coordinated)

Egyezményes koordinált világidő, mely a korábbi, 1961-ig alkalmazott Greenwitch-i GMT középidőt váltotta. A világidő alapját egy nagyon pontos atom óra adja.

RTC (Real Time Clock)

Informatikai eszközök általában saját hardveres órával is rendelkeznek. Általában egy kis elem látja el a hardveres órát, a működéséhez szükséges energiával.

NTP (Network Time Protocol)

A hálózati időprotokoll arra szolgál, hogy azok a csomópontok, melyek támogatják az NTP-t olyan számítógépek rendszeróráihoz szinkronizálják magukat, melyek atomórákhoz vannak beállítva.

LT (Local Time)

Az UTC-ből származtatott idő, melynek alapját az időzónák határozzák meg. Érdekesség, az UTC nullás zónát „Z” -vel jelölik, a NATO ZULU-nak mondja. Az UTC+1 az Alpha time, az UTC+2 a Bravo time és így tovább.

Idő szinkronizálás

Beállítások lekérdezése

Először is ellenőrízzük le, hogy a jelenlegi beállítások milyenek:

timedatectl

Egy lehetséges kimenet így néz ki:

Local time: h 2020-06-29 19:21:38 CEST
Universal time: h 2020-06-29 17:21:38 UTC
RTC time: h 2020-06-29 17:21:38
Time zone: Europe/Budapest (CEST, +0200)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no

A kimenetből az derül ki, hogy ez a csomópont nem egy NTP szervertől kéri le az időt, hanem a hálózaton keresztül egy dedikált csomópontról. Ami itt nem derül ki, hogy az általam használt csomópont egy dhcp szervertől kapja az ip címet, illetve azt is, hogy a lokális hálózatban mely dedikált szerver szolgáltatja a pontos időt. Amennyiben a TZ (Time Zone) nem a megfelelő zónára van állítva, azt az alábbiak szerint tudjuk orvosolni.

Időzóna beállítása

A lehetséges időzónák lekérdezéséhez az alábbi parancsot futtassuk:

timedatectl list-timezones

A kimenetben látható a lehetséges időzónák listája. Válasszuk ki a megfelelőt és állítsuk be:

timedatectl set-timezones Europe/Budapest

Szinkronizálás jelenlegi státusza

Kérdezzük le, a jelenlegi beállításokat:

systemctl status systemd-timesyncd.service

A lehetséges kimenetre egy példa:

systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Mon 2020-06-29 22:21:38 CEST; 2s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 902 (systemd-timesyn)
   Status: "Connecting to time server 172.16.10.1:123 (172.16.10.1)."
    Tasks: 2 (limit: 9830)
   CGroup: /system.slice/systemd-timesyncd.service
           └─902 /lib/systemd/systemd-timesyncd

jún 29 22:21:38 dbs systemd[1]: Starting Network Time Synchronization...
jún 29 22:21:38 dbs systemd[1]: Started Network Time Synchronization.

A kimenetből látszik, hogy ez a csomópont a 172.16.5.1 ip című dedikált csomópontról kéri le a pontos időt.

NTP Szerver beállítása

Amennyiben azt szeretnénk, hogy egy NTP szerverről frissüljön a csomópontunkon az idő, a következő módon tehetjük meg. Nyissuk meg az alábbi konfigurációs állományt:

nano /etc/systemd/timesyncd.conf

Számunkra a következő sorok lényegesek:

[Time]
NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

Alapértelmezetten a NTP= szekcióban nincs megadva egyetlen NTP szerver sem. Itt megadhatunk egy NTP szervert, akár DNS névvel is. Amennyiben kikommentezzük a második sort, úgy másodlagos NTP szervereket adhatunk meg, itt már előre meg van adva néhány. Ezután adjuk ki a követekező parancsot:

systemctl daemon-reload
systemctl restart systemd-timesyncd.service

Amennyiben ismét lekérjük a státuszt, látható, hogy a megadott NTP szervertől kéri le a csomópont a pontos időt. Ez esetben a timedatectl kimenete is megváltozik az alábbiak szerint:

Local time: h 2020-06-29 19:21:38 CEST
Universal time: h 2020-06-29 17:21:38 UTC
RTC time: h 2020-06-29 17:21:38
Time zone: Europe/Budapest (CEST, +0200)
Network time on: yes
NTP synchronized: Yes
RTC in local TZ: no

Konklúzó

Lokális hálózat időbeállításait úgy elegáns konfigurálni, hogy egy csomópontot konfigurálunk olyan módon, hogy az egy külső NTP szerverről kérje le a pontos időt, és a többi eszközt pedig olyan módon állítsuk be, hogy ettől a kitüntetett eszköztől kérjék a pontos időt.