Linux Chrony NTP Kurulumu ve Ayarlanması

Chrony, Network Time Protocol (NTP) protokolünün esnek, başarılı bir uygulamasıdır ve zaman senkronizasyonunu sağlayarak cihazlarınızdaki saat ayarının doğru yapılandırılmasını sağlar. Sistem saatini NTP sunucuları, referans saatler (ör.GPS alıcısı) veya manuel giriş yaparak ayarlamanıza ve senkronize etmenize imkan verir.

Chrony, NTP istemicisi olarak kullandıldığı gibi, aynı ağdaki diğer sunuculara zaman hizmeti sağlamak için NTPv4 sunucusu olarakta kullanılabilir. Aralıklı ağ bağlantısı, ağır yüklü ağlar, sıradan bilgisayarların saatini etkileyebilecek değişen sıcaklıklar gibi farklı koşullar altında kusursuz bir şekilde çalışması amaçlanmıştır.

Ayrıca yine İnternet bağlantısı olmayan makinalar için chrony oldukça uygundur. Yani kesin zaman kaynağı, zamanı aldığımız ve programa girdi olarak verdiğimiz herhangi bir kesin saat olabilir. Ek olarak donanım saati tutarsızlığını hesaplama yeteneği vardır ve buna dayanarak donanım saatini açılışta ayarlar.

Chrony iki programla birlikte gelir:

  • chronyc – chrony için komut satırı arayüzü
  • chronyd – önyükleme sırasında başlatılabilen arka plan programı

Bu yazımızda size Chrony’yi Linux sisteminize nasıl kuracağınızı ve kullanacağınızı göstereceğiz.

1. Chrony Kurulumu

Bazı sistemlerde, chrony varsayılan olarak kurulabilir. Yine de paket eksikse, kolayca kurabilirsiniz. Aşağıdaki komutu kullanarak ilgili Linux dağıtımınızda varsayılan paket yöneticisi aracılığıyla Chrony’i kurabilirsiniz.

# yum -y install chrony    [On CentOS/RHEL]
# apt install chrony       [On Debian/Ubuntu]
# dnf -y install chrony    [On CentOS/RHEL/Fedora 22+]

Chronyd’nin durumunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

systemctl status chronyd

Önyükleme (boot) sırasında chrony daemonu etkinleştirmek istiyorsanız, aşağıdaki komutu kullanabilirsiniz.

systemctl enable chronyd

Son olarak güvenlik duvarınıza NTP protokolünü eklemeyi unutmayınız.

firewall-cmd --add-port=123/udp --permanent
firewall-cmd --reload

2. Chrony Yapılandırması

Chrony’nin yapılandırma dosyası /etc/chrony.conf veya /etc/chrony/chrony.conf adresinde bulunur ve örnek yapılandırma dosyası aşağıdaki gibi görünebilir:

pool 2.centos.pool.ntp.org iburst
server X.X.X.X iburst
server Y.Y.Y.Y offline
driftfile /var/lib/chrony/drift
makestep 1.0 3

#hwtimestamp *
#minsources 2
#allow 192.168.0.0/16
#local stratum 10

keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony

Yukarıdaki yapılandırma aşağıdaki bilgileri sağlar:

  • pool: Senkronizasyon yapılacak sunucu havuzu adresi. Bu havuz adresi içinden rastgele sunucularak seçilerek senkronizasyon ayarlanır.
  • server: Senkronizasyon yapılacak bir NTP sunucu adresinden (X.X.X.X) veya alan adından (0.tr.pool.ntp.org) tanımlamak için kullanılır.
  • iburst: Server yeni başladığında veya servis restart edildiğinde default yenileme zamanını beklemeden hızlı bir zaman senkronizasyonu gerçekleştirmek için iburst (initial burst) kullanılabilir.
  • offline: offline anahtar sözcük, chronyd İnternet bağlantısının mevcut olduğuna dair bildirim alana kadar sunucularla iletişim kurulmadığını gösterir.
  • stratumweight: eşitleme kaynağına katman başına ne kadar mesafe eklenmelidir. Varsayılan değer 0.0001’dir.
  • driftfile: Sapma dosyası, nominal frekansında çalışan sistem saati ile senkronizasyonda kalması gereken frekans arasındaki frekans kaymasını saklamak için kullanılır. Varsa, drift dosyasında bulunan değer sistem başlangıcında okunur ve saat kaynağını düzeltmek için kullanılır.
  • makestep: Normalde chrony, saat frekansını artırarak veya azaltarak zamanı hızlandırma ve yavaşlatma yöntemiyle senkronizasyon sağlar. Fakat zaman farkı çoksa bu senkronize işlemi çok uzun sürebilir. Bu nedenle ilk X (örnekte 3) güncellemede zaman farkı Y (örnekte 1) sn den büyükse zamanın atlamasını sağlayarak hızlı senkronize sağlar.
  • hwtimestamp: Gerçek zamanlı saatin (RTC) çekirdek senkronizasyonunu etkinleştirir. Destekleyen tüm arabirimlerde donanım zaman damgasını etkinleştirir.
  • minsources: Sistem saatini ayarlamak için gereken minimum seçilebilir kaynak sayısı.
  • allow: Yerel ağdan NTP sunucunuza erişebilmesine izin vereceğiniz istemcilerin ip adres blokları.
  • local stratum 10: Zaman kaynaklarına (server) erişiminiz kesildiğinde NTP server olarak hizmet etmenizi sağlar.
  • keyfile: NTP kimlik doğrulaması için anahtarları içeren dosya lokasyonu.
  • logdir: chrony’nin günlük dosyasının yolu.

Eğer kaynak olarak pool kullanmak isterseniz, chronyc sources çıktısında sürekli farklı kaynak adresleri görürsünüz. Çünkü NTP source isteğinizde size en yakın kaynak sunulur. Farklı pool kaynaklarını görmek için Tıklayınız. Bunun yerine server kullanırsanız NTP kaynağınız sabit olur. Türkiye lokasyonlu kullanabileceğiniz NTP server adresleri (pool halinde) için Tıklayınız.

2.1 Optimal Chrony Config Dosyası

Bir üst başlıkta chrony.conf dosyasının içeriğini inceledik. Basit bir config dosyası ile zaman senkronizasyonu için aşağıdaki satırları chrony.conf dosyanızda kullanabilirsiniz.

server 0.tr.pool.ntp.org iburst
server 1.tr.pool.ntp.org iburst
server 2.tr.pool.ntp.org iburst
server 3.tr.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3

keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony

2.2 Config Düzenlemesi Sonrası Chrony Aktif Etme

Dilediğiniz zaman chrony.conf dosyasında düzenleme yapabilirsiniz. Tabi bu düzenlemelerin aktif olması için chronyd daemonunu restart etmemiz gerekmektedir.

systemctl restart chronyd

3. Chrony Senkronizasyonunu Kontrol Etme

Chrony’nin gerçekten senkronize olup olmadığını kontrol etmek için, ilgili bilgileri sağlayacak izleme seçeneğine sahip olan chronyc komutunu kullanacağız.

chronyc tracking

Listelenen parametreler aşağıdaki bilgileri sağlar:

  • Reference ID: Bilgisayarın o anda senkronize edildiği referans kimliği ve adı.
  • Stratum: Referans saati eklenmiş bir bilgisayara olan atlama sayısı.
  • Ref time: Referans kaynaktan son ölçümün yapıldığı UTC zamanıdır.
  • System time: Senkronize edilmiş sunucudan sistem saatinin gecikmesi.
  • Last offset: Son saat güncellemesinin tahmini ofseti.
  • RMS offset: Ofset değerinin uzun vadeli ortalaması.
  • Frequency: Bu, chronyd düzeltmiyorsa sistemin saatinin yanlış olacağı orandır. Ppm (milyonda parça) olarak sağlanır.
  • Residual freq: Artık frekans, referans kaynaktan gelen ölçümler ile şu anda kullanılmakta olan frekans arasındaki farkı gösterir.
  • Skew: Frekansın tahmini hata sınırı.
  • Root delay: Bilgisayarın senkronize edildiği katman bilgisayarla olan ağ yolu gecikmelerinin toplamı.
  • Leap status: Bu, yandaki değerlerden birine sahip olabilen anlık durumdur; normal, ikinci ekle, ikinciyi sil veya senkronize edilmemiş.

Chrony’nin zaman kaynakları hakkındaki bilgileri kontrol etmek için aşağıdaki komutu verebilirsiniz.

chronyc sources

M sütunu, kaynağın modunu gösterir;

  • ^ server anlamına gelir
  • = peer anlamına gelir
  • # yerel olarak bağlı bir referans saati belirtir

S sütunu kaynakların durumunu gösterir;

  • * Chronyd’un o anda senkronize edildiği kaynağı gösterir.
  • + Seçilen kaynakla birleştirilen kabul edilebilir kaynakları gösterir.
  • - Birleştirme algoritması tarafından hariç tutulan kabul edilebilir kaynakları belirtir.
  • ? bağlantının kesildiği veya paketleri tüm testleri geçmeyen kaynakları gösterir. Bu durum, en az 3 numune alınana kadar başlangıçta da gösterilir.
  • x chronyd’un yanlışlık yaptığını düşündüğü bir saati belirtir (zamanı diğer kaynakların çoğuyla tutarsızdır).
  • ~ Zamanı çok fazla değişkenlik gösteren bir kaynağı belirtir

Ayrıca kaynaklarda gösterilen sütunların açıklamalarını chronyc sourcestats -v komutuyla görebilirsiniz.

chronyc sourcestats -v
210 Number of sources = 4
                              .- Number of sample points in measurement set.
                             /    .- Number of residual runs with same sign.
                            |    /    .- Length of measurement set (time).
                            |   |    /      .- Est. clock freq error (ppm).
                            |   |   |      /           .- Est. error in freq.
                            |   |   |     |           /         .- Est. offset.
                            |   |   |     |          |          |   On the -.
                            |   |   |     |          |          |   samples. \
                            |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================

4. Chrony ve NTP Kıyaslaması

Linux sunucularda kullanılan ntp ve chrony zaman senkronizasyon araçları arasında kıyaslama yaparak hangisini kullanacağınızı seçebilirsiniz. Genel olarak;

  • RHEL 7 ve üstünde varsayılan NTP protokol programı olarak chronyd artık ntpd nin yerini almış durumda.
  • Saat ve tarih senkronizasyonu için temel yapılandırma /etc/chrony.conf dosyasında saklanır.
  • ntpd, bir NTP hizmetini çalıştırması gereken müşteriler için yum havuzunda indirilebilir olarak bulunur.
  • Chrony, sistem saatini ntpd’den daha hızlı ve daha doğru bir şekilde senkronize edebilen bir ağ zaman protokolüdür.

4.1 Chrony’nin avantajları şunlardır:

  1. Masaüstü bilgisayarlarda veya günün 24 saati çalışmayan sistemlerde yararlı olan, zaman ve frekans hatasını en aza indirmek için saatler yerine yalnızca dakikalar gerektiren daha hızlı senkronizasyon.
  2. Kararsız saatleri olan sanal makineler veya saat frekansını sabit tutmayan güç tasarrufu teknolojileri için yararlı olan, saat frekansındaki hızlı değişikliklere daha iyi yanıt verebilme yeteneği.
  3. İlk senkronizasyondan sonra, sistem zamanının monoton olması gereken uygulamaları etkilememek için saati asla adım atlamaz (makestep).
  4. Geçici asimetrik gecikmelerle uğraşırken daha iyi kararlılık. Örneğin bağlantı büyük bir indirme ile satüre hale geldiğinde.
  5. Periyodik sunucu yoklaması gerekli değildir, bu nedenle kesintili ağ bağlantıları olan sistemler saatleri hızla senkronize edebilir.

4.2 Chrony ne zaman kullanılır?

Chrony, sık sık askıya alınan veya bir ağdan kesintili olarak bağlantısı kesilen sistemler için en iyi eşleşme olarak kabul edilir (mobil ve sanal sunucular vb.).

4.3 NTP ne zaman kullanılır?

NTP arka plan programı (ntpd) normalde kalıcı olarak tutulan sistemler için düşünülmelidir. Broadcast veya multicast IP kullanması veya Autokey protokolü ile paketlerin kimlik doğrulamasını yapması gereken sistemler ntpd kullanmayı düşünmelidir.

Daha detaylı bir Chrony ve NTP kıyaslaması için Tıklayınız.