Configurare un NTP Time Server su Debian
Versioni Compatibili Debian 8 "jessie" Debian 9 "stretch" Debian 10 "buster" |
Introduzione
NTP (Network Time Protocol) è un protocollo di rete utile a sincronizzare gli orologi dei computer appartenenti ad una rete di qualsiasi dimensione. È di tipo client-server, e sfrutta la porta 123/UDP.
Nei sistemi Linux based a gestire la sincronizzazione oraria è il demone ntpd
. Esso dovrà essere adeguatamente "istruito" riguardo ai server NTP di riferimento (siano essi all'interno di una rete locale o in Internet).
In questa guida si tratterà una semplice configurazione di un server NTP basato su GNU/Linux Debian e la sua sincronizzazione con i client della LAN.
Se si vuole invece solo sincronizzare l'orologio del proprio PC con un server esterno, consultare la guida: Impostare e modificare data e ora.
Impostazioni Server
Il server della nostra LAN avrà indirizzo IP 192.168.1.4.
L'installazione del nécessaire è a dir poco banale, con privilegi di amministrazione basta:
# apt install ntp sntp
Il pacchetto sntp
contiene l'omonimo client. Non è strettamente necessario lato server, ma è utilizzabile come client per sincronizzarsi la prima volta. È raccomandato dal pacchetto ntp
, contenente il demone vero e proprio, e sostituisce il vecchio ntpdate
, ormai deprecato.
Configurazione di ntp
Il file di configurazione di ntp è /etc/ntp.conf.
Per la nostra configurazione di test può essere sufficiente dedicarci esclusivamente alle impostazioni di base:
# /etc/ntp.conf, file di configurazione for ntpd # File nel quale scrivere la frequenza di scostamento dal clock di sistema. driftfile /var/lib/ntp/ntp.drift # File dal quale leggere i secondi intercalare forniti da tzdata leapfile /usr/share/zoneinfo/leap-seconds.list # Statistiche (va decommentato per raccogliere le statistiche) statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # NTP server con i quali sincronizzarsi # server ... # pool.ntp.org è un cluster di timeserver che forniscono un servizio NTP affidabile e facile da usare. server 0.debian.pool.ntp.org iburst server 1.debian.pool.ntp.org iburst server 2.debian.pool.ntp.org iburst server 3.debian.pool.ntp.org iburst # È permesso "dialogare" con chiunque (via ipv4 e via ipv6) ma non sono autorizzate configurazioni restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited # Utenti locali restrict 127.0.0.1 restrict ::1 # Necessario per aggiungere pool restrict source notrap nomodify noquery
I due blocchi a cui perstare maggiormente attenzione sono quelli relativi ai server esterni di sincronizzazione e al cluster di timeserver.
Come si può notare sono stati scelti dei server italiani per la sincronizzazione e il pool relativo a Debian. Quest'ultimo è stato inserito in automatico al momento dell'installazione ma è consigliabile cambiarlo poiché la sincronizzazione non è sempre accurata visto che esso non prova neanche ad utilizzare server geograficamente a noi vicini.
Se si ricerca più precisione è meglio utilizzare un pool presente nel proprio continente (ad esempio europe.pool.ntp.org) oppure, meglio ancora, nella propria nazione (ad esempio it.pool.ntp.org).
L'elenco completo dei pool disponibili può essere consultato sul sito http://www.pool.ntp.org/.
Nel caso si sia scelto un pool italiano, il blocco relativo al cluster di timeserver diventerebbe:
server 0.it.pool.ntp.org iburst server 1.it.pool.ntp.org iburst server 2.it.pool.ntp.org iburst server 3.it.pool.ntp.org iburst
L'opzione iburst serve a velocizzare la sincronizzazione iniziale quando usata congiuntamente al comando server.
Avvio del servizio
Una volta completata l'installazione del pacchetto ntp, Debian avvierà in automatico il servizio.
Noi però, dopo aver apportato modifiche al file di configurazione, dovremo fermarlo, sincronizzare l'orario del server con un server NTP esterno e alla fine riavviarlo nuovamente:
# service ntp stop Stopping NTP server: ntpd. # sntp time.ien.it 9 Nov 19:15:46 ntpdate[3204]: adjust time server 193.204.114.105 offset 0.004975 sec # service ntp start Starting NTP server: ntpd.
Per accertarci che tutto stia andando come dovrebbe, eseguiremo una query sui peer di sincronizzazione:
# ntpq -pn remote refid st t when poll reach delay offset jitter ============================================================================== 193.204.114.105 .CTD. 1 u 29 64 1 63.418 7.813 0.000 193.204.114.232 .CTD. 1 u 28 64 1 65.222 7.919 0.000 193.204.114.233 .CTD. 1 u 27 64 1 64.614 7.786 0.000 +88.149.158.46 193.79.237.14 2 u 16 64 1 67.044 10.351 1.389 +194.116.87.4 212.121.88.250 3 u 15 64 1 67.457 10.341 0.428 -93.62.188.182 193.204.114.233 2 u 14 64 1 73.155 9.194 0.432 *212.45.144.88 193.204.114.233 2 u 13 64 1 62.466 10.558 1.290
Gli IP dei server NTP contattati e i dati relativi a ritardo/offset/jitter, etc. ci dicono che la query ha avuto successo. I valori delle colonne delay, offset e jitter sono espresse in [ms]; offset indica lo scostamento tra il tempo locale e quello del server NTP della LAN.
Impostazioni Client
Anche nel client si dovranno installare i pacchetti ntp
e sntp
.
Configurazione di ntp
Il file /etc/ntp.conf
sarà quasi identico a quello visto in precedenza ad eccezione (ovviamente) del blocco relativo al server NTP col quale sincronizzarsi:
# /etc/ntp.conf, file di configurazione for ntpd ... # NTP server con i quali sincronizzarsi server 192.168.1.4 ...
In pratica stiamo configurando il client affinché si sincronizzi col server NTP della nostra rete e non con uno esterno.
Avvio del Servizio
Come fatto per il server, per avviare correttamente il servizio, ci basteranno pochi semplici passi. L'unica differenza sarà l'iniziale sincronizzazione dell'orologio con quello del server NTP della LAN piuttosto che con quello di un server esterno:
# service ntp stop Stopping NTP server: ntpd. # sntp 192.168.1.4 9 Nov 19:17:24 ntpdate[3497]: adjust time server 192.168.1.4 offset 0.027409 sec # service ntp start Starting NTP server: ntpd.
La solita query sui peer di sincronizzazione ci confermerà che tutto è andato per il verso giusto:
# ntpq -pn remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.1.4 85.18.189.242 4 u 18 64 1 23.560 7.767 0.000 *217.194.13.90 193.204.114.233 2 u 7 64 1 53.064 -2.657 2.834 -93.62.188.182 193.204.114.232 2 u 6 64 1 75.131 0.969 1.270 +2.229.10.127 193.204.114.233 2 u 5 64 1 71.776 -4.022 3.909 +77.242.176.254 193.204.114.233 2 u 4 64 1 66.015 -1.140 1.181
Come si può notare il primo dei peer contattati è adesso il server NTP 192.168.1.4. I valori delle colonne delay, offset e jitter sono espresse in [ms]; offset indica lo scostamento tra il tempo locale e quello del server NTP della LAN.
Reti protette da Firewall
Come evidenziato all'inizio, affinché l'orologio riesca a sincronizzarsi con dei server esterni è necessario che la porta 123/UDP sia aperta.
Ci si può però trovare all'interno di una rete protetta da un firewall che blocchi quella porta.
Avendo la possibilità di modificare la configurazione del firewall è possibile aprire la porta 123/UDP aggiungendo allo script di avvio di iptables due regole simili a queste:
# apre la porta 123/udp /sbin/iptables -A INPUT -p udp --dport 123 -j ACCEPT /sbin/iptables -A OUTPUT -p udp --sport 123 -j ACCEPT
Se invece non è possibile intervenire sul firewall, è comunque possibile configurare un server NTP che si sincronizzi con timeserver esterni ricorrendo a OpenNTPD invece che a ntp.
Esso infatti utilizza porte non privilegiate ed è quindi "possibile" (non "certo"... dipende sempre dalle politiche restrittive del firewall) che riesca a sincronizzarsi senza problemi.
Have a really good... time! ;)
Guida scritta da: pmate 15:03, 10 nov 2011 (CEST) | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |