AlmaLinux 9'da Zaman/Saat Senkronizasyonu: Chrony (NTP) Rehberi
Doğru zaman senkronizasyonu; log tutarlılığı, sertifika/geçerlilik kontrolleri, Kerberos/SSO ve dağıtık sistemlerde kritik öneme sahiptir. AlmaLinux 9, varsayılan olarak NTP istemcisi/sunucusu için Chrony kullanır.
Bu rehberde Chrony kurulumu, temel/ileri ayarlar, iç ağda NTP sunucusu olarak çalışma ve sorun giderme adımlarını bulacaksınız.
1) Ön kontrol: tarih, saat ve NTP durumu
# Sistem tarih/saat ve NTP durumu
timedatectl
# Chrony servis durumu
systemctl status chronyd --no-pager
# Etkin NTP eşleşmeleri (kaynaklar ve ofsetler)
chronyc sources -v
chronyc tracking
Beklenen: NTP yes/active ve en az bir kaynakta ^* veya ^+ gibi bir işaret görmeniz.
2) Zaman dilimi ayarlama
# Mevcut saat dilimini listele
timedatectl list-timezones | grep Europe/Istanbul
# Saat dilimini ayarla
sudo timedatectl set-timezone Europe/Istanbul
# Doğrula
timedatectl
3) Chrony kurulumu ve servis yönetimi
sudo dnf install -y chrony
sudo systemctl enable --now chronyd
sudo systemctl status chronyd --no-pager
4) NTP sunucularını yapılandırma
Ana yapılandırma dosyası /etc/chrony.conf konumundadır. Varsayılan olarak rhel.pool.ntp.org havuzları gelir. Kurum içi NTP kullanacaksanız bunları özelleştirin.
sudo cp /etc/chrony.conf /etc/chrony.conf.bak.$(date +%F)
sudo nano /etc/chrony.conf
Örnek minimal içerik:
# /etc/chrony.conf
# Kurum içi NTP sunucuları (örnek)
server ntp1.example.local iburst
server ntp2.example.local iburst
# DNS çözümlenemeyecekse IP yazın
# server 192.168.10.10 iburst
# Donanım saati ile uyum
rtcsync
# Boot sonrası büyük sapmayı hızlı düzelt
makestep 1.0 3
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
Değişiklik sonrası yeniden başlatın ve doğrulayın:
sudo systemctl restart chronyd
sleep 3
chronyc sources -v
chronyc tracking
5) Sistem saati ve donanım saati (RTC)
# Donanım saatini sistem saatine yaz
sudo hwclock --systohc
# RTC'nin UTC tutulması önerilir
sudo timedatectl set-local-rtc 0
timedatectl
6) Firewall ayarları (NTP sunucusu olarak hizmet verecekseniz)
Yalnızca bu sunucu diğer cihazlara NTP dağıtacaksa UDP/123 açın.
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services | grep ntp || echo "ntp service not listed"
7) İç ağda NTP sunucusu olarak çalıştırma (opsiyonel)
/etc/chrony.conf dosyanıza aşağıdaki satırları ekleyin:
# Yerel ağ istemcilerine izin verin (CIDR bloğunu kendi ağınıza göre değiştirin)
allow 192.168.0.0/16
# Kaynaklar geçici olarak yoksa yerel referans kullan (stratum 10)
local stratum 10
Ardından servisi yeniden başlatın ve dinleme portunu doğrulayın:
sudo systemctl restart chronyd
sudo ss -ulpn | grep ":123"
İstemci tarafta test:
chronyc sources -n
chronyc tracking
8) Sanal makineler, konteynerlar ve bulut notları
- Hypervisor (VMware/Proxmox/KVM) düzeyinde zaman senkronu açıksa ikili senkronizasyon çakışmaları olabilir. Ya hypervisor senkronunu ya da guest NTP'yi tercih edin.
- Kubernetes node'larında host saat doğruluğu pod'lar için kritiktir; node düzeyinde Chrony çalışmalıdır.
- Bulut sağlayıcılarında (AWS/Azure/GCP) sağlayıcının önerdiği NTP uç noktalarını kullanın.
9) Sorun giderme
# Kaynak listesi ve ofsetler
chronyc sources -v
# Senkron durumu ve ofset tahmini
chronyc tracking
# Son 10 ölçüm
chronyc sourcestats -v
# Hata ayıklama logları
sudo grep -iE "chrony|ntp|step" /var/log/messages /var/log/chrony/* 2>/dev/null | tail -n 100
# NTP trafiği (UDP/123)
sudo tcpdump -ni any udp port 123 -c 20
Yaygın problemler ve çözümler:
- "Not synchronized" veya kaynak yok: Ağ/Firewall kontrol edin, DNS çözümünü test edin (
dig ntp.org). - Büyük saat farkı nedeniyle eşitleme yavaş:
makestepsatırının etkin olduğundan emin olun ve servisi yeniden başlatın. - Proxy arkasında NTP: NTP UDP/123'tür; HTTP proxy üzerinden çalışmaz. Ağ kuralı gereklidir.
10) İyi uygulamalar (Best Practices)
- En az 2-3 upstream NTP sunucu tanımlayın; mümkünse coğrafi olarak yakın.
- İç ağ için tek bir authoritative NTP sunucusu konumlandırıp istemcileri ona yönlendirin.
- Log/metric takibi için
chronyc trackingçıktısını izleyin; ofset sapmaları için uyarı eşikleri belirleyin. - Saat dilimi ve RTC ayarlarını standardize edin (UTC önerilir, uygulama ihtiyaçlarına göre görüntüleme katmanında dönüştürün).
Her ortam farklıdır. Değişiklikleri production'a almadan önce test ortamında doğrulamanız önerilir.