Serwer czasu NTP w Ubuntu 16.04

Przed instalacją serwera czasu warto wyłączyć synchronizację czasu:

root@server:# timedatectl set-ntp no

Sprawdzanie statusu synchronizacji czasu wykonamy poleceniem:

root@server:# timedatectl
      Local time: Tue 2018-10-30 00:10:40 CET
  Universal time: Mon 2018-10-29 23:10:40 UTC
        RTC time: Mon 2018-10-29 23:10:39
       Time zone: Europe/Warsaw (CET, +0100)
 Network time on: no
NTP synchronized: yes
 RTC in local TZ: no

Instalacja serwera czasu w Ubuntu:

root@server:# apt-get install ntp

Program ntpd może w systemie pełnić zarówno funkcję serwera (być wzorcem czasu dla innych maszyn), jak również klienta (synchronizować lokalny zegar z serwerami czasu). Po instalacji serwer czasu uruchomi się automatycznie.

Następnym krokiem jest konfiguracja serwera czasu. Edytujemy plik konfiguracyjny:

root@server:# vim /etc/ntp.conf

Zamiast domyślnych wzorców czasu podajemy własne komentując jednocześnie pozostałe. Najlepiej jest podać kilka serwerów czasu zlokalizowanych blisko nas, do których pingi są najkrótsze.

pool tempus1.gum.gov.pl iburst
pool tempus2.gum.gov.pl iburst
pool ntp1.tp.pl
pool ntp2.tp.pl

Powyżej najpopularniejsze serwery czasu w Polsce. Przy jednym z nich lub kilku (które mają najmniejsze opóźnienia), na końcu warto dodać parametr iburst, który przyspieszy synchronizację czasu z tymi serwerami. Dodanie poniższych linijek na końcu listy serwerów czasu nie będzie powodowało błędów w działaniu naszego ntp w przypadku braku dostępu do Internetu.

pool tempus1.gum.gov.pl iburst
pool tempus2.gum.gov.pl iburts
pool ntp1.tp.pl
pool ntp2.tp.pl
pool 127.127.1.0
fudge 127.127.1.0 stratum 10

Domyślnie serwer będzie dostępny na wszystkich interfejsach sieciowych. Jeśli chcemy ograniczyć jego działanie do wybranych interfejsów dodajemy do pliku konfiguracyjnego poniższe linie:

interface ignore wildcard
interface listen 127.0.0.1
interface listen 192.168.1.1
interface listen 8.8.8.8

Ostatnia rzecz do ustawienia to pozwolenie naszym maszynom z sieci lokalnej na pobieranie czasu z serwera ntp. Dodajemy poniższą linijkę na końcu pliku konfiguracyjnego.

restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify nopeer noquery

Po zmianie konfiguracji restartujemy serwer czasu:

root@server:#/ systemctl restart ntp

W celu zmiany strefy czasowej w Ubuntu wydajemy z konsoli polecenie:

root@server:# dpkg-reconfigure tzdata

Jeśli chcemy, żeby system używał lokalnego czasu, wydajemy komendę:

root@server:# vim  /etc/default/rcS

i zmieniamy lub dodajemy poniższą sekcję do pliku konfiguracyjnego:

# Set UTC=yes if your hardware clock is set to UTC (GMT)
UTC=no

Sprawdzamy czy serwer ntp jest uruchomiony:

root@server:# /etc/init.d/ntp status

Sprawdzamy czy system potrafi rozwiązać nazwę serwera czasu na jego adres IP (zamiast ntp1.tp.pl wstawiamy serwery czasy umieszczone w pliku konfiguracyjnym ntp.conf)

root@server:# host ntp1.tp.pl

Sprawdzanie różnic pomiędzy naszym serwerem, a serwerami z konfigu:

root@server:# ntpq --numeric --peer

lub (pomijając parametr „n” adresy IP serwerów czasu będą rozwiązane na ich nazwy):

root@server:# ntpq -p

Najlepiej jak w pierwszej kolumnie są * i dużo + przed adresami IP serwerów czasu natomiast parametr reach (cel) ma wartość 377. W polu when mamy podany czas w s jaki upłynął od ostatniego kontaktu z danym serwerem czasu. Parametr delay (opóźnienie) jest podany w milisekundach. Dla lokalnej sieci powinien wynosić poniżej 1, serwerów ISP poniżej 10, idealny dla Wi-Fi poniżej 100. offset też jest wyrażony w milisekundach i oznacza bieżącą różnicę pomiędzy serwerami czasu, a naszym serwerem. Im mniejsza różnica tym lepiej. jitter oznacza oszacowany błąd wewnętrznego zegara – im mniej tym lepiej. Jeśli ten parametr jest stosunkowo wysoki może powodować to pływanie zegara systemowego, gdyż server ntp będzie dostosowywał zegar systemowy do czasu wzorcowego zbyt często. Przydatnymi poleceniami mogą być:

root@server:# ntpdc -c loopinfo

różnica w sekundach pomiędzy zegarem systemowym, a zegarem serwera czasu obliczona podczas ostatniej synchronizacji,

root@server:# ntpdc -c kerninfo

wyświetlenia bieżącej, pozostałej do przeprowadzenia korekty czasu zegara systemowego.