Menu Chiudi

Come Sincronizzare l’orario di un Server CentOS 7 con ntp

Sincronizzare data e ora di Centos 7

Sincronizzare l’ora di un server CentOS con ntp, è una pratica con la quale ogni Sysadmin, prima o poi dovrà confrontarsi. La possibilità di avere il proprio server costantemente sincronizzato con un orario centrale affidabile, solitamente è il modo migliore per evitare tutti quegli inutili grattacapi che possono sorgere proprio a causa del disallineamento di data e ora dell’orologio interno del sistema.

Considerando che anch’io in passato ho avuto la necessità di confrontarmi con la sincronizzazione dell’orario da server NTP, ho pensato bene di creare questa sintetica guida, sicuro che tornerà utile ad altri sysadmin.

E perché no; anche come appunti da avere sempre a portata di mano, nel caso che un domani ne dovessi avere nuovamente bisogno (anche perché il mestiere di sysadmin è talmente vasto che a volte la memoria può fare cilecca).

Cosa puoi trovare in questa guida

Questa guida è organizzata secondo alcuni punti principali, organizzati come segue:

  • Una breve introduzione ai problemi tipici della sincronizzazione degli orari dei server.
  • Breve descrizione del NTP.
  • Procedura di impostazione ed attivazione del servizio NTP.
  • Verifica di corretto funzionamento del servizio NTP con le impostazioni applicate.

Inoltre, all’interno di ogni paragrafo potrai trovare alcuni approfondimenti che ho pensato di inserire per descrivere più in dettaglio la tematica.

Cerchiamo di andare con ordine

Introduzione

Che si tratti di un server virtuale, oppure di una installazione di test (quei server che installiamo solo per fare qualche prova), oppure di server in produzione h24, il problema non cambia: la sincronizzazione dell’orario è sempre un aspetto fondamentale delle impostazioni di base del sistema.

Molto spesso, viene trascurato perché molti ritengono erroneamente che sia una inutile perdita di tempo, ma così facendo rischiano di complicarsi la vita (niente paura: solo quella da sysadmin) poiché prima o poi si troveranno in qualche modo a dover fare i conti con il problema degli gli orari.

Come?

  • Con le date di creazione o ultima modifica dei file nel filesystem.
  • Con gli orari (noti come Timestamp) contenuti nelle righe dei file di log.
  • Con applicazioni che confidano nella correttezza dell’orologio di sistema (ad esempio il cron di sistema)

Insomma, mantenere l’orologio di sistema perfettamente aggiornato è molto più che sapere che ore sono con precisione per non perdere il programma preferito in TV.

Perché sincronizzare l’orario con ntp è così importante?

Come ho già accennato, alcuni ritengono che per certi tipi di installazioni, la sincronizzazione dell’orario del server sia un inutile e fastidioso task, che possono tranquillamente evitare.

Personalmente credo che sia uno di quei task cui non si può prescindere. Tant’è che anche i processi di installazione delle maggiori distribuzioni GNU Linux (Debian, Ubuntu, Centos, Fedora, ma quasi tutte, direi) si soffermano sull’impostazione dell’orario, proprio mentre si sta installando un sistema ex novo. Da notare, che alcune distribuzioni più recenti “sorvolano”, almeno apparentemente, questa impostazione, ma questo non vuol dire che la sincronizzazione dell’ora non sia impostata con alcuni valori di default.

C’è da dire che ormai molti moderni programmi di installazione dei sistemi operativi più noti, sono in qualche modo in grado di determinare sia la zona geografica che l’orario, durante le fasi dell’installazione; a patto che durante queste fasi l’elaboratore è connesso alla rete.

Anche il Fuso Orario (Timezone) è importante

Ebbene Si. Anche la corretta impostazione del Fuso Orario ha la sua grande importanza. Infatti, se si imposta il fuso orario sbagliato, l’orario del sistema potrebbe essere inaffidabile; anche se a prima vista potrebbe sembrare corretto, a confrontarlo con il nostro super preciso orologio da polso.

Tavola dei Fusi Orari
Source: https://en.wikipedia.org/wiki/Time_zone#/media/File:World_Time_Zones_Map.png – Based on File:CIA WorldFactBook Time Zones.svg, Pubblico dominio.

A guardare bene la struttura dei fusi orari, si nota subito che fanno tutti riferimento all’ora UTC (Universal Standard Time); avrai anche notato che non sono tutti uguali:

  • Alcuni non sono multipli interi dell’ora UTC (Es. Indian Stndard Time è +5:30 rispetto ad UTC, mentre il Nepal è UTC +5:45)
  • Non hanno tutti la stessa estensione (Es. alcuni coprono un’intera nazione che ne occuperebbe almeno 2, come Brasile, Argentina ed alcuni altri)
  • Alcuni paesi occupano più fusi orari (Es. gli Stati Uniti d’America ne occupa ben 6)
  • L’Europa (che non è una nazione) utilizza, per comodità, 3 fusi orari: Western European Time, Central European Time ed Eastern European Time. Ma ogni stato adotta l’orario che ritiene più opportuno.
Leggi anche:   Come accedere con Remote Desktop di Windows a Xubuntu

Tanto per chiarire: alcune regole sono codificate, mentre altre, sono lasciate alla nazione che decide secondo propri metodi, che possono essere politici, geografici o altro.

Non Dimenticare l’Ora Legale!

Una ulteriore complicazione della gestione degli orari nei server, consiste nell’impostare correttamente l’inizio e la fine dell’Ora Legale, ovvero, quando all’orario va sommata l’ora legale (ovviamente per quei paesi in cui questa è adottata).

Ora Legale
Image by: Paul Eggert – based on Image:BlankMap-World-Subdivisions.PNG, plus the data in the tz database, plus data in the maps on the INMS’s Time Zones & Daylight Saving Time page.
CC BY-SA 3.0

Ma anche qui, ci sono dei distinguo da fare:

  • Solo alcune nazioni utilizzano l’Ora Legale (in blu nella mappa).
  • Alcune nazioni hanno adottato l’ora legale in passato (in arancio nella mappa).
  • Alcune nazione non hanno mai adottato l’ora legale (in rosso nella mappa).

Inoltre:

  • Non tutte le nazioni che adottano l’ora legale, questa ha inizio e termina nello stesso giorno dell’anno.
  • Alcune nazioni hanno adottato l’ora legale solo recentemente.
  • L’elenco dei paesi che adottano l’ora legale è soggetto a cambiamenti.

Che cos’è NTP

NTP (Network Time Protocol) è il protocollo di rete utilizzato da sistemi ed apparati connessi alla rete, per sincronizzare il proprio orologio interno con quello reso disponibile da alcuni specifici server demandati ad assolvere questo compito. Spesso con NTP viene anche identificato il servizio erogato dai server (servizio NTP, appunto), per l’aggiornamento dell’orario da parte dei client.

È strutturato in modo che più master server NTP possono fornire l’ora corrente ai client che ne fanno richiesta. I client, a loro volta, possono offrire il servizio NTP ad altri client in una struttura nota come stratum.

architettur server ntp
Architettura tipica di un servizio ntp.

Commentando l’immagine qui sopra, possiamo dire che, gli stratum sono equivalenti ai livelli di “vicinanza” (passami il termine) all’orologio (o agli orologi) centrale che scandisce l’ora esatta.

Più precisamente, al livello Zero, altrimenti detto: stratum 0, abbiamo gli orologi atomici; ovvero, tutti quegli strumenti a bassa latenza che mettono a disposizione l’orario esatto, per così dire “di prima mano”.

Al livello sottostante, stratum 1 si trova una serie di server NTP ad alta affidabilità (Primary Servers), in grado di distribuire l’ora esatta ai server centrali che ne fanno richiesta.

All’ulteriore livello di stratum 3, si trovano quei server NTP che, oltre all’alta affidabilità, hanno anche una elevata capacità per rispondere alle numerose richieste provenienti da internet.

Infine, negli stratum 4 ed oltre, ci sono tutti i client che fanno le richieste NTP per aggiornare il proprio orologio di sistema.

Qualche “Pillola” di NTP

  • Il protocollo NTP utilizza la porta UDP/123 definito dallo IETF tramite gli standard RFC 778, RFC 891, RFC 956 e RFC 1305.
  • Se opportunamente configurato, il servizio ntpd è in grado di acquisire l’orario da uno o più server della rete e rendere disponibile localmente l’orario ai client (tipicamente ai PC) che ne fanno richiesta.
  • Il Servizio NTP è solitamente noto come ntpd, ovvero, il demone che gestisce tutte le funzionalità stabilite dal protocollo.
  • Il servizio NTP è tipicamente reso disponibile su almeno un server della della rete aziendale in modo che i client non abbiano necessità di accedere alla rete esterna per sincronizzare l’ora.
  • Ogni client può aggiornare il proprio orologio da un NTP server, anche più volte al giorno, se necessario.
Leggi anche:   Come Fare il Primo Setup di Raspberry Pi 3 con raspi-config

Ai più curiosi, e Technology Addicted, potrei consigliare di sbirciare nei documenti che definiscono gli standard del protocollo ed i suoi documenti collegati (quelli citati più sopra), ma forse è più semplice leggersi la sintetica pagina di NTP di Wikipedia.

Impostazione dell’orario di CentOS con ntp

Dopo così tante chiacchiere (spero utili), cercherò qui ora di illustrare al meglio, una procedura utile e semplice per sincronizzare l’orario di un server CentOS 7 da una lista di server NTP disponibili in internet. Il procedimento, il linea di principio, è applicabile anche ad altre macchine GNU Linux, ovviamente con qualche minima variazione nei comandi.

Il server che ho utilizzato per questa guida, al quale sto configurando il servizio NTP si chiama hotrain, che poi è il suo hostname, (è questo il motivo che troverai il suo nome negli esempi così spesso). È un server CentOS 7, ed è in esecuzione in ambiente virtuale con libvirt / QEMU nella mia macchina GNU Linux di laboratorio.

Prima di iniziare

C’è da controllare che il timezone sia corretto. Infatti, come dicevo poco fa, stabilire una zona geografica per il sistema è estremamente importante poiché da questo valore il sistema è in grado di impostare correttamente anche (ma non solo) la data ed ora di quando inizia l’orario estivo e quando questo termina. Queste informazioni sono contenute nei timezone-data, gestiti dal sistema.

Per verificare la corretta impostazione del fuso orario (timezone), dovrai usare il comando timedatectl , come mostrato qui sotto

Comando timedatectl iniziale

Notare che, nell’esempio, il fuso orario (Timezone) non è quello corretto. Infatti, il mio server si trova in Italia, più precisamente a Roma; e non certo a Los Angeles.

Quindi, per prima cosa è necessario impostare il corretto timezone.

Per fare questo dovrai usare il comando timedatectl list-timezones che mostrerà l’intera lista dei possibili timezone disponibili.

root@hotrain:~[5]# timedatectl list-timezones
 Africa/Abidjan
 Africa/Accra
 Africa/Addis_Ababa
 …
 America/Adak
 America/Anchorage
 America/Anguilla
 …
 Europe/Prague
 Europe/Riga
 Europe/Rome
 Europe/Samara
 …
 Pacific/Tongatapu
 Pacific/Wake
 Pacific/Wallis
 UTC

Scorrendo la lunghissima lista si può trovare la località relativa al nostro fuso orario, che ho evidenziato in grassetto nella lista.

Una volta individuato, possiamo finalmente impostare il nostro timezone, con il comando timedatectl set-timezone Europe/Rome, come mostrato qui sotto.

root@hotrain:~[6]# timedatectl set-timezone Europe/Rome

Un ulteriore controllo dovrebbe confermare che il timezone corretto è stato impostato.

Comando timedatectl finale

Ottimo! Sembra proprio che fin qui non ci siano stati problemi; quindi possiamo passare al passo successivo.

I Pacchetti Software necessari

Se hai installato il sistema nella sua installazione minima (Minimal Install) è molto probabile che i pacchetti necessari per il servizio NTP non siano stati installati. Poco male, li possiamo installare manualmente anche subito.

Per installare tutto il necessario per attivare il servizio NTP non devi far altro che digitare il comando yum install -y ntp, come segue:

# yum install -y ntp

Durante l’installazione dei pacchetti, assicurati che non ci siano errori, altrimenti potresti incontrare qualche problema per far funzionare a dovere il servizio NTP.

Attivazione ed Avvio del Servizio ntp

Ora che tutto il software necessario è installato sulla tua macchia, ci sono alcune azioni preliminari da fare:

  • Attivare il servizio, per fare in modo che venga avviato ad ogni reboot del sistema.
  • Avviare manualmente (solo questa volta) il servizio.

Per attivare il servizio all’avvio automatico ad ogni Boot del sistema devi digitare il comando systemctl enable ntpd.

# systemctl enable ntpd

Ed infine, il comando systemctl start ntpd, per avviare manualmente del servizio.

systemctl start ntpd

Attenzione! Questo comando ti servirà solo per questa volta, poiché non abbiamo fatto reboot del sistema. Non dovrai più quindi digitarlo, in quanto il servizio, d’ora in poi, sarà avviato automaticamente ad ogni avvio del sistema.

Leggi anche:   Come installare un Client Open VPN in Windows

Configurazione del servizo NTP

Ora tutto che tutto è pronto, puoi passare alla configurazione vera e propria del demone ntpd.

La configurazione del servizio NTP avviene attraverso il file /etc/ntp.conf che viene letto dal demone ntpd.

Quindi, utilizzando il tuo editor di testo preferito (vi, nano, o altri editor testuali), apri il file /etc/ntp.conf e modificalo come suggerito nel riquadro qui sotto.

These servers were defined in the installation:
 For more information about this file, see the man pages
 ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
 #
 Use public servers from the pool.ntp.org project.
 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
 server 0.centos.pool.ntp.org iburst
 server 1.centos.pool.ntp.org iburst
 server 2.centos.pool.ntp.org iburst
 server 3.centos.pool.ntp.org iburst
 For more information about this file, see the man pages
 ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
 driftfile /var/lib/ntp/drift
 Permit time synchronization with our time source, but do not
 permit the source to query or modify the service on this system.
 restrict default nomodify notrap nopeer noquery
 Permit all access over the loopback interface. This could
 be tightened as well, but to do so would effect some of
 the administrative functions.
 restrict 127.0.0.1
 restrict ::1
 Hosts on local network are less restricted.
 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
 Enable public key cryptography.
 crypto
 includefile /etc/ntp/crypto/pw
 Key file containing the keys and key identifiers used when operating
 with symmetric key cryptography.
 keys /etc/ntp/keys
 Specify the key identifiers which are trusted.
 trustedkey 4 8 42
 Specify the key identifier to use with the ntpdc utility.
 requestkey 8
 Specify the key identifier to use with the ntpq utility.
 controlkey 8
 Enable writing of statistics records.
 statistics clockstats cryptostats loopstats peerstats
 Disable the monitoring facility to prevent amplification attacks using ntpdc
 monlist command when default restrict does not include the noquery flag. See
 CVE-2013-5211 for more details.
 Note: Monitoring will not be disabled with the limited restriction flag.
 disable monitor

Nota bene che le parti in grassetto sono le uniche parti che probabilmente dovrai cambiare, ma se vuoi saperne di più, puoi sempre consultare le Man Pages di ntpd.

Puoi ora salvare e chudere il file.

E quindi riavviare il servizio ntpd con la nuova configurazione, con il comando systemctl restart ntpd, come mostrato qui sotto.

# systemctl restart ntpd

Verifiche di funzionamento

Ora che tutte le modifiche alla configurazione sono state applicate, è tempo di provare se tutto funziona a dovere.

Raccogliamo quindi qualche preziosa informazione sul processo di sincronizzazione con il comando ntpq -p, come mostrato qui sotto.

root@hotrain:~[15]# ntpq -p
 remote refid st t when poll reach delay offset jitter
 *acacia.bilink.n 193.204.114.232 2 u 35 64 7 21.722 3.483 14.688
 +nettuno.ntp.irh 193.204.114.232 2 u 34 64 7 19.301 -6.910 8.801
 +213.251.52.250 193.0.0.229 2 u 34 64 7 32.373 -0.993 8.163

Ora, se tutto ha funzionato a dovere, non dovresti avere problemi a lanciare nuovamente il comando timedatectl e verificare che finalmente l’orologio del tuo sistema è correttamente aggiornato.

Conclusioni

In questa breve guida ho cercato di illustrare come fare per impostare correttamente il server NTP di un server CentOS 7 e nel fare questo ho cercato anche di aggiungere qualche preziosa informazione a contorno, utile per comprendere in modo più ampio il problema.

Ho cercato di includere fonti affidabili, a beneficio della completezza dell’informazione.

Spero di essere riuscito nel mio intento originale, ma soprattutto, spero che questa guida sia utile a molti. Soprattutto, se pensi che ti sia stata utile, non esitare a condividerla nei social, affinché sia di beneficio anche ad altri.

Condividi

Lascia un commento