---
title: "Centos 7 Custom Time Service Oluşturma"
description: "Linux dağıtımı üzerine kendi zaman servisimizi oluşturuyoruz"
image: "https://sezer.in/wp-content/uploads/2021/10/time-scaled.jpg"
url: "https://sezer.in/kendi-time-sunucunuzu-olusturun/"
date: "2021-10-15T18:52:36+03:00"
updated: "2026-10-31T23:43:57+03:00"
author: "Sezer Şanlıkan"
lang: "tr"
source: "https://sezer.in/kendi-time-sunucunuzu-olusturun/"
---

# Centos 7 Custom Time Service Oluşturma

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ı](https://blog.centos.org/2023/04/end-dates-are-coming-for-centos-stream-8-and-centos-linux-7/), 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ı](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/infrastructure-services_considerations-in-adopting-rhel-8).

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](https://sezer.in/firewalld-uzerinden-port-acma/) 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.
