Difference between revisions of "Network Time Protocol daemon (Italiano)"

From ArchWiki
Jump to: navigation, search
(Created page with "Category:Networking (Italiano) Category:Daemons and system services (Italiano) Category:HOWTOs (Italiano) {{i18n|Network Time Protocol}} Quest'articolo descrive come...")
 
(update man page references, updated man page links (interactive))
(Tag: wiki-scripts)
 
(75 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 
[[Category:Networking (Italiano)]]
 
[[Category:Networking (Italiano)]]
 
[[Category:Daemons and system services (Italiano)]]
 
[[Category:Daemons and system services (Italiano)]]
[[Category:HOWTOs (Italiano)]]
+
[[en:Network Time Protocol daemon]]
{{i18n|Network Time Protocol}}
+
[[es:Network Time Protocol daemon]]
 +
[[fr:ntp]]
 +
[[ja:Network Time Protocol daemon]]
 +
[[ru:Network Time Protocol daemon]]
 +
[[zh-hans:Network Time Protocol daemon]]
 +
Questo articolo descrive come configurare ed eseguire NTPd (Network Time Protocol daemon), il metodo più diffuso per sincronizzare l'[[Time|orologio software]] di un sistema GNU/Linux con dei time server utilizzando il [[Wikipedia:Network Time Protocol|Network Time Protocol]]; se appositamente configurato, NTPd può far funzionare il computer stesso come un time server.
  
Quest'articolo descrive come configurare ed eseguire NTPd (Network Time Protocol daemon), il metodo più diffuso per sincronizzare l'[[Time|orologio software]] di un sistema GNU/Linux con dei time server utilizzando il [[Wikipedia:Network Time Protocol|Network Time Protocol]]; se appositamente configurato, NTPd può far funzionare il computer stesso come un time server.
+
==Installazione==
 +
[[pacman (Italiano)|Installare]] {{pkg|ntp}}, disponibile nei [[Official repositories (Italiano)|repository ufficiali]].
  
==Installazione==
+
==Configurazione==
NTPd è disponibile in [extra]:
+
{{Suggerimento|Il pacchetto {{pkg|ntp}} è installato di default con {{ic|/etc/ntp.conf}}, che dovrebbe far funzionare NTPd senza apportare alcuna configurazione.}}
  
{{cli|# pacman -S ntp{{cursor}}}}
+
===Configurare la connessione per server NTP===
 +
La prima cosa che bisogna definire in {{ic|/etc/ntp.conf}} sono i server con cui il computer dovrà sincronizzarsi.
  
==Configurazione==
 
La prima cosa che bisogna definire in {{Filename|/etc/ntp.conf}} sono i server con cui il computer dovrà sincronizzarsi.
 
 
I server NTP sono classificati in un sistema gerarchico con vari livelli chiamati ''stratum'': i dispositivi che sono considerati sorgenti indipendenti dell'orario sono classificati come ''stratum 0''; i server direttamente connessi ai dispositivi ''stratum 0'' sono classificati come ''stratum 1''; i server connessi a loro volta a dispositivi ''stratum 1'' sono classificati come ''stratum 2'' e così via.
 
I server NTP sono classificati in un sistema gerarchico con vari livelli chiamati ''stratum'': i dispositivi che sono considerati sorgenti indipendenti dell'orario sono classificati come ''stratum 0''; i server direttamente connessi ai dispositivi ''stratum 0'' sono classificati come ''stratum 1''; i server connessi a loro volta a dispositivi ''stratum 1'' sono classificati come ''stratum 2'' e così via.
  
Line 19: Line 24:
 
Le seguenti linee sono un esempio:
 
Le seguenti linee sono un esempio:
  
  server 0.it.pool.ntp.org iburst
+
{{hc|/etc/ntp.conf|
  server 1.it.pool.ntp.org iburst
+
 
  server 2.it.pool.ntp.org iburst
+
  server 0.pool.ntp.org iburst
  server 3.it.pool.ntp.org iburst
+
  server 1.pool.ntp.org iburst
 +
  server 2.pool.ntp.org iburst
 +
  server 3.pool.ntp.org iburst
 +
 
 +
}}
  
L'opzione ''iburst'' è consigliata, e invia una serie (''burst'') di pacchetti se non riesce ad ottenere una connessione al primo tentativo. L'opzione ''burst'' non dovrebbe invece essere mai usata senza un'esplicita autorizzazione, e probabilmente porterebbe ad essere inseriti in una blacklist.
+
L'opzione {{ic|iburst}} è consigliata, e invia una serie (burst) di pacchetti solo se non riesce ad ottenere una connessione al primo tentativo. L'opzione {{ic|burst}} agisce sempre così, anche al primo tentativo, e non dovrebbe essere mai usata senza un'esplicita autorizzazione, perché potrebbe causare l'inserimento in blacklist.
  
Se si sta configurando un server ntp, è necessario aggiungere ''localhost'' tra i server in maniera che, nel caso il computer perda la connessione ad internet, non smetta comunque di inviare l'orario al network; è bene aggiungere ''localhost'' come un server ''stratum 10'' (utilizzando il comando ''fudge'') in maniera che non sia mai usato a meno che sia perso l'accesso ad internet:
+
===Configurare il proprio server NTP===
 +
Se si sta configurando un server ntp, è necessario aggiungere [http://www.ntp.org/ntpfaq/NTP-s-refclk.htm#Q-LOCAL-CLOCK ''local clock''] come server, in maniera che, nel caso il computer perda la connessione ad internet, non smetta comunque di inviare l'orario al network; è bene aggiungere ''localhost'' come un server ''stratum 10'' (utilizzando il comando ''fudge'') in maniera che non sia mai usato a meno che sia perso l'accesso ad internet:
  
 
  server 127.127.1.0
 
  server 127.127.1.0
 
  fudge  127.127.1.0 stratum 10
 
  fudge  127.127.1.0 stratum 10
  
La prossima cosa da fare è aggiungere il percorso del file per il drift (che tiene conto della deviazione dell'orario di sistema) ed eventualmente il percorso del file di log:
+
La prossima cosa da fare è definire le regole che permetteranno ai vari client di connettersi al servizio (anche ''localhost'' è considerato un client) utilizzando il comando ''restrict''; nel file dovrebbe già essere presente una linea simile a questa:
 
 
driftfile /var/lib/ntp/ntp.drift
 
logfile /var/log/ntp.log
 
 
 
A questo punto rimane solo da definire le regole che permetteranno ai vari client di connettersi al servizio (anche ''localhost'' è considerato un client) utilizzando il comando ''restrict''; nel file dovrebbe già essere presente una linea simile a questa:
 
  
 
  restrict default nomodify nopeer
 
  restrict default nomodify nopeer
  
Questa linea nega a chiunque il permesso di modificare qualunque cosa e di fare richieste al time server.
+
Questa linea nega a chiunque il permesso di modificare qualunque cosa ed impedisce di interrogare lo stato del time server: {{ic|nomodify}} impedisce la riconfigurazione di ntpd (con ''ntpq'' oppure ''ntpdc'') e {{ic|noquery}} impedisce il dumping dei dati da ntpd (sempre con ''ntpq'' oppure ''ntpdc'').
  
 
È possibile aggiungere anche altre opzioni:
 
È possibile aggiungere anche altre opzioni:
Line 46: Line 51:
 
  restrict default kod nomodify notrap nopeer noquery
 
  restrict default kod nomodify notrap nopeer noquery
  
In passato, anche ''notrust'' era usata, ma la sua funzione è poi venuta a significare che è richiesta l'autenticazione con una password.
+
{{Nota|Questo permetterà ad altre persone di interrogare il proprio time server. E' necessario aggiungere {{ic|noserve}} per fermare il serving time.}}
  
Dopo questa linea è necessario far sapere a ''ntpd'' a chi deve permettere di connettersi al server; la seguente riga è sufficiente se non si sta configurando un server ntp:
+
La documentazione completa per l'opzione "restrict" è reperibile in {{man||ntp_acc}}{{Dead link|2017|09|09}}. Per istruzioni dettagliate vedere https://support.ntp.org/bin/view/Support/AccessRestrictions.
 +
 
 +
La linea seguente serve ad indicare a ''ntpd'' cosa può attraversare il proprio server; la seguente riga è sufficiente se non si sta configurando un server NTP:
  
 
  restrict 127.0.0.1
 
  restrict 127.0.0.1
  
Altrimenti si possono aggiungere più client come in quest'esempio:
+
Se si vuole forzare la risoluzione DNS al namespace IPv6, scrivere {{ic|-6}} davanti all'indirizzo IP o l'host name {{ic|-4}} forza l'IPv4), ad esempio:
  
  restrict 1.2.3.4 nomodify
+
  restrict -6 default nomodify nopeer
  restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
+
  restrict -6 ::1    # ::1 is the IPv6 equivalent for 127.0.0.1
  
Questo spiega a ''ntpd'' che 1.2.3.4 e tutti gli indirizzi IP dalla serie 192.168.0.0 hanno il permesso di sincronizzarsi con questo server, ma non sarà loro permesso di modificare alcunché. Qualunque altro indirizzo IP risponderà sempre alle restrizioni di base (la prima linea ''restrict'' in {{Filename|ntp.conf}}).
+
A questo punto rimane solo da aggiungere il percorso del file per il drift (che tiene conto della deviazione dell'orario di sistema) ed eventualmente il percorso del file di log:
  
In conclusione, per una configurazione basilare, il file completo sarà simile a questo ('''tutti i commenti sono stati eliminati per chiarezza'''):
+
driftfile /var/lib/ntp/ntp.drift
 +
logfile /var/log/ntp.log
  
{{File|name=/etc/ntp.conf|content=
+
Una configurazione basilare, sarà simile a questa ('''tutti i commenti sono stati eliminati per chiarezza'''):
server 0.it.pool.ntp.org iburst
+
 
server 1.it.pool.ntp.org iburst
+
{{hc|/etc/ntp.conf|
server 2.it.pool.ntp.org iburst
+
server 0.pool.ntp.org iburst
server 3.it.pool.ntp.org iburst
+
server 1.pool.ntp.org iburst
 +
server 2.pool.ntp.org iburst
 +
server 3.pool.ntp.org iburst
 +
 
 +
restrict default kod nomodify notrap nopeer noquery
 +
restrict -6 default kod nomodify notrap nopeer noquery
 +
 
 +
restrict 127.0.0.1
 +
restrict -6 ::1 
  
 
driftfile /var/lib/ntp/ntp.drift
 
driftfile /var/lib/ntp/ntp.drift
 
logfile /var/log/ntp.log
 
logfile /var/log/ntp.log
 +
}}
 +
 +
{{Nota|Definire il file di log non è obbligatorio, ma è sempre una buona idea avere dei feedback per operazioni ''ntpd''.}}
 +
 +
===Altre risorse inerenti la configurazione NTP===
 +
Infine, mai dimenticarsi delle pagine di manuale: c'è la possibilità che {{man|5|ntp.conf}} possa rispondere a molti dubbi che siano rimasti (leggere anche le pagine di manuale correlate: {{ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).
 +
 +
==Utilizzo senza demone==
 +
Per sincronizzare l'orologio di sistema una sola volta, senza avviare il demone NTP, eseguire:
 +
# ntpd -qg
 +
 +
Questo ha lo stesso effetto del programma {{ic|ntpdate}}, [http://support.ntp.org/bin/view/Dev/DeprecatingNtpdate che ora è deprecato].
 +
 +
L'opzione {{ic|-g}} permette di spostare l'orologio oltre la soglia di panico (15 minuti di default) senza un avvertimento. Si noti che la compensazione è anormale e potrebbe indicare un'errata impostazione del fuso orario, il guasto del chip orologio, o semplicemente un lunghissimo periodo di abbandono. Se in questi casi non si vuole impostare l'orologio e riportare l'errore in syslog, rimuovere {{ic|-g}}.
 +
 +
Dopo aver aggiornato l'orologio di sistema, per salvare l'ora nell'orologio hardware per mantenerlo al riavvio:
 +
# hwclock -w
  
restrict default nomodify nopeer
+
===Sincronizzare una volta in fase di boot===
restrict 127.0.0.1
+
 
}}
+
{{Attenzione|
 +
* Utilizzare questo metodo è fortemente sconsigliato su server e in generale su macchine che devono funzionare continuativamente per periodi maggiori di 2 o 3 giorni, infatti l'orologio di sistema viene aggiornato solo una volta durante il boot.
 +
* Lanciare {{ic|ntpd -qg}} come un evento di ''cron'' è da evitare assolutamente, a meno di essere perfettamente consapevoli del comportamento delle proprie applicazioni avviate in caso di modifiche istantanee dell'orologio di sistema.}}
 +
 
 +
Se si vuole sincronizzare l'orologio di sistema ogni volta che il sistema si avvia, si può aggiungere la riga {{ic|ntpd -qg &}} al proprio {{ic|/etc/rc.local}}. Vedere [[Autostarting]] per i metodi alternativi:
 +
 
 +
ntpd -qg &
 +
 
 +
Si dovrebbe anche aggiungere il demone {{ic|hwclock}} al proprio [[Daemon (Italiano)#SEsecuzione_automatica_all.27avvio|DAEMONS array]]{{Broken section link}}, a meno che qualcos'altro, ad esempio un altro sistema operativo in dual boot, non aggiorni già l'orologio hardware. Vedere [[Time#hwclock daemon]]{{Broken section link}} per maggiori informazioni.
 +
 
 +
Affinché questo metodo funzioni è necessario fare in modo che, quando {{ic|rc.local}} viene eseguito, la connessione di rete sia già stata inizializzata (ad esempio, non si dovrebbero avere in background demoni correlati alla rete in {{ic|/etc/rc.conf}})
 +
 
 +
Se per qualche ragione non si vuole eseguire il demoone {{ic|hwclock}}, aggiungere le seguenti linee in {{ic|/etc/rc.local}} al posto di {{ic|ntpd -qg &}}:
  
Effettivamente, definire un file di log non è obbligatorio, ma è sempre una buona idea per avere un resoconto delle operazioni di ''ntpd''.
+
{ ntpd -qg; hwclock -w; } &
  
Infine, mai dimenticarsi delle pagine di manuale: cla possibilità che {{Codeline|man ntp.conf}} possa rispondere a molti dubbi che siano rimasti.
+
Questa sintassi fà in modo che entrambi i comandi siano eseguiti in background, ma assicura che vengono eseguiti in ordine (e non contemporaneamente). Si noti che eseguir il comando {{ic|hwclock -w}} all'avvio, non è equivalente all'esecuzione del demone {{ic|hwclock}, che esegue invece {{ic|hwclock --adjust}} allo spegnimento.
  
{{Gentoo(ita)|NTP}}
+
Note that running the {{ic|hwclock -w}} command at boot is not equivalent to executing the {{ic|hwclock}} daemon, which instead runs {{ic|hwclock --adjust}} at shutdown.
  
 
==Avvio come demone==
 
==Avvio come demone==
===Avvio di ntpd===
+
===Avvio di ntpd sysvinit===
Aggiungere ''ntpd'' alla lista DAEMONS in {{Filename|/etc/rc.conf}} per avviarlo al boot:
+
ntpd imposta la modalità 11 minuti, che sincronizza l'orologio di sistema con l'hardware ogni 11 minuti. Il demone hwclock misura l'orologio hardware e lo sincronizza, creando conflitti con ntpd.
 +
 
 +
Fermare il demone hwclock (se in esecuzione):
 +
 
 +
{{bc|# rc.d stop hwclock}}
 +
 
 +
Avviare il demone ntpd:
 +
{{bc|# rc.d start ntpd}}
 +
 
 +
Aggiungere ''ntpd'' alla lista DAEMONS per avviarlo automaticamente al boot e assicurarsi di disabilitare hwclock:
 +
{{hc|/etc/rc.conf|2=DAEMONS=(... !hwclock '''ntpd''' ...)}}
 +
 
 +
 
 +
=== Abilitare demone ntpd sul sistema Native systemd ===
 +
 
 +
E' possibile abilitare il demone ntpd all'avvio con il seguente comando:
 +
 
 +
{{bc|# systemctl enable ntpd}}
 +
 
 +
Oppure, in alternativa, utilizzare:
 +
 
 +
{{bc|# timedatectl set-ntp 1}}
 +
 
 +
===Controllare se il demone sta sincronizzando correttamente===
 +
 
 +
Utilizzare l'utility ntpq per visualizzare la lista dei peers configurati:
  
DAEMONS=(syslog-ng network '''@ntpd''' ...)
+
{{bc|$ ntpq -np}}
 +
 
 +
Il ritardo, l'offset e le colonne jitter dovrebbero essere diverse da zero. I server ntpd che si stanno sincronizzando sono preceduti da un asterisco.
  
 
===NetworkManager===
 
===NetworkManager===
''ntpd'' può essere acceso/spento a seconda della connessione internet attraverso l'uso dei [[NetworkManager#Network Services with NetworkManager Dispatcher|dispatcher script di NetworkManager]]. È possibile installare gli script necessari dal repo [community]:
+
{{Nota|ntpd dovrebbe restare in esecuzione quando la rete non funziona, se il demone hwclock è disabilitato, quindi questo non dovrebbe essere necessario.}}
 +
''ntpd'' può essere acceso/spento a seconda della connessione internet attraverso l'uso dei [[NetworkManager (Italiano)#Servizi di rete con NetworkManager Dispatcher|dispatcher script di NetworkManager]]. È possibile installare gli script necessari dal repo [community]:
  
{{cli|# pacman -S networkmanager-dispatcher-ntpd{{cursor}}}}
+
{{bc|# pacman -S networkmanager-dispatcher-ntpd}}
  
===Avvio come utente non-root===
+
===Esecuzione in chroot===
Quando compilato con l'opzione ''--enable-linux-caps'', ntp può essere avviato da utente non root in modo tale da aumentare la sicurezza (il pacchetto vanilla di Arch Linux contiene quest'opzione).
+
{{Nota|ntpd dovrebbe essere eseguito senza i privilegi di amministratore, prima di tentare nell'ambiente chroot (di default, nel pacchetto vanilla di Arch Linux, poiché chroot è relativamente inutile per garantire i processi in esecuzione come utente root.}}
  
{{Nota|Prima di provare quest'opzione, assicurarsi che ntp abbia già creato {{Filename|/var/lib/ntp/ntp.drift}}.}}
+
Editare {{ic|/etc/conf.d/ntpd.conf}} e modificare
  
Creare il gruppo ''ntp'' e l'utente ''ntp'':
+
NTPD_ARGS="-g -u ntp:ntp"
  
{{cli|# groupadd ntp<br><br>
+
in
<nowiki>#</nowiki> useradd -r -d /var/lib/ntp -g ntp -s /bin/false ntp{{cursor}}}}
 
 
 
Cambiare il proprietario della cartella ntp con l'utente/gruppo ntp:
 
  
{{cli|# chown -R ntp:ntp /var/lib/ntp{{cursor}}}}
+
NTPD_ARGS="-g -i /var/lib/ntp -u ntp:ntp"
  
Editare {{Filename|/etc/conf.d/ntp-client.conf}} e cambiare
+
Quindi, editare{{ic|/etc/ntp.conf}} per cambiare il percorso del driftfile ed indirizzarlo alla directory chroot, anzichè alla cartella radice reale. Cambiare:
  
  NTPD_ARGS="-g"
+
  driftfile      /var/lib/ntp/ntp.drift
  
 
in
 
in
  
  NTPD_ARGS="-g -u ntp:ntp"
+
  driftfile      /ntp.drift
  
==Sincronizzare l'orologio senza usare il demone==
+
Creare un ambiente chroot adatto, di modo che getaddrinfo() funzionerà creando idonee cartelle e file (da root):
Se si vuole semplicemente sincronizzare l'orologio di sistema durante il boot senza utilizzare ''ntpd'' come demone, è possibile aggiungere la seguente linea a {{Filename|/etc/rc.local}}:
 
  
ntpd -qg &
+
{{bc|<nowiki># mkdir /var/lib/ntp/etc /var/lib/ntp/lib /var/lib/ntp/proc
 +
# touch /var/lib/ntp/etc/resolv.conf /var/lib/ntp/etc/services</nowiki>}}
  
Questo processo ha un comportamento analogo al programma ''ntpdate'', che è ormai deprecato.
+
ed esegueno il collegamento-montaggio dei suddetti file:
  
{{Nota|
+
{{hc|/etc/fstab|
* Perché questo metodo funzioni bisogna assicurarsi che, quando {{Filename|rc.local}} viene eseguito, la connessione alla rete sia già stata inizializzata (ad esempio non si dovrebbero avviare in background in {{Filename|/etc/rc.conf}} demoni essenziali per il funzionamento della rete stessa)
+
...
* L'orologio hardware viene già automaticamente riallineato all'orologio di sistema ad ogni shutdown del computer, grazie ad un comando posto in {{Filename|/etc/rc.shutdown}}
+
#ntpd chroot mounts
}}
+
/etc/resolv.conf /var/lib/ntp/etc/resolv.conf none bind 0 0
{{Warning|
+
/etc/services   /var/lib/ntp/etc/services none bind 0 0
* Usare questo metodo è fortemente sconsigliato su server e in generale su macchine che devono funzionare continuativamente per periodi maggiori di 2 o 3 giorni, infatti l'orologio di sistema viene aggiornato solo una volta durante il boot.
+
/lib           /var/lib/ntp/lib none bind 0 0
* Lanciare "ntpd -qg" come un evento di ''cron'' è da evitare assolutamente, a meno di essere perfettamente consapevoli del comportamento delle proprie applicazioni avviate in caso di modifiche istantanee dell'orologio di sistema.
+
/proc   /var/lib/ntp/proc none bind 0 0
 
}}
 
}}
 +
 +
{{bc|# mount -a}}
 +
 +
Infine, riavviare nuovamente il demone:
 +
 +
{{bc|# rc.d restart ntpd}}
 +
 +
E' relativamente difficile essere sicuri che la configurazione driftfile sta funionando, senza attendere un po' di tempo, perchè ntpd non legge né scrive molto spesso. Se qualcosa è andato storto, si registrerà un errore; se funziona tutto bene, il timestamp si aggiornerà. Se non si ottengono errori dopo un'intera giornata ed il timestamp viene aggiornato, si dovrebbe essere sicuri del successo.
  
 
==Alternative==
 
==Alternative==
Una possibile alternativa a NTPd è [[OpenNTPD (Italiano)|OpenNTPD]], parte del progetto OpenBSD e attualmente non mantenuto per Linux.
+
Possibili alternative ad NTPd sono [[Chrony]], una connessione dial-up semplice e specificatamente progettata per sistemi che non sono sempre online, e [[OpenNTPD (Italiano)|OpenNTPD]], parte del progetto OpenBSD e attualmente non mantenuto per Linux.
  
==Vedi anche==
+
==Vedere anche==
 
* [[Time]] (per maggiori informazioni sulla gestione del tempo nel computer)
 
* [[Time]] (per maggiori informazioni sulla gestione del tempo nel computer)
  
Line 140: Line 218:
 
* http://www.pool.ntp.org/
 
* http://www.pool.ntp.org/
 
* http://www.eecis.udel.edu/~mills/ntp/html/index.html
 
* http://www.eecis.udel.edu/~mills/ntp/html/index.html
 +
* http://www.akadia.com/services/ntp_synchronize.html

Latest revision as of 18:25, 9 September 2017

Questo articolo descrive come configurare ed eseguire NTPd (Network Time Protocol daemon), il metodo più diffuso per sincronizzare l'orologio software di un sistema GNU/Linux con dei time server utilizzando il Network Time Protocol; se appositamente configurato, NTPd può far funzionare il computer stesso come un time server.

Installazione

Installare ntp, disponibile nei repository ufficiali.

Configurazione

Suggerimento: Il pacchetto ntp è installato di default con /etc/ntp.conf, che dovrebbe far funzionare NTPd senza apportare alcuna configurazione.

Configurare la connessione per server NTP

La prima cosa che bisogna definire in /etc/ntp.conf sono i server con cui il computer dovrà sincronizzarsi.

I server NTP sono classificati in un sistema gerarchico con vari livelli chiamati stratum: i dispositivi che sono considerati sorgenti indipendenti dell'orario sono classificati come stratum 0; i server direttamente connessi ai dispositivi stratum 0 sono classificati come stratum 1; i server connessi a loro volta a dispositivi stratum 1 sono classificati come stratum 2 e così via.

È necessario comprendere che lo stratum di un server non può essere considerato un'indicazione della sua precisione o affidabilità. Tipicamente, per scopi generici di sincronizzazione sono utilizzati server dello stratum 2: a meno che non si conoscano già i server a cui connettersi, è bene utilizzare quelli forniti da pool.ntp.org (link alternativo) scegliendo il pool di server più vicino alla propria posizione geografica.

Le seguenti linee sono un esempio:

/etc/ntp.conf

 server 0.pool.ntp.org iburst
 server 1.pool.ntp.org iburst
 server 2.pool.ntp.org iburst
 server 3.pool.ntp.org iburst

L'opzione iburst è consigliata, e invia una serie (burst) di pacchetti solo se non riesce ad ottenere una connessione al primo tentativo. L'opzione burst agisce sempre così, anche al primo tentativo, e non dovrebbe essere mai usata senza un'esplicita autorizzazione, perché potrebbe causare l'inserimento in blacklist.

Configurare il proprio server NTP

Se si sta configurando un server ntp, è necessario aggiungere local clock come server, in maniera che, nel caso il computer perda la connessione ad internet, non smetta comunque di inviare l'orario al network; è bene aggiungere localhost come un server stratum 10 (utilizzando il comando fudge) in maniera che non sia mai usato a meno che sia perso l'accesso ad internet:

server 127.127.1.0
fudge  127.127.1.0 stratum 10

La prossima cosa da fare è definire le regole che permetteranno ai vari client di connettersi al servizio (anche localhost è considerato un client) utilizzando il comando restrict; nel file dovrebbe già essere presente una linea simile a questa:

restrict default nomodify nopeer

Questa linea nega a chiunque il permesso di modificare qualunque cosa ed impedisce di interrogare lo stato del time server: nomodify impedisce la riconfigurazione di ntpd (con ntpq oppure ntpdc) e noquery impedisce il dumping dei dati da ntpd (sempre con ntpq oppure ntpdc).

È possibile aggiungere anche altre opzioni:

restrict default kod nomodify notrap nopeer noquery
Nota: Questo permetterà ad altre persone di interrogare il proprio time server. E' necessario aggiungere noserve per fermare il serving time.

La documentazione completa per l'opzione "restrict" è reperibile in ntp_acc()[dead link 2017-09-09]. Per istruzioni dettagliate vedere https://support.ntp.org/bin/view/Support/AccessRestrictions.

La linea seguente serve ad indicare a ntpd cosa può attraversare il proprio server; la seguente riga è sufficiente se non si sta configurando un server NTP:

restrict 127.0.0.1

Se si vuole forzare la risoluzione DNS al namespace IPv6, scrivere -6 davanti all'indirizzo IP o l'host name -4 forza l'IPv4), ad esempio:

restrict -6 default nomodify nopeer
restrict -6 ::1    # ::1 is the IPv6 equivalent for 127.0.0.1

A questo punto rimane solo da aggiungere il percorso del file per il drift (che tiene conto della deviazione dell'orario di sistema) ed eventualmente il percorso del file di log:

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

Una configurazione basilare, sarà simile a questa (tutti i commenti sono stati eliminati per chiarezza):

/etc/ntp.conf
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1  

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log
Nota: Definire il file di log non è obbligatorio, ma è sempre una buona idea avere dei feedback per operazioni ntpd.

Altre risorse inerenti la configurazione NTP

Infine, mai dimenticarsi delle pagine di manuale: c'è la possibilità che ntp.conf(5) possa rispondere a molti dubbi che siano rimasti (leggere anche le pagine di manuale correlate: man {ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}).

Utilizzo senza demone

Per sincronizzare l'orologio di sistema una sola volta, senza avviare il demone NTP, eseguire:

# ntpd -qg

Questo ha lo stesso effetto del programma ntpdate, che ora è deprecato.

L'opzione -g permette di spostare l'orologio oltre la soglia di panico (15 minuti di default) senza un avvertimento. Si noti che la compensazione è anormale e potrebbe indicare un'errata impostazione del fuso orario, il guasto del chip orologio, o semplicemente un lunghissimo periodo di abbandono. Se in questi casi non si vuole impostare l'orologio e riportare l'errore in syslog, rimuovere -g.

Dopo aver aggiornato l'orologio di sistema, per salvare l'ora nell'orologio hardware per mantenerlo al riavvio:

# hwclock -w

Sincronizzare una volta in fase di boot

Attenzione:
  • Utilizzare questo metodo è fortemente sconsigliato su server e in generale su macchine che devono funzionare continuativamente per periodi maggiori di 2 o 3 giorni, infatti l'orologio di sistema viene aggiornato solo una volta durante il boot.
  • Lanciare ntpd -qg come un evento di cron è da evitare assolutamente, a meno di essere perfettamente consapevoli del comportamento delle proprie applicazioni avviate in caso di modifiche istantanee dell'orologio di sistema.

Se si vuole sincronizzare l'orologio di sistema ogni volta che il sistema si avvia, si può aggiungere la riga ntpd -qg & al proprio /etc/rc.local. Vedere Autostarting per i metodi alternativi:

ntpd -qg &

Si dovrebbe anche aggiungere il demone hwclock al proprio DAEMONS array[broken link: invalid section], a meno che qualcos'altro, ad esempio un altro sistema operativo in dual boot, non aggiorni già l'orologio hardware. Vedere Time#hwclock daemon[broken link: invalid section] per maggiori informazioni.

Affinché questo metodo funzioni è necessario fare in modo che, quando rc.local viene eseguito, la connessione di rete sia già stata inizializzata (ad esempio, non si dovrebbero avere in background demoni correlati alla rete in /etc/rc.conf)

Se per qualche ragione non si vuole eseguire il demoone hwclock, aggiungere le seguenti linee in /etc/rc.local al posto di ntpd -qg &:

{ ntpd -qg; hwclock -w; } &

Questa sintassi fà in modo che entrambi i comandi siano eseguiti in background, ma assicura che vengono eseguiti in ordine (e non contemporaneamente). Si noti che eseguir il comando hwclock -w all'avvio, non è equivalente all'esecuzione del demone {{ic|hwclock}, che esegue invece hwclock --adjust allo spegnimento.

Note that running the hwclock -w command at boot is not equivalent to executing the hwclock daemon, which instead runs hwclock --adjust at shutdown.

Avvio come demone

Avvio di ntpd sysvinit

ntpd imposta la modalità 11 minuti, che sincronizza l'orologio di sistema con l'hardware ogni 11 minuti. Il demone hwclock misura l'orologio hardware e lo sincronizza, creando conflitti con ntpd.

Fermare il demone hwclock (se in esecuzione):

# rc.d stop hwclock

Avviare il demone ntpd:

# rc.d start ntpd

Aggiungere ntpd alla lista DAEMONS per avviarlo automaticamente al boot e assicurarsi di disabilitare hwclock:

/etc/rc.conf
DAEMONS=(... !hwclock ntpd ...)


Abilitare demone ntpd sul sistema Native systemd

E' possibile abilitare il demone ntpd all'avvio con il seguente comando:

# systemctl enable ntpd

Oppure, in alternativa, utilizzare:

# timedatectl set-ntp 1

Controllare se il demone sta sincronizzando correttamente

Utilizzare l'utility ntpq per visualizzare la lista dei peers configurati:

$ ntpq -np

Il ritardo, l'offset e le colonne jitter dovrebbero essere diverse da zero. I server ntpd che si stanno sincronizzando sono preceduti da un asterisco.

NetworkManager

Nota: ntpd dovrebbe restare in esecuzione quando la rete non funziona, se il demone hwclock è disabilitato, quindi questo non dovrebbe essere necessario.

ntpd può essere acceso/spento a seconda della connessione internet attraverso l'uso dei dispatcher script di NetworkManager. È possibile installare gli script necessari dal repo [community]:

# pacman -S networkmanager-dispatcher-ntpd

Esecuzione in chroot

Nota: ntpd dovrebbe essere eseguito senza i privilegi di amministratore, prima di tentare nell'ambiente chroot (di default, nel pacchetto vanilla di Arch Linux, poiché chroot è relativamente inutile per garantire i processi in esecuzione come utente root.

Editare /etc/conf.d/ntpd.conf e modificare

NTPD_ARGS="-g -u ntp:ntp"

in

NTPD_ARGS="-g -i /var/lib/ntp -u ntp:ntp"

Quindi, editare/etc/ntp.conf per cambiare il percorso del driftfile ed indirizzarlo alla directory chroot, anzichè alla cartella radice reale. Cambiare:

driftfile       /var/lib/ntp/ntp.drift

in

driftfile       /ntp.drift

Creare un ambiente chroot adatto, di modo che getaddrinfo() funzionerà creando idonee cartelle e file (da root):

# mkdir /var/lib/ntp/etc /var/lib/ntp/lib /var/lib/ntp/proc
# touch /var/lib/ntp/etc/resolv.conf /var/lib/ntp/etc/services

ed esegueno il collegamento-montaggio dei suddetti file:

/etc/fstab
...
#ntpd chroot mounts
/etc/resolv.conf  /var/lib/ntp/etc/resolv.conf none bind 0 0
/etc/services	  /var/lib/ntp/etc/services none bind 0 0
/lib		          /var/lib/ntp/lib none bind 0 0
/proc		  /var/lib/ntp/proc none bind 0 0
# mount -a

Infine, riavviare nuovamente il demone:

# rc.d restart ntpd

E' relativamente difficile essere sicuri che la configurazione driftfile sta funionando, senza attendere un po' di tempo, perchè ntpd non legge né scrive molto spesso. Se qualcosa è andato storto, si registrerà un errore; se funziona tutto bene, il timestamp si aggiornerà. Se non si ottengono errori dopo un'intera giornata ed il timestamp viene aggiornato, si dovrebbe essere sicuri del successo.

Alternative

Possibili alternative ad NTPd sono Chrony, una connessione dial-up semplice e specificatamente progettata per sistemi che non sono sempre online, e OpenNTPD, parte del progetto OpenBSD e attualmente non mantenuto per Linux.

Vedere anche

  • Time (per maggiori informazioni sulla gestione del tempo nel computer)

Link esterni