NTP (Network Time Protocol) viene utilizzato per sincronizzare l'ora del sistema con un'ora di riferimento fornita da server specializzati. Questo articolo copre come configurare NTP su vari sistemi operativi e dispositivi, iniziando con una guida completa su come configurare un server NTP su Linux.
Mostreremo la configurazione della sincronizzazione usando Ubuntu, ma questa guida si applica anche a Debian e alla maggior parte dei sistemi basati su Linux. Abbiamo suddiviso le istruzioni in tre parti: la prima copre l'installazione del server NTP, la seconda spiega come sincronizzare i client NTP e la terza copre le impostazioni avanzate di sincronizzazione.
Per seguire questa guida, avrai bisogno di:
Un server cloud con Ubuntu installato.
Un utente root o un utente con privilegi sudo.
Nano o un altro editor di testo installato.
Questi passaggi ti guideranno nell'installazione e nella preparazione del server NTP per la configurazione.
Aggiorna l'indice dei repository per assicurarti di poter scaricare le versioni più recenti del software. Usa il seguente comando:sudo apt-get update
Installa il server NTP:sudo apt-get install ntp
Conferma l'installazione scegliendo "Y" se richiesto (Y/N). Attendi che il software venga scaricato e installato.
Verifica l'installazione:sntp --version
L'output dovrebbe mostrare il numero di versione e l'ora di installazione.
Connettiti al server più vicino.
Il server dovrebbe ricevere l'ora corretta per impostazione predefinita, ma è meglio connettersi a un server locale per maggiore affidabilità. Per fare ciò, modifica il file ntp.conf situato in /etc/ntp.conf. Aprilo con nano (saranno necessari privilegi sudo) inserendo:sudo nano /etc/ntp.conf
Nel file aperto, vedrai quattro righe che abbiamo evidenziato in arancione come riferimento: Questi sono i pool predefiniti che sostituiremo con pool locali (ad esempio, per gli Stati Uniti, possiamo usare server NTP da questa pagina). Dopo aver sostituito le righe, salva e chiudi ntp.conf premendo Ctrl+O e Ctrl+X.
Riavvia il server:
sudo service ntp restart
Controlla lo stato del server:sudo service ntp status
L'output dovrebbe indicare "Active (running)" su una delle prime righe (Active) e l'ora di avvio del server.
Configura il firewall.
Per consentire l'accesso dei client al server, apri la porta UDP 123 utilizzando UFW con il seguente comando:sudo ufw allow from any to any port 123 proto udp
L'installazione è terminata e il server è in esecuzione. Ora puoi procedere con la configurazione aggiuntiva.
I passaggi seguenti consentiranno ai sistemi client di sincronizzarsi con il nostro server NTP, che fungerà da fonte principale di tempo.
Verifica la connessione
Per verificare la configurazione di rete per NTP, inserisci il seguente comando nel terminale:sudo apt-get install ntpdate
Specifica l'indirizzo IP e il nome host
Per configurare l'IP e il nome host del server, modifica il file hosts situato in /etc/hosts:sudo nano /etc/hosts
Aggiungi i dati pertinenti alla terza riga dall'alto (l'indirizzo qui sotto è solo un esempio; sostituiscilo con l'IP reale del tuo server NTP):192.168.154.142 ntp-server
Premi Ctrl+X per uscire e salva le modifiche premendo Y. In alternativa, se hai un server DNS, puoi eseguire questo passaggio lì.
Verifica la sincronizzazione del client con il server
Per verificare se la sincronizzazione è attiva tra il server e il client, inserisci:sudo ntpdate ntp-server
L'output mostrerà il ritardo. Una differenza di poche millisecondi è normale, quindi puoi ignorare i valori piccoli.
Disabilita il servizio timesyncd
Questo servizio sincronizza l'ora locale del sistema, ma non ne abbiamo bisogno, poiché i nostri client si sincronizzeranno con il server NTP. Disabilitalo con:sudo timedatectl set-ntp off
Installa NTP sul sistema client
Installa NTP sul client con questo comando:sudo apt-get install ntp
Imposta il tuo server NTP come riferimento principale
Per assicurarti che i client si sincronizzino specificamente con il tuo server, apri il file ntp.conf e aggiungi la seguente riga:server NTP-server-host prefer iburst
La direttiva prefer segna il server come preferito, e iburst consente di fare più richieste al server per una maggiore precisione nella sincronizzazione. Salva le modifiche premendo Ctrl+X e conferma con Y.
Riavvia il server
Riavvia il server NTP con questo semplice comando:sudo service ntp restart
Controlla la coda di sincronizzazione
Infine, controlla lo stato della sincronizzazione inserendo:ntpq -ps
Questo comando mostrerà l'elenco dei server nella coda di sincronizzazione, incluso il tuo server NTP come fonte designata.
Ora che abbiamo configurato il server NTP e sincronizzato le macchine client, torniamo al file ntp.conf (che si trova in /etc/ntp.conf). Questo file contiene configurazioni aggiuntive per garantire una sincronizzazione robusta con fonti esterne.
Segna il server o il gruppo di server più affidabile con la direttiva prefer che abbiamo utilizzato in precedenza. Ad esempio:
server 1.north-america.pool.ntp.org prefer
La direttiva server indica un server specifico, mentre pool può essere utilizzato per specificare un gruppo di server. Non dimenticare la riga server 127.127.1.0 alla fine della lista dei pool, che utilizza l'ora del sistema se la connessione viene persa.
Assicurati che le seguenti righe siano presenti nel ntp.conf:
restrict default kod notrap nomodify nopeer noquery
La comando default applica questi parametri come valori predefiniti per tutte le comandi restrict:
kod (Kiss-o’-Death) limita la velocità delle richieste.
notrap blocca l'accettazione dei comandi di controllo.
nomodify limita i comandi che potrebbero alterare lo stato del server.
nopeer impedisce la sincronizzazione con host esterni.
noquery blocca le richieste di query.
Per IPv4, usa -4 prima di default, e per IPv6, usa -6.
Ecco un esempio di utilizzo di alcuni di questi comandi. La seguente riga consente la sincronizzazione dei nodi in una rete specifica, limitando però questi nodi dal ricevere comandi di controllo o modificare lo stato:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
Le righe seguenti sono necessarie affinché il server possa comunicare con se stesso:
restrict 127.0.0.1
restrict ::1
Non dimenticare di riavviare il server dopo aver effettuato queste modifiche.
Per verificare se NTP funziona correttamente, usa il comando ntpq -p. Con una configurazione corretta, l'output dovrebbe mostrare una tabella con colonne simili a questa: Nella prima colonna, vedrai l'indirizzo del server di sincronizzazione, seguito dal server principale, dal livello di strato (colonna st) e dalla colonna di tipo (t). Le tre colonne successive mostrano i dettagli sull'ultimo tempo di sincronizzazione, sull'intervallo di sincronizzazione e sulla fiabilità (dove 377 indica otto tentativi di sincronizzazione riusciti con quel server). Le ultime due colonne mostrano la differenza di tempo tra il server sincronizzato e il server di riferimento, così come il ritardo.
Fai attenzione ai simboli nella prima colonna prima dell'indirizzo IP:
Un simbolo "+" indica un server affidabile per la sincronizzazione.
Un "-" significa il contrario, e
Un "*" indica il server attualmente scelto per la sincronizzazione.
Ogni tanto potrebbe apparire una "x", il che significa che il server non è disponibile.
Per assicurarti che il server distribuisca l'ora corretta, esegui il comando ntpdate da un altro sistema, specificando l'indirizzo IP del server NTP che vuoi verificare. L'output dovrebbe somigliare a questo:
adjust time server (indirizzo IP qui) offset 0.012319 sec
Il numero rappresenta il ritardo. Un ritardo di circa 0,01 secondi (12 millisecondi) è perfettamente accettabile.
Ora che abbiamo completato la configurazione su Linux, vediamo come configurare il protocollo NTP su Windows.