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”.