Laiko juosta ir NTP Linux sistemoje: timedatectl ir chrony

Laiko juosta Linux serveryje nustatoma komanda timedatectl set-timezone, o laiko tikslumą užtikrina sinchronizavimas per NTP — su systemd-timesyncd arba chrony. Teisingas laikas kritiškai svarbus žurnalams, TLS sertifikatams, cron užduotims ir duomenų bazėms. Žemiau — visas konfigūravimas.

Kodėl laikas svarbus

Laikrodžių nesutapimas sugadina TLS sertifikatų tikrinimą, sumaišo įrašų tvarką žurnaluose, sutrikdo cron ir duomenų bazių replikaciją. VPS serveryje laikas gali „nuplaukti“, todėl sinchronizavimas per NTP yra privalomas.

1 žingsnis. Esama būsena

timedatectl

Išvestyje matysite vietinį laiką, UTC, laiko juostą ir NTP sinchronizavimo būseną (System clock synchronized: yes/no).

2 žingsnis. Laiko juostos nustatymas

Peržiūrėti juostų sąrašą:

timedatectl list-timezones | grep -i vilnius

Nustatyti reikiamą:

timedatectl set-timezone Europe/Vilnius

Kiti pavyzdžiai: Europe/Riga, Europe/Tallinn, UTC. Patikrinkite:

date

Serveriuose dažnai paliekamas UTC — taip paprasčiau dirbti su paskirstytomis sistemomis ir žurnalais.

3 žingsnis. NTP sinchronizavimo įjungimas

Daugumoje šiuolaikinių distributyvų veikia integruotas systemd-timesyncd:

timedatectl set-ntp true

Patikrinkite būseną:

timedatectl show-timesync --all
systemctl status systemd-timesyncd

Eilutė System clock synchronized: yes reiškia, kad laikas tikslinamas automatiškai.

NTP serverių keitimas timesyncd konfigūracijoje

Redaguokite /etc/systemd/timesyncd.conf:

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

Paleiskite iš naujo:

systemctl restart systemd-timesyncd

Alternatyva: chrony (tikslesnis)

chrony geriau išlaiko tikslumą, kai tinklas nestabilus, ir VPS aplinkoje. Diegimas:

apt install -y chrony
systemctl enable --now chrony

Ubuntu sistemoje tarnyba vadinasi chrony, kai kuriose kitose — chronyd. Laiko šaltinių patikra:

chronyc sources -v
chronyc tracking

chronyc tracking parodys poslinkį (offset) ir sinchronizavimo tikslumą. Serveriai nurodomi faile /etc/chrony/chrony.conf:

pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst

iburst pagreitina pirmąjį sinchronizavimą.

Priversti nedelsiant sinchronizuoti:

chronyc makestep

Aparatinis laikrodis (RTC)

Įrašyti sisteminį laiką į aparatinį laikrodį:

hwclock --systohc

VPS serveryje laikrodis paprastai virtualus ir sinchronizuojamas hipervizoriaus, bet komanda naudinga kontrolei.

systemd-timesyncd ar chrony

Parametras timesyncd chrony
Diegimas Integruotas Atskiras paketas
Tikslumas Geras Didesnis
NTP serverio vaidmuo Ne Taip
Tinka Klientams Klientams ir serveriams

Vienam VPS pakanka timesyncd. Jei serveris pats dalija laiką tinkle arba reikia maksimalaus tikslumo — rinkitės chrony.

Sinchronizavimo problemų diagnostika

Jei timedatectl rodo System clock synchronized: no, eikite žingsnis po žingsnio.

Patikrinkite, ar NTP serveriai pasiekiami (naudojamas UDP prievadas 123):

timedatectl timesync-status

Įsitikinkite, kad ugniasienė neblokuoja išeinančio UDP 123:

ufw status | grep 123

Išeinantiems ryšiams paprastai nieko atverti nereikia, bet jei politika yra deny outgoing — pridėkite:

ufw allow out 123/udp

Peržiūrėkite laiko tarnybos žurnalą:

journalctl -u systemd-timesyncd -n 30

Rankinė nuokrypio patikra

Palyginkite serverio laiką su viešu šaltiniu. Vienkartinei patikrai įdiekite ntpdate:

apt install -y ntpdate
ntpdate -q pool.ntp.org

Vėliava -q tik užklausia ir parodo poslinkį, laikrodžio nekeičia. Reikšmė offset, artima nuliui, reiškia, kad laikas tikslus.

Lokalė ir datos formatas

Laiko juosta ir lokalė — skirtingi dalykai. Patikrinti lokalę:

localectl status

Nustatyti, pavyzdžiui, kad datos formatas būtų teisingas:

localectl set-locale LANG=en_US.UTF-8

Tai veikia date išvestį ir žurnalus, bet ne patį sisteminį laiką.

Automatizavimas keliems serveriams

Jei serverių daug, vieningą NTP telkinį geriau aprašyti konfigūracijoje per valdymo sistemą (Ansible, cloud-init). Taip visi mazgai sinchronizuojasi su tais pačiais šaltiniais, o žurnalai tarp mašinų išlieka palyginami laike — tai kritiškai svarbu nagrinėjant paskirstytus incidentus.

Dažni klausimai

Ar timesyncd ir chrony veikia kartu? Ne, jie konfliktuoja. Diegdami chrony išjunkite timesyncd: systemctl disable --now systemd-timesyncd.

Kodėl laikas nuklysta po perkrovimo? Vadinasi, NTP neįjungtas. Įvykdykite timedatectl set-ntp true arba įdiekite chrony.

Nustatyti vietinę juostą ar UTC? Serveriams patogiau UTC. Vietinė juosta — jei to reikalauja programos arba atskaitomybė.

Kaip patikrinti sinchronizavimo tikslumą? chronyc tracking rodo poslinkį sekundėmis. Milisekundžių eilės reikšmės yra norma.

Ar laikas veikia TLS? Taip. Esant dideliam laikrodžio nuokrypiui sertifikatai laikomi negaliojančiais ir HTTPS nustoja veikti.


Stabilus serveris prasideda nuo bazinio konfigūravimo. Įdiekite projektą VPS nuomoje arba VPS saugumui ir VPN. Visą priežiūrą perims Serverių administravimas.

Inga Vītola