Guida alla Configurazione di NTP su Ubuntu: Mantieni i Tuoi Server Sincronizzati

目次

1. Introduzione: Perché la Sincronizzazione del Tempo è Importante

Problemi Causati dalla Deriva dell’Orologio di Sistema

Nei sistemi Linux, inclusi Ubuntu, mantenere un tempo accurato è cruciale. Sebbene possa sembrare un problema minore di imprecisioni dell’orologio, la deriva del tempo può portare a problemi critici nelle operazioni del server e negli ambienti di esecuzione delle applicazioni.

Ad esempio, possono verificarsi i seguenti problemi:

  • Log Inconsistenti Se i timestamp nei log di sistema e nei log delle applicazioni sono disallineati, diventa difficile individuare la causa dei problemi durante il troubleshooting.
  • Cron Job Malfunzionanti Le attività programmate (come backup ed elaborazione batch) potrebbero non eseguire nei momenti corretti, potenzialmente eseguendosi in momenti inaspettati.
  • Fallimenti di Certificati SSL e Autenticazione di Sicurezza Informazioni temporali accurate sono necessarie per la comunicazione HTTPS e l’autenticazione SSH. Se il tempo di sistema è incorretto, i certificati potrebbero essere considerati “scaduti”, portando a errori di connessione.

Questi problemi possono avere un impatto particolarmente grave quando si operano più server sincronizzati su una rete.

Il Ruolo e l’Importanza di NTP

Per prevenire tali problemi, si utilizza NTP (Network Time Protocol). NTP comunica con server di tempo su internet o una rete locale per correggere automaticamente il tempo del sistema.

Ubuntu offre diversi strumenti relativi a NTP, inclusi ntpd, chrony e systemd-timesyncd. Questo articolo si concentrerà su ntpd (Network Time Protocol daemon), fornendo una spiegazione dettagliata della sua installazione e utilizzo su Ubuntu.

Soprattutto per server destinati a operazioni a lungo termine e sistemi che richiedono consistenza dei log, la stabilità di ntpd è altamente apprezzata.

Il prossimo capitolo introdurrà cos’è ntpd, i suoi ruoli di base e le opzioni disponibili in Ubuntu.

2. Cos’è ntpd? Il Suo Ruolo e Opzioni in Ubuntu

Panoramica e Caratteristiche di ntpd

ntpd (Network Time Protocol Daemon) è un programma daemon che utilizza NTP per mantenere un tempo di sistema accurato. Comunica periodicamente con server NTP su internet o una rete locale e regola automaticamente l’orologio di sistema.

Una caratteristica chiave di ntpd è la sua “sincronizzazione graduale”, che corregge gradualmente le differenze di tempo. Questo design evita cambiamenti improvvisi del tempo che potrebbero impattare negativamente sui sistemi e applicazioni in esecuzione.

Inoltre, ntpd supporta funzionalità avanzate NTP come la modalità attiva simmetrica e l’autenticazione, rendendolo un servizio di sincronizzazione del tempo robusto adatto per ambienti enterprise.

Strumenti di Sincronizzazione del Tempo Disponibili in Ubuntu

Ubuntu offre le seguenti opzioni per la sincronizzazione del tempo:

  • ntpd (pacchetto ntp) Utilizzato ampiamente in ambienti che richiedono operazioni a lungo termine e configurazione dettagliata. Offre eccellente flessibilità e stabilità, consentendo sincronizzazione del tempo ad alta precisione connettendosi a server NTP pubblici.
  • chrony Un’alternativa a ntpd che ha guadagnato attenzione per la sua alta accuratezza e velocità di sincronizzazione rapida dopo l’avvio. Funziona bene in ambienti a bassa specifica e macchine virtuali, e molte distribuzioni moderne stanno adottando chrony come predefinito.
  • systemd-timesyncd Un servizio di sincronizzazione del tempo leggero abilitato di default in Ubuntu 20.04 e successive. È semplice e facile da usare, ma le sue funzionalità sono limitate, rendendolo inadatto per configurazioni avanzate o per operare come server NTP locale.

Motivi per Scegliere ntpd e i Suoi Vantaggi

Il motivo principale per adottare ntpd in Ubuntu è la sua affidabilità e stabilità. È una scelta forte, specialmente nei seguenti casi:

  • Quando è richiesta alta accuratezza del tempo per server a lungo termine.
  • Quando si vuole costruire un server NTP all’interno di una rete locale.
  • Per applicazioni enterprise che richiedono autenticazione e controllo avanzato.

Inoltre, ntpd ha il vantaggio di essere compatibile con molti sistemi esistenti e di avere una comprovata esperienza, che riduce le preoccupazioni durante l’implementazione.

3. Installazione e Configurazione Iniziale di ntpd su Ubuntu

Procedura di Installazione di ntpd

Per utilizzare ntpd su Ubuntu, è necessario prima installare il pacchetto ntp. È possibile installarlo facilmente seguendo i passaggi seguenti:

sudo apt update
sudo apt install ntp

Questo comando installerà automaticamente ntpd e i suoi file correlati. Nota che in alcune versioni di Ubuntu, chrony o systemd-timesyncd potrebbero essere abilitati per impostazione predefinita. In tali casi, si consiglia di disabilitarli o rimuoverli prima.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

Abilitazione del Servizio e Verifica dell’Avvio

Una volta completata l’installazione, abilita il servizio ntpd e verifica il suo stato di avvio.

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

Se il comando status mostra “active (running)”, significa che ntpd è stato avviato con successo.

Controllo e Modifica del File di Configurazione Iniziale

La configurazione di ntpd è definita nel file /etc/ntp.conf. La configurazione predefinita dopo l’installazione include diversi server NTP predefiniti (solitamente dalla serie pool.ntp.org).

Prima, controlliamo il contenuto del file di configurazione.

cat /etc/ntp.conf

Se si desidera specificare server negli Stati Uniti, è possibile modificarlo come segue:

server us.pool.ntp.org iburst

L’opzione iburst è raccomandata poiché migliora la velocità di sincronizzazione durante la connessione iniziale.

Dopo aver apportato modifiche alla configurazione, riavvia il servizio ntpd per applicarle.

sudo systemctl restart ntp

Verifica della Sincronizzazione Automatica dell’Ora del Sistema

Dopo l’avvio, ntpd sincronizza automaticamente l’ora con il server. Per verificare se funziona correttamente, il seguente comando è utile:

ntpq -p

Questo comando consente di visualizzare un elenco di server NTP connessi e informazioni dettagliate come ritardo e offset.

4. Configurazione e Personalizzazione dei Server NTP

Selezione di Server NTP Raccomandati

Un aspetto importante della configurazione di ntpd è la selezione dei server NTP con cui sincronizzare. Quando si connette tramite internet, specificare server NTP affidabili negli Stati Uniti può garantire una sincronizzazione dell’ora più stabile.

I server NTP pubblici tipici negli USA includono:

  • us.pool.ntp.org (Un pool di server NTP negli Stati Uniti)
  • È possibile trovare anche pool regionali come north-america.pool.ntp.org o pool specifici per stato se necessario.

Questi server sono gestiti basati su orologi atomici ad alta precisione e possono essere utilizzati per uso personale senza permesso speciale.

È possibile configurare la sincronizzazione con questi server scrivendo quanto segue in /etc/ntp.conf:

server us.pool.ntp.org iburst
server north-america.pool.ntp.org iburst

Elementi di Configurazione Dettagliati in ntp.conf

Oltre alla specifica dei server NTP, /etc/ntp.conf consente un controllo fine del comportamento di ntpd. Ecco alcuni elementi di configurazione tipici:

  • direttiva restrict Imposta restrizioni e permessi per le connessioni dai client. Per motivi di sicurezza, le connessioni non necessarie dovrebbero essere limitate. Esempio: Consentire connessioni dalla rete locale
      restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
  • driftfile Specifica il file che registra la deriva dell’orologio di sistema (deviazioni sottili). Di solito, l’impostazione predefinita va bene.
      driftfile /var/lib/ntp/ntp.drift
    

Costruzione di un Server NTP all’Interno di una Rete Locale

È possibile utilizzare anche ntpd su Ubuntu per operare come un server NTP che distribuisce l’ora ad altri dispositivi all’interno della rete locale. Questa configurazione è efficace in ambienti senza accesso a internet o dove è richiesta una gestione coerente dell’ora su più dispositivi.

Ecco un esempio della procedura di configurazione:

  1. Aggiungi una regola restrict a /etc/ntp.conf per consentire l’accesso locale: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  2. Sui PC client, configurali per fare riferimento a questo server NTP locale: server 192.168.1.10 iburst # IP locale del server NTP
  3. Apri la porta del server NTP (consenti la porta UDP 123 nel firewall): sudo ufw allow 123/udp

Se la comunicazione è bloccata, la sincronizzazione dell’ora fallirà e il comando ntpq non mostrerà lo stato di connessione con il server.

5. Verifica dell’Operazione di ntpd e Risoluzione dei Problemi

Come Controllare lo Stato del Servizio

Per verificare che ntpd stia funzionando correttamente, usa il seguente comando:

sudo systemctl status ntp

Se visualizza active (running), ntpd sta operando normalmente. Se mostra inactive o failed, potrebbe esserci un errore di configurazione o un problema di dipendenza che impedisce l’avvio.

Per controllare i log in dettaglio, il seguente comando è utile:

journalctl -u ntp

Questo ti permette di visualizzare la cronologia di avvio e i messaggi di errore del servizio ntpd in ordine cronologico.

Comando per Controllare lo Stato di Sincronizzazione (ntpq -p)

Il comando ntpq -p è quello più comunemente usato per verificare se ntpd sta sincronizzando correttamente con i server NTP.

ntpq -p

Output di esempio:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.cloudflare. 172.64.250.202  2 u   57   64  377    0.876   -0.012   0.009
+ntp.ubuntu.com   170.247.169.130  2 u   49   64  377    1.234   +0.056   0.015
 stratum2.ntp.br 162.229.5.20    2 u   51   64  377  105.234   -0.123   0.021
 LOCAL(0)        .LOCL.         10 l   --   64    0    0.000    0.000   0.000

I significati di ogni colonna sono i seguenti:

  • remote : Il nome del server NTP connesso
  • st : Lo stratum del server (livello gerarchico), dove 1 è il più preciso (ad es., orologio atomico)
  • reach : Un registro a spostamento di 8 bit che indica la cronologia di successo degli ultimi otto tentativi di connessione
  • delay : Il ritardo di andata e ritorno della rete in millisecondi (ms)
  • offset : La differenza di tempo tra il tuo sistema e il server in millisecondi (ms)
  • jitter : La varianza statistica dell’offset su diversi campioni

Il server con un asterisco (*) all’inizio è la sorgente di sincronizzazione attualmente selezionata.

Errori Comuni e Loro Soluzioni

Ecco alcuni errori comuni che potresti incontrare durante l’implementazione di ntpd e le relative soluzioni:

1. Niente visualizzato con ntpq -p / reach è 0

  • Causa : La porta UDP 123 potrebbe essere bloccata da un firewall o un router.
  • Soluzione : Controlla le impostazioni del firewall sia sul server che sul client per assicurarti che il traffico NTP sia consentito.
    sudo ufw allow 123/udp
    

2. Viene visualizzato System clock not synchronized

  • Causa : ntpd potrebbe non essere in esecuzione, o potrebbe essere in conflitto con un altro servizio di sincronizzazione (come systemd-timesyncd).
  • Soluzione : Disabilita eventuali servizi di sincronizzazione dell’ora non necessari e riavvia ntpd.
    sudo systemctl disable systemd-timesyncd
    sudo systemctl restart ntp
    

3. Impossibile risolvere i nomi dei server NTP

  • Causa : Problemi di configurazione DNS o problemi di rete.
  • Soluzione : Controlla se la risoluzione dei nomi funziona (ad es., usando ping us.pool.ntp.org) e correggi le impostazioni del server DNS se necessario.

4. L’ora è significativamente errata ma non si sincronizza

  • Causa : ntpd non regola automaticamente l’ora se la differenza è troppo grande (per motivi di sicurezza).
  • Soluzione : Imposta manualmente l’ora iniziale e poi riavvia ntpd.
    sudo ntpd -gq  # Perform an immediate synchronization once
    sudo systemctl restart ntp
    

Per il Monitoraggio Continuo

In un ambiente di produzione, è consigliabile impostare uno script per registrare periodicamente l’output di ntpq -p e creare avvisi per anomalie. Notare interruzioni improvvise nei log o un valore reach costantemente basso può aiutare nella rilevazione precoce dei problemi.

6. Confronto di ntpd con Altri Strumenti di Sincronizzazione del Tempo

Principali Strumenti di Sincronizzazione del Tempo Utilizzati in Ubuntu

Diversi strumenti sono disponibili per la sincronizzazione del tempo in ambienti Ubuntu. Ognuno ha le sue caratteristiche, e la scelta dipende dall’uso previsto e dai requisiti di sistema. I tre principali strumenti sono:

  • ntpd (ntp package)
  • chrony
  • systemd-timesyncd

Comprendere le differenze tra loro ti aiuterà a scegliere il metodo di sincronizzazione ottimale per il tuo ambiente.

Caratteristiche di ntpd

  • Pro
  • Di lunga data e stabile con affidabilità molto elevata.
  • Ricco di funzionalità e permette una configurazione dettagliata (configurazione server NTP locale, autenticazione, modalità simmetriche, ecc.).
  • Altamente compatibile con server NTP pubblici, con abbondanti informazioni di risoluzione problemi disponibili.
  • Contro
  • La sincronizzazione iniziale dopo l’avvio può talvolta richiedere un po’ di tempo.
  • L’adattabilità agli ambienti di rete moderni (virtualizzazione, reti variabili) è leggermente inferiore.

Caratteristiche di chrony

  • Pro
  • Sincronizzazione iniziale rapida, correggendo rapidamente le differenze di tempo dopo l’avvio.
  • Alta precisione anche in macchine virtuali e ambienti di rete variabili (laptop, utilizzo VPN).
  • Capacità di apprendimento autonomo (migliora la precisione in base alle condizioni circostanti), spesso fornendo una precisione migliore di ntpd.
  • Contro
  • La configurazione per operare come server NTP locale è leggermente più complessa.
  • La documentazione e gli esempi sono minori rispetto a ntpd.

Caratteristiche di systemd-timesyncd

  • Pro
  • Abilitato per impostazione predefinita in Ubuntu 20.04 e successive, molto facile da installare e gestire.
  • Funzionalità di sincronizzazione minime con consumo di risorse molto basso.
  • Ben integrato con systemd, rendendolo facile da usare con configurazioni Ubuntu standard.
  • Contro
  • Funzionalità limitata, non può essere utilizzato per configurazioni manuali avanzate o come server NTP locale.
  • Precisione e funzionalità di logging sono basilari, non adatte per sistemi su larga scala.

Tabella di Confronto degli Strumenti (Riepilogo)

Featurentpdchronysystemd-timesyncd
AccuracyHighVery HighNormal
Initial Sync SpeedCan be slowVery FastNormal
Local NTP Server○ (Slightly complex)× (Not possible)
Configuration FlexibilityHighMediumLow
Adaptability to Virtual Environments
Proven Track Record & Information
Recommended Use CasesServers, organizational uniformityVirtual environments, laptopsSingle PCs, beginners

Raccomandazioni per Scenario di Utilizzo

  • Utilizzo Server (specialmente ambienti sempre accesi)ntpd o chrony sono raccomandati. Stabilità e precisione sono importanti.
  • Ambienti Cloud, Macchine Virtuali, Laptopchrony è il più flessibile e preciso.
  • Sincronizzazione del Tempo Semplice per un Singolo PCsystemd-timesyncd è sufficiente.

7. Domande Frequenti (FAQ)

D1. ntpd è installato per impostazione predefinita su Ubuntu 22.04?

R1.
No, ntpd non è installato per impostazione predefinita su Ubuntu 22.04. systemd-timesyncd è abilitato per impostazione predefinita per la sincronizzazione del tempo di base. Per utilizzare ntpd, è necessario installare esplicitamente il pacchetto ntp.

sudo apt install ntp

Dopo l’installazione, è anche raccomandato disabilitare systemd-timesyncd per evitare conflitti.

D2. ntpq -p non viene visualizzato correttamente. Cosa dovrei fare?

R2.
Diverse ragioni potrebbero causare questo:

  • Servizio non in esecuzione : Controlla con sudo systemctl status ntp e avvia se necessario.
  • Comunicazione con server NTP fallita : Controlla se il tuo firewall sta bloccando la porta UDP 123.
  • Errori nel file di configurazione : Verifica che non ci siano errori di battitura in /etc/ntp.conf .

Prima, controlla il funzionamento di base con il seguente comando:

ntpq -p

Se l’output è vuoto o il valore reach è 0, potrebbe esserci un problema di comunicazione con i server esterni.

D3. Dovrei scegliere ntpd o chrony?

R3.
Il miglior strumento dipende dal tuo ambiente di utilizzo:

  • Server fisici a lungo termine o costruzione di un server NTP localentpd è raccomandato per la sua stabilità.
  • Ambienti virtuali, laptop o ambienti di rete variabili (Wi-Fi, ecc.)chrony offre maggiore accuratezza e velocità.
  • È sufficiente un semplice aggiustamento dell’orasystemd-timesyncd può gestire questo facilmente.

Q4. Cosa fa il comando ntpd -gq?

A4.
ntpd -gq è un comando che esegue una sincronizzazione una tantum con il server NTP e poi esce immediatamente.

  • -g : Consente salti di tempo significativi per correggere grandi discrepanze.
  • -q : Esce dopo aver sincronizzato una volta (non funziona come un demone).

Questo comando può essere utilizzato per impostare inizialmente l’ora corretta se l’orologio di sistema è significativamente errato e non viene corretto dal servizio regolare ntpd.

Q5. C’è qualche beneficio nel specificare più server NTP?

A5.
Sì, specificare più server NTP fornisce ridondanza e migliora l’affidabilità. Se un server fallisce o diventa irraggiungibile, il sistema può ancora ottenere informazioni sull’ora dagli altri server, garantendo una sincronizzazione stabile.

Esempio di configurazione (/etc/ntp.conf):

server us.pool.ntp.org iburst
server time.google.com iburst
server ntp.cloudflare.com iburst

8. Conclusione: Migliora l’Affidabilità del Sistema con una Sincronizzazione Stabile dell’Ora

Ribadendo i Vantaggi di ntpd

Nei sistemi Ubuntu, una sincronizzazione accurata dell’ora non è solo una questione di comodità, ma un elemento cruciale che impatta direttamente sicurezza, risoluzione dei problemi, gestione dei log e accuratezza dei processi automatizzati.

Questo articolo ha spiegato in modo completo le basi di NTP (Network Time Protocol), il meccanismo di sincronizzazione dell’ora usando ntpd, metodi di installazione, personalizzazione della configurazione, verifica del funzionamento e persino confronti con altri strumenti.

Consigli per i Lettori

La scelta dello strumento di sincronizzazione dell’ora da adottare in Ubuntu dipende dallo scopo del sistema, dalla configurazione e dai requisiti di disponibilità.
Tuttavia, il principio che “un’operazione stabile senza un’ora accurata è impossibile” è valido per tutti gli ambienti.

  • Per uso server e quando la gestione dei log è importante → Configura correttamente ntpd o chrony .
  • Per uso semplice su un singolo PCsystemd-timesyncd offre un’implementazione facile.

L’accuratezza della sincronizzazione dell’ora potrebbe passare inosservata nelle operazioni quotidiane, ma servirà senza dubbio come punto di riferimento prezioso durante la risoluzione dei problemi.

Ti incoraggiamo a usare questo articolo come guida per impostare il meccanismo ottimale di sincronizzazione dell’ora per il tuo ambiente Ubuntu.

侍エンジニア塾