Come Sincronizzare data e ora di un Server Centos 7

Sincronizzare l'ora di un server CentOS, è 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:

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

 

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 di log dei Logfiles.
  • 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 è 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.

Standard World Time Zones

Immagine di Hellerick, based on earlier image by CIA with many modifications by other contributors, TimeZonesBoy - Based on File:CIA WorldFactBook Time Zones.svg, Pubblico dominio, Collegamento

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.

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

DaylightSaving World Subdivisions

Immagine di 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, Collegamento

 

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.

Architettura NTP

Commentando l'immagine qui sopra, possiamo dire che, gli  stratum sono equivalenti ai livelli di "vicinanza" 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.

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 del nostro Server

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

screenshot 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 lista si può trovare la località relativa al nostro fuso orario, che ho evidenziato in Bold 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.

screenshot 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

root@hotrain:~[10]# 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

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.

root@hotrain:~[11]# systemctl enable ntpd

 

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

root@hotrain:~[12]# 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.

 

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), apri il file /etc/ntp.conf 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 Bold sono le uniche parti che probabilmente dovrai cambiare, ma se vuoi saperne di più, puoi sempre cosultare le Man Pages di ntpd.

Puoi ora salvare e chudere il file.

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

root@hotrain:~[14]# 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.

 

Lascia un commento

Tutti i commenti dovranno essere verificati ed approvati dal webmaster, prima di essere pubblicati

Quote of the Day

Il bambino che non gioca non è un bambino, ma l’adulto che non gioca ha perso per sempre il bambino che ha dentro di sé.

Pablo Neruda

Chi è online

Abbiamo 85 visitatori e nessun utente online

Newsletter

Per essere sempre aggiornato sulle ultime novità.

Go to top