İçeriğe atla

Kapatmak için ESC tuşuna basın

Centos 7 Custom Time Service Oluşturma

Linux dağıtımı üzerine kendi zaman servisimizi oluşturuyoruz

Yazar
Sezer Şanlıkan
Yayın
Güncellendi
Okuma
3 dakika
Görüntülenme
1.189
Centos 7 Custom Time Service Oluşturma
Bu yazıda
  1. CentOS 7 üzerinde NTP sunucusu kurulumu
  2. NTP sunucusunu client’lara açmak
  3. Güncel dağıtımlarda chrony ile NTP sunucusu
  4. Sık karşılaşılan NTP hataları

Kendi time sunucunuzu oluşturduğunuzda ağınızdaki makineler saati tek bir adresten alır. Bu yazıda CentOS 7 üzerinde ntpd kuracak, sunucuya bir alan adı bağlayacak ve ntpdate ile test edeceksiniz. Saatler uyuşmazsa log’ları makineler arasında karşılaştıramaz, sertifika ve Kerberos hatalarıyla uğraşırsınız.

CentOS 7’nin ömrü bitti. Yeni bir kurulum yapıyorsanız yazının sonundaki chrony bölümüne geçin.

CentOS 7 üzerinde NTP sunucusu kurulumu

İşlemler sonudna Centos 7 üzerinde kendi subdomaininiz veya alan adınız ile (xx.sezer.in) ile saatleri güncelleyebileceksiniz.

Öncelikle kullanacağınız alan adı veya subdomain ( hangisini tercih edecekseniz ) A kaydının işlem yapacağımız sunucuyu işaret etmesi gerekiyor.

Örnek: time.sezer.in ( xx.xxx.xx.xx ) A Record

Centos 7 üzerindeki ilk işlem NTP servisinin kurulmasıdır.

yum -y install ntp

Bu yazı CentOS 7 için yazıldı. CentOS Linux 7 30 Haziran 2024’te yaşam sonuna ulaştı, güvenlik güncellemesi gelmiyor. Paketler vault.centos.org adresine taşındı ve mirrorlist.centos.org kapatıldı, bu yüzden yum komutu Could not resolve host hatası verebilir. Red Hat 8 ve sonrasında ntp paketi de yok, yerini chrony aldı.

CentOS 7’de varsayılan zaman daemon’ı chronyd. Red Hat 7 belgesine göre ntpd kullanacaksanız chronyd durdurulmalı ve açılışta başlaması kapatılmalı. Bu adımı atlarsanız ntpd yeniden başlatmadan sonra devreye girmeyebilir.

systemctl stop chronyd
systemctl disable chronyd

Aşağıdaki komut sistem yeniden başladığında otomatik servisin açılması içindir.

systemctl enable ntpd

Aşağıdaki komutla servisi başlatabilirsiniz.

systemctl start ntpd

Aşağıdaki komutla servisi yeniden başlatabilirsiniz.

systemctl restart ntpd

Aşağıdaki komutla servisin durumunu görebilirsiniz.

systemctl status ntpd

systemctl status ntpd çıktısında active (running) görmelisiniz. Bu saatin eşitlendiğini göstermez, eşitlenmeye şu komutlarla bakın.

ntpq -p
ntpstat

ntpq -p çıktısında satır başındaki * işareti eşitlenilen sunucuyu gösterir. reach sütunu 377 olduğunda son sekiz sorgu başarılı demektir, offset farkı milisaniye olarak verir. ntpd yeni açıldıysa birkaç dakika bekleyin, * işareti hemen gelmez.

NTP sunucusunu client’lara açmak

NTP, UDP 123 port’unu kullanır. Client’ların ulaşması için bu port açık olmalı. firewalld kullanıyorsanız şu iki komut yeter. Daha önce --permanent olmadan eklediğiniz kurallar --reload ile silinir, uzak sunucuda SSH kuralınızın kalıcı olduğundan emin olun. Ayrıntı için Firewalld üzerinden port açma yazısına bakabilirsiniz.

firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload

/etc/ntp.conf içindeki restrict default nomodify notrap nopeer noquery satırı client’lara saat verir, ntpd’nin ayarlarını değiştirmeyi ve durum sorgularını engeller. İnternete açık bir sunucuda bu satırı gevşetmeyin.

Daha sonra ntp servisimize DNS sunucumuzda eklediğimiz subdomaini ekliyoruz.

ntpdate -u time.sezer.in

Burada bir ayrıntı var: ntpdate ntpd’ye kalıcı ayar yazmaz. Sunucuya bir kez sorar ve yerel saati düzeltir. -u ayrıcalıksız bir kaynak port kullanır, yerelde ntpd çalışırken UDP 123 dolu olduğu için gerekir. Testi başka bir makineden yapın, aynı makinede çalıştırırsanız sunucu kendine sorar.

Son olarak size şöyle bir çıktı verecektir.

adjust time server xx.xxx.xx.xx offset -0.000008 sec

offset yerel saatin sunucudan farkıdır. Burada -0.000008 saniye, yani 8 mikrosaniye. adjust saatin yumuşak düzeltildiğini gösterir. Fark büyükse step time server satırı görürsünüz, bu durumda saat tek seferde atlar.

Artık aşağıdaki komutla kendi domaininiz üzerinden zamanı güncelleyebilirsiniz.

ntpdate -u time.sezer.in

Red Hat 7 belgesi ntpdate kullanımını deprecated sayıyor. Client’ların sürekli eşitlenmesi için ntpdate yerine client makinenin /etc/ntp.conf dosyasına şu satırı ekleyip ntpd’yi yeniden başlatın.

server time.sezer.in iburst

NOT: Zaman sunucusu farazi olarak yazılmıştır. Aktif değildir.

Güncel dağıtımlarda chrony ile NTP sunucusu

RHEL 8 ve sonrası ile türevlerinde aynı işi chrony yapar. chronyd varsayılan olarak client’lara saat vermez, bunu /etc/chrony.conf içindeki allow satırıyla açarsınız. Debian ve Ubuntu’da paket adı yine chrony, dosya /etc/chrony/chrony.conf yolundadır.

dnf install chrony
systemctl enable --now chronyd

Dosyaya kendi ağınızı yazın. Aşağıdaki 192.0.2.0/24 belgelerde kullanılan örnek adrestir.

allow 192.0.2.0/24

Ardından chronyd’yi yeniden başlatın, firewall’da NTP’yi açın ve durumu kontrol edin. chronyc sources satırında ^* eşitlenilen kaynağı gösterir, chronyc clients size bağlanan makineleri listeler.

systemctl restart chronyd
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
chronyc sources
chronyc tracking
chronyc clients

Sık karşılaşılan NTP hataları

  • no server suitable for synchronization found: UDP 123 kapalı ya da sunucu henüz eşitlenmemiş. ntpdate -d time.sezer.in saati değiştirmeden ayrıntıyı gösterir.
  • the NTP socket is in use, exiting: yerelde ntpd çalışıyor. Komuta -u ekleyin.
  • Yeniden başlatınca ntpd kapalı: chronyd hâlâ açılışta başlıyor olabilir. systemctl is-enabled chronyd ile kontrol edin.

Bu konuda devam et

Tümünü gör

Yeni yazılardan haberdar olun

Sunucu, Kubernetes, DevOps ve güvenlik üzerine yeni yazılar ve site duyuruları e-postanıza gelsin. Reklam yok, adresiniz kimseyle paylaşılmaz.

© 2021–2026 Sezer Şanlıkan