Płynna synchronizacja czasu w systemie Debian 10

Jak wiadomo synchronizacja czasu na serwerze w odniesieniu do serwera atomowego ma kluczowe znaczenie. Jeśli prowadzimy sklep internetowy lub mamy usługi typu bazy danych tym bardziej synchronizacja czasu powinna być regularna i automatyczna.

Co jednak zrobić w sytuacji, w której czas nam się rozjechał i nie chcemy skokowo go zsynchronizować (zwłaszcza wstecz)?. Jak zrobić to płynnie?

Możemy zainstalować pakiet „ntp”, tylko po co korzystać z kombajnu do serwowania czasu? Z pomocą przychodzi nam świetna aplikacja o nazwie „chrony”.

Przed instalacją chrony’ego warto pozbyć się domyślnie zainstalowanego „ntp”.

apt remove --purge ntp

Instalacja chrony:

apt update
apt install chrony

Jeżeli nie korzystamy z ipv6 wyłączmy od razu bindowanie na ten adres. Nic tak nie wkurza w systemie jak procesy, które bindują na wszystkim co możliwe (a chrony ma to do siebie, że lubi bindować na ipv6 nawet jeśli jest wyłączone w kernelu).

systemctl stop chrony
systemctl stop chronyd

Konfiguracja chrony:

nano /etc/chrony/chrony.conf

server vega.cbk.poznan.pl iburst
server ntp.itl.waw.pl iburst
server zegar.umk.pl iburst
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
log tracking measurements statistics
logdir /var/log/chrony
smoothtime 50000 0.01
bindcmdaddress 127.0.0.1
cmdallow 127.0.0.1
maxupdateskew 100.0

Wklejamy jak wyżej. Ja osobiście korzystam na wszystkich serwerach ze wzorców dostarczanych przez laboratoria czasu. Swego czasu korzystałem z oficjalnych serwerów Głównego Urzędu Miar, ale z uwagi na dość częste niegdyś niedostępności tych serwerów przeszedłem na zegary laboratoriów. Z tego co mi wiadomo są one do tego bardziej precyzyjne.

Pozostaje nam jeszcze skonfigurować plik startowy dla chrony, tak aby startował bez domyślnego binda na ipv6. W tym celu podmienimy zawartość pliku w /etc.

nano /etc/init.d/chrony

!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/chronyd
ARGS=”-4″
NAME=”chronyd”
DESC=”time daemon”

case „$1” in
start)
start-stop-daemon –start –verbose –exec /usr/sbin/chronyd — -4
;;
stop)
start-stop-daemon –stop –verbose –oknodo –exec $DAEMON
rm -f /var/run/chrony-ppp-up
;;
restart|force-reload)
echo -n „Restarting $DESC: „
$0 stop
sleep 1
$0 start
;;
*)
echo „Usage: /etc/init.d/chrony {start|stop|restart|force-reload|status}”
exit 1
;;
esac
exit 0

Zapisujemy plik oraz wydajemy:

systemctl daemon-reload
/etc/init.d/chrony restart

Aby sprawdzić jak wygląda synchronizacja czasu wydajemy polecenie:

chronyc sources

Powinniśmy otrzymać coś podobnego w zwrotce. Kolumna „LastRX” informuje nas o tym jak dawno temu czas został zsynchronizowany.

Dodatkowo jeśli sprawdzimy jak nasłuchuje chrony, pokaże się nam:

netstat -tulpn

Możemy cieszyć się płynną zmianą czasu na serwerze, a dodatkowo nie bindujemy na „all”.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *