10.07.2023

chrony

Yerel ağda çevrimdışı çalışan linux çalışan bir makinede zaman eşitleme sorunu olduğunu farkettim. Yerel ağımızdaki tüm Windows bilgisayalarlar, zaman eşitlemesi için etki alanı sunucumuzu kullanıyorlar. Ama linux makine için bu yapılandırma atlanmış.

Önce timedatectl ile mevcut zaman eşitlemesi yapılandırmasını kontrol ettim:

# timedatectl

               Local time: Pzt 2023-07-10 08:38:03 +03
           Universal time: Pzt 2023-07-10 05:38:03 UTC
                 RTC time: Pzt 2023-07-10 05:38:03
                Time zone: Europe/Istanbul (+03, +0300)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

Zaman dilimi bilgisi doğru ve NTP eşitlemesi etkin gözüküyor. Zaman eşitleme alt bileşeni olarak ntpd, systemd-timesyncd veya chronyd kullanılıyor olabilir. systemctl status ile var olan hizmetlere baktım, sadece chronyd'nin aktif olduğunu gördüm. chrony'nin yapılandırma dosyası /etc/chronyd.conf'u açtıım

# vim /etc/chronyd.conf

Tek yaptığım ilk satırda pool direktifinin yanında yer alan eski NTP sunucusu 2.fedora.pool.ntp.org'u kaldırıp yerine yerel ağdaki sunucumun IP adresini girdim. Aslında pool kullanıldığı için yanına da ekleyebilirdim ama cihaz çoğunlukla çevrimdışı çalışacağından gerek görmedim. Daha sonra chronyd hizmetini yeniden başlattım:

# systemctl restart chronyd.service

chrony yerine ntp kurulu olsaydı onun yapılandırma dosyası da /etc/ntp.conf olacaktı. systemd-timesyncd için de yapılandırma dosyası /etc/systemd/systemd-timesyncd.conf olurdu.

Hizmetin tekrar başlatılması sonucunda zaman eşitlemesi yapılacak. Ben tcpdump ile durumu takip etmek istedim:

# tcpdump udp port 123 -i eth0

Buna alternatif olarak chronyc komut dosyası ile durumu takip edebilirim:

# chronyc sources

# chronyc tracking

Ek 2024-03-20: Alternatif bir zaman senkronizasyonu bileşeni kullanmak için chronyd hizmetini durdurup diğer hizmeti devreye almak yeterli olurdu. Örneğin systemd ile gelen timesyncd hizmetini kullanmak için aşağıdaki komutları çalıştırıp

# systemctl disable chronyd

# systemctl stop chronyd

# systemctl enable systemd-timesyncd

# systemctl start systemd-timesyncd

Sonrasında timesyncd hizmetinin /etc/systemd/timesyncd.conf konumundaki yapılandırma dosyasına bir göz atmak faydalı olurdu. Örneğin referans zaman sunucusu ile yerel saat arasında farkın çok fazla olması sebebiyle zaman eşitlenemezse journal loglarına 

Server has too large root distance. Disconnecting.

mesajı düşebilir. Bu durumda söz konusu yapılandırma dosyasındaki 

RootDistanceMaxSec

değerini saniye cinsinden aradaki farktan büyük bir değere eşitlemek gerekirdi.

---

[1] https://www.redhat.com/sysadmin/chrony-time-services-linux

[2] https://www.golinuxcloud.com/configure-chrony-ntp-server-client-force-sync/

Hiç yorum yok: