NTP server va chronyd sozlamalari
Vaqt zonasi va locale sozlamalari maqolasida vaqt zonasini timedatectl bilan o'zgartirish va uning System clock synchronized/NTP service maydonlarini o'qish ko'rib chiqildi — lekin u maqola soatni aslida qaysi xizmat sinxronlayotgani yoki uni qanday sozlash haqida batafsil to'xtalmadi. Zamonaviy Ubuntu/Debian va RHEL serverlarida bu vazifani odatda chrony (chronyd xizmati) bajaradi. Bu maqola chronyd ichkarida qanday ishlashini, chrony.conf ni qanday sozlashni va serverni boshqa hostlar uchun NTP manbasiga qanday aylantirishni ko'rib chiqadi.
Nega tarmoq orqali vaqtni sinxronlash muhim
Har bir kompyuterning o'z uskuna soati (RTC, real-time clock) bor, lekin u asta-sekin haqiqiy vaqtdan uzoqlashib boradi (clock drift). Bir nechta server bo'ylab bu siljish real muammolarga sabab bo'ladi:
- TLS sertifikatlari — sertifikatning amal qilish oralig'i serverning o'z soatiga nisbatan tekshiriladi; noto'g'ri soat hali amal qilayotgan sertifikatni "muddati o'tgan" yoki "hali kuchga kirmagan" deb rad etishiga sabab bo'lishi mumkin;
- Kerberos autentifikatsiyasi — protokolning o'zi vaqt belgilariga tayanadi; farq ruxsat etilgan chegaradan (odatda bir necha daqiqa) oshsa, autentifikatsiya rad etiladi;
- Taqsimlangan log'larni bog'lash — bir nechta serverdan yig'ilgan log'larda hodisalar tartibini solishtirish, agar ularning soatlari sinxron bo'lmasa, amalda imkonsiz bo'lib qoladi.
Aynan shu sababli deyarli har bir production Linux serveri o'z soatini tashqi tarmoq manbasiga nisbatan uzluksiz sinxronlab turadi.
chronyd va eskiroq ntpd
RHEL 8+ oilasida chrony sukut bo'yicha vaqt xizmati sifatida o'rnatilgan bo'ladi. Ubuntu/Debian’da esa sukut bo'yicha aslida systemd-timesyncd ishlaydi — u soatni sinxron ushlab turadigan, lekin boshqa hostlarga vaqt bera olmaydigan yengil SNTP klienti. To'liq NTP implementatsiyasi kerak bo'lganda — yuqoriroq aniqlik, boyroq diagnostika (chronyc) yoki boshqa mashinalar uchun NTP server vazifasini bajarish imkoniyati (quyidagi ichki NTP server roli) — chrony o'rnatiladi. Eskiroq ntpd (klassik NTP loyihasi) ayrim tizimlarda hali ham uchraydi, lekin yangi o'rnatmalar uchun tavsiya etilmaydi. chrony imkoniyatlari timesyncd dan qayerda oshib ketadi:
chronyduzilgan yoki sekin tarmoq ulanishidan keyin tezroq va ishonchliroq barqarorlashadi — masalan, noutbukda yoki pause/resume’dan qaytgan virtual mashinada;chronydhech qachon doimiy internet ulanishiga ega bo'lmagan serverda — masalan, faqat vaqti-vaqti bilan ulanadigan izolyatsiyalangan ichki tarmoqda — vaqtni yaxshiroq boshqaradi;- ikkalasi ham bir xil asosiy NTP protokolidan foydalanadi, shuning uchun ular o'zaro ishlay oladi —
chronydvaqtni boshqa serverda ishlayotganntpddan olishi mumkin va aksincha.
Qaysi xizmat ishlayotganini tekshirish:
Xizmat nomi Ubuntu’da ba’zan chrony, RHEL oilasida esa chronyd bo'ladi — aniq nomni systemctl list-units '*chron*' bilan tekshiring.
Note
Hech kim o'zgartirmagan standart Ubuntu Server’da ishlayotgan vaqt xizmati odatda chrony emas, systemd-timesyncd bo'ladi — shuning uchun chrony sudo apt install chrony bilan o'rnatilmaguncha systemctl status chronyd "Unit chronyd.service could not be found" qaytaradi. chrony o'rnatilganda systemd-timesyncd avtomatik o'chiriladi; ikkalasi bir-birini istisno qiladi va ikkalasini birdaniga ishlatish ularni bitta soat ustida "kurashtirib" qo'yardi.
chronyc: joriy sinxronlash holatini tekshirish
chronyc — chronyd xizmati bilan muloqot qilish uchun buyruq qatori vositasi.
chronyc tracking
Reference ID : C0248F62 (ntp1.example.com)
Stratum : 3
Ref time (UTC) : Fri Jul 25 09:58:10 2026
System time : 0.000012340 seconds fast of NTP time
Last offset : +0.000015600 seconds
RMS offset : 0.000045000 seconds
Frequency : 3.256 ppm fast
Residual freq : +0.002 ppm
Skew : 0.045 ppm
Root delay : 0.023456789 seconds
Root dispersion : 0.001234567 seconds
Update interval : 64.2 seconds
Leap status : Normal
Muhim maydonlar:
Stratum— bu server etalon manbadan necha "hop" uzoqlikda ekani: stratum 1 — uskunaviy vaqt manbasiga (atom soati yoki GPS) to'g'ridan-to'g'ri ulangan server, stratum 2 — vaqtni stratum 1 manbadan oladigan server va hokazo; katta son uzoqroq va ehtimol kamroq aniq manbani bildiradi;System time— joriy tizim soati NTP orqali hisoblangan "haqiqiy" vaqtdan qanchalik farq qilishi;Leap status: Normal— kabisa soniyasi yoki boshqa maxsus holat yo'q; sinxronlash barqaror.Not synchronisedtizim hali hech qanday manbaga bog'lanmaganini bildiradi.
chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.example.com 2 6 377 23 +120us[ +135us] +/- 15ms
^+ ntp2.example.com 2 6 377 25 +310us[ +298us] +/- 18ms
^- 192.168.1.1 3 6 177 41 -2.1ms[ -2.3ms] +/- 120ms
Ustunlar nimani anglatadi:
^*— hozir asosiy manba sifatida tanlangan server (u har doim faqat bitta bo'ladi);^+— umumiy hisobga qo'shiladigan ishonchli ikkilamchi manba;^-— hozir hisobga qo'shilmayotgan manba, odatda uning ko'rsatgan vaqti boshqalardan sezilarli farq qilgani uchun;Reach— oxirgi so'rovlarga javoblar tarixi, sakkizlik bitmask sifatida ko'rsatiladi;377oxirgi sakkizta so'rovning hammasiga javob kelganini bildiradi;Last sample— o'sha manbadan olingan eng so'nggi o'lchov va uning taxminiy xato chegarasi.
chronyc sourcestats har bir manbaning vaqt davomida barqarorlik statistikasini — masalan, chastota siljishini — ko'rsatadi; uzoq muddatli sifatni baholash uchun foydali.
chrony.conf: klient konfiguratsiyasi
Asosiy konfiguratsiya fayli Ubuntu/Debian’da /etc/chrony/chrony.conf da, RHEL oilasida esa odatda /etc/chrony.conf da turadi.
pool ntp.ubuntu.com iburst maxsources 4
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync
Asosiy direktivalar:
pool/server— vaqt manbasi;poolbir nechta serverdan iborat DNS pool’ga (masalan,pool.ntp.org),serveresa aynan bitta muayyan serverga ishora qiladi;iburst— dastlabki sinxronlashni tezlashtirish uchun ketma-ket bir nechta so'rov yuboradi;driftfile— uskuna soatining taxminiy siljish tezligi saqlanadigan fayl; qayta ishga tushgandachronydnoldan emas, shu qiymatdan boshlaydi;makestep 1.0 3— agar vaqt farqi 1.0 soniyadan oshsa, dastlabki uchta o'lchovga soatni sekin moslashtirish o'rniga darhol "sakratib" tuzatishga ruxsat beradi; bu odatda faqat ishga tushishda kerak bo'ladi, chunki katta farqni sekin tuzatish uzoq vaqt oladi;rtcsync— tizim soatini vaqti-vaqti bilan uskuna soatiga (RTC) qayta yozishni yoqadi.
Konfiguratsiya o'zgarishidan keyin xizmatni qayta yuklash:
Serverni ichki NTP manbasi sifatida sozlash
Ko'p serverli tarmoqda keng tarqalgan amaliyot — har bir hostni to'g'ridan-to'g'ri internetga ochish o'rniga bitta server vaqtni internetdan olib, uni ichki NTP server sifatida boshqa ichki hostlarga tarqatadi. Bu tashqi trafikni kamaytiradi va barcha ichki hostlar bitta manbaga tayanishini ta’minlaydi.
chrony.conf ga allow direktivasi qo'shiladi:
allow qaysi tarmoqning NTP so'rovlariga xizmat ko'rsatilishini belgilaydi. Sukut bo'yicha chronyd faqat klient sifatida ishlaydi va boshqa hostlarga xizmat ko'rsatmaydi; allow bo'lmasa, tashqi so'rovlar rad etiladi.
Warning
Haddan tashqari keng allow direktivasini — masalan, allow 0.0.0.0/0 ni — yozish serverni istalgan tashqi hostga vaqt beradigan ochiq NTP serverga aylantiradi. Bu resurslarni behuda sarflaydi va ayrim hollarda NTP asosidagi tarmoq hujumlarida kuchaytirish (amplification) vositasi sifatida suiiste’mol qilinishi mumkin. allow ni har doim aynan unga muhtoj bo'lgan ichki tarmoq bilan cheklang.
Xizmatni qayta yuklash va natijani tekshirish:
chronyc clients hozir shu serverdan vaqt so'rayotgan klientlar ro'yxatini ko'rsatadi — ichki NTP server haqiqatan ishlayotganini tasdiqlashning eng to'g'ridan-to'g'ri usuli.
Firewall
NTP sukut bo'yicha UDP 123 portida ishlaydi. Serverni ichki NTP manbasi sifatida ochishdan oldin bu port faqat mo'ljallangan ichki tarmoq uchun ochiq ekanini tasdiqlang — bu Firewall va UFW maqolasida chuqurroq ko'rib chiqiladi.
Danger
Firewall qoidasini o'zgartirish tarmoq xizmatlari boshqa hostlarga qanday ko'rinishini o'zgartiradi. Qoida qo'shishdan oldin joriy ufw status numbered chiqishini saqlang va aynan kerakli manzil hamda port bilan cheklangan qoida yozing — keng allow qoidalaridan qoching.
Amaliy vaziyat: "System clock synchronized: no" ni tuzatish
Muammo: timedatectl System clock synchronized: no deb ko'rsatyapti va TLS ulanishlari sertifikat xatolari bilan muvaffaqiyatsiz bo'la boshlagan.
1-qadam — tekshirish:
2-qadam — gipoteza tuzish: agar chronyd inactive/failed bo'lsa, xizmat umuman ishlamayapti; agar xizmat active bo'lsa-yu, chronyc sources da ^* yozuvi bo'lmasa, u hech qanday manbaga yeta olmayapti — masalan, tarmoq yoki firewall muammosi.
3-qadam — xizmatni tekshirish (agar u ishlamayotgan bo'lsa):
4-qadam — manbalar bor-u, lekin javob bermasa, ulanishni tekshirish:
ss -unlp chronyd haqiqatan UDP 123 portini tinglayotganini tasdiqlaydi — bu Tarmoq diagnostikasi maqolasida chuqurroq ko'riladigan ss vositasining amaliy qo'llanishi.
5-qadam — natija: chronyc tracking Leap status: Normal ni, chronyc sources esa kamida bitta ^* yozuvini ko'rsatsa, sinxronlash tiklangan. timedatectl ni qayta tekshiring:
6-qadam — hujjatlashtirish: xizmat nega to'xtaganini (masalan, oldingi qayta yuklashdan keyin avtomatik ishga tushmagan bo'lishi mumkin) va uni doimiy tuzatish uchun nima qilinganini — masalan, systemctl enable chronyd bilan yoqilganini — qayd qiling.
Keng tarqalgan xatolar
chronyc sources da faqat ^- yozuvlari chiqayotganini sezmaslik
Agar hech qaysi manba ^* ni ko'rsatmasa, tizim hali hech qaysi serverga to'liq ishonch bildirmagan — bu ko'pincha tarmoq yoki firewall to'sig'i, ishlamayotgan manba server yoki juda katta vaqt farqining belgisi.
allow ni tekshirmasdan serverni "ichki NTP server" deb hisoblash
chrony.conf da allow yozilmagan bo'lsa, xizmat faqat klient bo'lib qoladi va boshqa hostlarga xizmat ko'rsatmaydi. So'rovlar haqiqatan kelayotganini chronyc clients bilan tasdiqlang.
makestep siz katta vaqt farqi sekin tuzaladi deb kutish
Agar makestep bo'lmasa yoki u juda tor bo'lsa, katta dastlabki farq sekin, bosqichma-bosqich tuzatiladi — bu ayrim ilovalar uchun vaqt noto'g'ri harakatlanayotgandek ko'rinishiga sabab bo'lishi mumkin. Oddiy foydalanishda cheklangan sonli makestep faqat ishga tushishdagi bir martalik tuzatish uchun mo'ljallangan.
Vaqt zonasi sozlamasini NTP sinxronlash bilan adashtirish
Noto'g'ri vaqt zonasi soat sinxronlanmaganini anglatmaydi — bular ikki mustaqil sozlama. Avval chronyc tracking dagi Leap status va System time ni tekshiring, so'ng vaqt zonasi konfiguratsiyasini alohida tekshiring.
Intervyuda
Tayyor turishga arziydigan savol: "serverning Stratum qiymati 2 dan 10 ga sakrab ketdi — bu nimani anglatadi va bu muammomi?" Yuqori bir xonali yoki undan katta stratum odatda chronyd odatiy yuqori manbalari bilan aloqani yo'qotib, ancha past sifatli etalonga o'tganini yoki tashqi tuzatishsiz o'zining lokal soatida ishlayotganini bildiradi — bunga ko'pincha Leap status: Not synchronised hamroh bo'ladi. Bu quyi oqimdagi biror narsa (TLS, Kerberos, log tartibi) ishdan chiqishidan oldin sozlangan pool/server yozuvlariga ulanishni tekshirish kerakligining kuchli belgisi.
Mashqlar
chronyc trackingvachronyc sources -vchiqishlarini solishtiring vaStratum,Leap statushamda^*belgisi nimani anglatishini o'z so'zlaringiz bilan yozing.chrony.confdagipool,iburst,makestepvadriftfiledirektivalarining har biri nega kerakligini tushuntiring.- Izolyatsiyalangan laboratoriya tarmog'ida bitta VM’ni ichki NTP server sifatida sozlang (
allowbilan cheklangan), unga ikkinchi VM’dan ulaning va ulanishnichronyc sourcesbilan tasdiqlang. - Yuqoridagi amaliy vaziyatni takrorlang:
chronydxizmatini ataylab to'xtating,timedatectldagi o'zgarishni kuzating, so'ng xizmatni tiklang va sinxronlash yana tasdiqlanguncha kuting.
Mashqni bajardim deyish uchun: 4-mashqdagi yakuniy tekshiruvingiz chronyc tracking da Leap status: Normal ni va chronyc sources da kamida bitta ^* yozuvini ko'rsatishi kerak — xizmatning systemctl status da shunchaki active bo'lishi sinxronlash haqiqatan tiklanganining yetarli isboti emas.
Manbalar
- Chrony — rasmiy hujjatlar: https://chrony-project.org/documentation.html
- man7.org:
chronyd(8): https://man7.org/linux/man-pages/man8/chronyd.8.html - man7.org:
chronyc(1): https://man7.org/linux/man-pages/man1/chronyc.1.html - man7.org:
chrony.conf(5): https://man7.org/linux/man-pages/man5/chrony.conf.5.html - freedesktop.org:
timedatectl(1): https://man7.org/linux/man-pages/man1/timedatectl.1.html - Ubuntu Server — vaqtni sinxronlash: https://ubuntu.com/server/docs/network-ntp
- Red Hat Enterprise Linux 9 — NTP’ni chrony bilan sozlash: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_basic_system_settings/using-chrony-to-configure-ntp_configuring-basic-system-settings