OpenNTPD (Italiano)
OpenNTPD (parte del progetto OpenBSD) è un demone che può essere usato per sincronizzare l'orologio di sistema con time servers in internet utilizzando il Network Time Protocol, e può anche funzionare esso stesso come un time server, se necessario.
Installazione
OpenNTPD può essere installato dal repository [community]:
# pacman -S openntpd
La configurazione di base è già sufficiente se si vuole solamente sincronizzare l'ora del computer locale. Per impostazioni maggiormente dettagliate, il file /etc/ntpd.conf
deve essere editato:
Per sincronizzarsi ad un particolare server, decommentare e inserire le direttive del "server". Si possono trovare gli URL dei server della propria area in www.pool.ntp.org/zone/@.
server ntp.example.org
Le direttive "servers" lavorano nella stessa maniera della direttiva "server", ma, nel caso in cui il nome del DNS risolvesse indirizzi IP multipli, TUTTI loro sarebbero sincronizzati. Quello di base, "pool.ntp.org" è funzionante e dovrebbe andare bene nella maggioranza dei casi.
pool.ntp.org
Qualsiasi numero di direttive di "server" o "servers" possono essere usati.
Se si desidera che il proprio computer sul quale è lanciato OpenNTPD sia anche un server d'orario, semplicemente decommentare ed editare la direttiva "listen".
Ad esempio:
listen on *
resterà in ascolto su tutte le interfacce, e
listen on 127.0.0.1
resterà in ascolto solo sull'interfaccia loopback.
Il proprio server del tempo comincerà ad offrire il servizio solo dopo essersi sincronizzato a un'alta risoluzione. Ciò può richiedere ore, o giorni, dipende dall'accuratezza del proprio sistema.
Se si desidera lanciare OpenNTPD all'avvio, aggiungere openntpd
alla lista DAEMONS nel proprio /etc/rc.conf
dopo il demone del proprio network.
DAEMONS=(syslog-ng network openntpd ...)
Se openntpd è usato solamente per impostare l'ora locale del proprio sistema, può essere tranquillamente messo in background.
DAEMONS=(syslog-ng network @openntpd ...)
Per vedere lo stato della sincronizzazione NTP, si visiti /var/log/daemon.log
e si cerchino le linee con "ntpd".
OpenNTPD aggiusta l'orologio con piccole variazioni alla volta. Ciò è stato fatto per evitare improvvisi, grandi fluttuazioni di tempo nel proprio sistema, che potrebbero comportare problemi a servizi di sistema (ad esempio, quelli relativi a cron). Perciò, ci può volere un pò prima di correggere l'orario.
Se l'orologio non è funzionante per più di 180 secondi si può provare con "ntpd -s -d
" lanciato in una console. Se ntpd è già avviato, si può semplicemente riavviarlo con sudo /etc/rc.d/openntpd restart
, dal momento che il pacchetto Arch di openntpd usa la variabile "-s" di base. Si veda ntpd(1) per maggiori informazioni. Si può anche impostare l'orologio di sistema il più vicino possibile all'ora attuale e quindi permettere a OpenNTPD di completare la sintonizzazione del tempo.
Rendere openntpd dipendente dall'accesso al network
Nel caso si abbia un accesso al network intermittente (si è su un laptop, si utilizza dial-up, ecc.), non ha senso avere openntpd
avviato come demone di sistema all'avvio. Qui ci sono alcune maniere per controllare openntpd
basandosi sulla connessione network presente. Queste istruzioni dovrebbero funzionare anche per ntpd
come spiegato più sotto.
Usando netcfg
Se si sta utilizzando netcfg, si può anche avviare/fermare openntpd come un comando POST_UP/PRE_DOWN nel proprio profilo network:
POST_UP="/etc/rc.d/openntpd start || true" PRE_DOWN="/etc/rc.d/openntpd stop || true"
Naturalmente, si dovrà specificare ciò manualmente per ogni profilo network.
Usando l'invio di NetworkManager
OpenNTPD può essere acceso/spento a seconda della connessione internet attraverso l'uso degli NetworkManager's dispatcher scripts. E' possibile installare gli script necessari dal repo [community]:
# pacman -S networkmanager-dispatcher-openntpd
Usando wicd
Queste istruzioni richiedono wicd 1.7.0 o più recente, che è disponibile nei repository standard di Arch.
Si necessita anche di avere l'accesso alla scrittura al file /etc/wicd/scripts
.
chmod
Si crei uno script shell dentro /etc/wicd/scripts/postconnect/openntpd-start.sh
con il seguente contenuto:
#!/bin/sh /etc/rc.d/openntpd start
In maniera del tutto simile, si crei un altro script di shell dentro /etc/wicd/scripts/predisconnect/openntpd-stop.sh
con il contenuto:
#!/bin/sh /etc/rc.d/openntpd stop
Usando l'hook dhcpcd
Un'altra possibilità è quella di usare l'hook dhcpcd per avviare e fermare openntpd.
Quando dhcpcd riconosce un cambio nello stato lancerà lo script seguente:
/etc/dhcpcd.enter-hook
/usr/lib/dhcpcd/dhcpcd-hooks/*
/etc/dhcpcd.exit-hook
L'esempio seguente usa /etc/dhcpcd.exit-hook
per avviare e fermare openntpd a seconda dello stato di dhcp:
[ "$interface" != "eth0" ] && exit 0 if $if_up; then pgrep ntpd &> /dev/null || /etc/rc.d/openntpd start elif $if_down; then pgrep ntpd &> /dev/null && /etc/rc.d/openntpd stop fi
Risoluzione dei problemi
Errore nella regolazione dell'ora
Se si scopre il proprio orario impostato in maniera scorretta e nei log è presente la dicitura:
openntpd adjtime failed: Invalid argument
Si provi:
ntpd -s -d
Questa è anche la maniera in cui si potrebbe voler sincronizzare manualmente il proprio sistema.
Aumenti del tempo
Avviando openntpd in background può portare ad errori di sincronizzazione tra l'ora attuale e l'orario salvato nel proprio computer. Se si scopre un aumento di differenza temporale tra l'orologio del desktop e l'ora attuale, si provi ad avviare il demone openntpd normalmente e non in background.
Inizializzazione Fallita
Openntpd potrebbe fallire ad avviarsi correttamente se viene avviato prima che il proprio network sia correttamente configurato. In alcuni casi si potrebbe voler rimuovere openntpd
dalla lista DAEMONS in /etc/rc.conf
e aggiungere la linea seguente in /etc/rc.local
:
(sleep 300 && /etc/rc.d/openntpd start) &
Ciò farà sì che il sistema aspetti 5 minuti prima di avviare openntpd, in modo tale da dare un tempo sufficiente al sistema per configurare la connessione. Se le proprie impostazioni network cambiano spesso, si potrebbe anche considerare di riavviare il demone regolarmente tramite cron.