Network Time Protocol daemon (Italiano)

From ArchWiki
Revision as of 20:33, 6 January 2012 by Icetux (Talk | contribs) (Utilizzo senza demone: added sentence regarding -g)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

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.

Installazione

ntp è disponibile nei repository ufficiali.

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. 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
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 man ntp_acc. 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.

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 man ntp.conf 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}).

Template:Gentoo (Italiano)

Utilizzo senza demone

Se si vuole semplicemente sincronizzare l'orologio di sistema durante il boot senza utilizzare ntpd come demone, è possibile aggiungere la seguente linea a /etc/rc.local:

ntpd -qg

Questo processo ha un comportamento analogo al programma ntpdate, che è ormai 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 causare un'errata impostazione del fuso orario, il guasto del chip orologio, o semplicemente un lunghissimo periodo di abbandono. Se in questi casi si preferisce non impostare l'orologio e riportare l'errore in syslog, rimuovere -g.

Ad esempio, si può aggiungere la linea ntpd -qg & al proprio /etc/rc.local per avviarlo al boot.

Nota: Perché questo metodo funzioni bisogna assicurarsi che, quando rc.local viene eseguito, la connessione alla rete sia già stata inizializzata (ad esempio non si dovrebbero avviare in background in /etc/rc.conf demoni essenziali per il funzionamento della rete stessa)
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.

Controllare che la lista DAEMONS in /etc/rc.conf includa hwclock, per assicurarsi che l'orologio hardware sia aggiornato periodicamente:

/etc/rc.conf
...

DAEMONS=(... hwclock ...)
Attenzione: Se qualcos'altro si prende cura dell'aggiornamento dell'orologio hardware, ad esempio un altro sistema operativo in dual boot, si dovrebbe evitare di avviare hwclock.

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):

# 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 ...)

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

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

Nota: Prima di provare quest'opzione, assicurarsi che ntp abbia già creato /var/lib/ntp/ntp.drift.

Creare il gruppo ntp e l'utente ntp:

# groupadd ntp
# useradd -r -d /var/lib/ntp -g ntp -s /bin/false ntp

Cambiare il proprietario della cartella ntp con l'utente/gruppo ntp:

# chown -R ntp:ntp /var/lib/ntp

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

NTPD_ARGS="-g"

in

NTPD_ARGS="-g -u ntp:ntp"

Infine, riavviare il demone:

# /etc/rc.d/ntpd restart

Esecuzione in chroot

Nota: Prima di questo, completare la sezione precedente, inerente l'esecuzione da utente non-root, 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