Network Time Protocol daemon (Italiano)
Quest'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.
Contents
Installazione
Template:Package Official è disponibile in [extra].
Configurazione
Configurare la connessione per server NTP
La prima cosa che bisogna definire in Template:Filename sono i server con cui il computer dovrà sincronizzarsi. Si noti che alcuni valori di default sono già presenti, quindi si sincronizza semplicemente con `ntpd -q`. 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:
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 è 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.
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
La documentazione completa per l'opzione "restrict" è reperibile in Template:Codeline. Per istruzioni dettagliate vedere http://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):
Effettivamente, definire un file di log non è obbligatorio, ma è sempre una buona idea per avere un resoconto delle operazioni di ntpd.
Altre risorse inerenti la configurazione NTP
Infine, mai dimenticarsi delle pagine di manuale: c'è la possibilità che Template:Codeline possa rispondere a molti dubbi che siano rimasti (leggere anche le pagine di manuale correlate: Template:Codeline).
Sincronizzare l'orologio senza usare il demone
Se si vuole semplicemente sincronizzare l'orologio di sistema durante il boot senza utilizzare ntpd come demone, è possibile aggiungere la seguente linea a Template:Filename:
ntpd -qg &
Questo processo ha un comportamento analogo al programma ntpdate, che è ormai deprecato.
Controllare che la lista DAEMONS in Template:Filename includa hwclock, per assicurarsi che l'orologio hardware sia aggiornato periodicamente:
Avvio come demone
Avvio di ntpd
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):
Avviare il demone ntpd: Template:Cli
Aggiungere ntpd alla lista DAEMONS per avviarlo automaticamente al boot e assicurarsi di disabilitare hwclock: Template:File
NetworkManager
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]:
Avvio come utente non-root
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).
Creare il gruppo ntp e l'utente ntp:
Cambiare il proprietario della cartella ntp con l'utente/gruppo ntp:
Editare Template:Filename e cambiare
NTPD_ARGS="-g"
in
NTPD_ARGS="-g -u ntp:ntp"
Infine, riavviare il demone:
Esecuzione in chroot
Editare Template:Filename e modificare
NTPD_ARGS="-g -u ntp:ntp"
in
NTPD_ARGS="-g -i /var/lib/ntp -u ntp:ntp"
Quindi, editareTemplate:Filename 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):
ed esegueno il collegamento-montaggio dei suddetti file:
Infine, riavviare nuovamente il demone:
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)