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.