108.1 Lezione 2
Certificazione: |
LPIC-1 (102) |
---|---|
Versione: |
5.0 |
Argomento: |
108 Servizi Essenziali di Sistema |
Obiettivo: |
108.1 Mantenere l’orario di sistema |
Lezione: |
2 di 2 |
Introduzione
Mentre i personal computer sono in grado di mantenere un tempo ragionevolmente accurato da soli, gli ambienti informatici di produzione e quelli di rete richiedono il mentenimento di un tempo molto preciso. Il tempo più accurato è misurato da orologi di riferimento, che sono tipicamente orologi atomici. Il mondo moderno ha ideato un sistema per cui tutti i computer connessi a Internet possono essere sincronizzati con questi orologi di riferimento usando quello che è conosciuto come Network Time Protocol (NTP). Un sistema di computer con NTP sarà in grado di sincronizzare i propri orologi di sistema al’orario fornito dagli orologi di riferimento. Se il tempo di sistema e il tempo misurato su questi server sono diversi, allora il computer accelererà o rallenterà il suo tempo di sistema interno in modo incrementale fino a quando il tempo di sistema coinciderà con quello degli orologi di riferimento.
NTP utilizza una struttura gerarchica per diffondere l’orario. Gli orologi di riferimento sono collegati ai server in cima alla gerarchia. Questi server sono macchine Stratum 1 e tipicamente non sono accessibili al pubblico. Le macchine dello strato 1 sono tuttavia accessibili alle macchine dello strato 2, che sono accessibili alle macchine dello strato 3 e così via. I server Stratum 2 sono accessibili al pubblico, così come tutte le macchine più in basso nella gerarchia. Quando si imposta l’NTP per una grande rete è buona pratica avere un piccolo numero di computer connessi ai server Stratum 2, e poi avere quelle macchine che forniscono l’NTP a tutte le altre macchine. In questo modo, le richieste sulle macchine Stratum 2 possono essere minimizzate.
Ci sono alcuni termini importanti che è importante conoscere quando si parla di NTP. Alcuni di questi termini sono usati nei comandi che useremo per tracciare lo stato di NTP sulle nostre macchine:
- Offset
-
Questo si riferisce alla differenza assoluta tra l’ora di sistema e l’ora NTP. Per esempio, se l’orologio di sistema indica le 12:00:02 e l’ora NTP indica le 11:59:58, allora l’offset tra i due orologi è di quattro secondi.
- Step
-
Se l’offset temporale tra il fornitore NTP e un utilizzatore è maggiore di 128ms, allora NTP eseguirà un singolo cambiamento significativo al tempo del sistema, invece di rallentare o accelerare il tempo del sistema. Questo è chiamato stepping.
- Slew
-
Slewing si riferisce alle modifiche apportate all’ora del sistema quando l’offset tra l’ora del sistema e l’NTP è inferiore a 128ms. Se questo è il caso, allora i cambiamenti saranno fatti gradualmente.
- Insane Time
-
Se l’offset tra l’ora di sistema e l’ora NTP è maggiore di 17 minuti, allora l’ora di sistema è considerata insane e il demone NTP non introdurrà alcuna modifica all’ora di sistema. Dovranno essere prese misure speciali per portare l’ora di sistema entro 17 minuti dall’ora corretta.
- Drift
-
Il drift si riferisce al fenomeno per cui due orologi diventano fuori sincrono nel tempo. In sostanza, se due orologi sono inizialmente sincronizzati ma poi diventano fuori sincrono nel tempo, allora si sta verificando un drift.
- Jitter
-
Il jitter si riferisce alla quantità di drift dall’ultima volta che un orologio è stato interrogato. Quindi se l’ultima sincronizzazione NTP è avvenuta 17 minuti fa, e l’offset tra il provider NTP e l’utilizzatore è di 3 millisecondi, allora 3 millisecondi è il jitter.
Ora discuteremo alcuni dei modi specifici in cui Linux implementa NTP.
timedatectl
Se la tua distribuzione Linux usa timedatectl
, per default implementa un client SNTP invece di un’implementazione NTP completa. Questa è un’implementazione meno complessa del network time e significa che la tua macchina non servirà NTP ad altri computer connessi.
In questo caso SNTP non funzionerà a meno che il servizio timesyncd
sia in esecuzione. Come per tutti i servizi systemd, possiamo verificare che sia in esecuzione con:
$ systemctl status systemd-timesyncd ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Thu 2020-01-09 21:01:50 EST; 2 weeks 1 days ago Docs: man:systemd-timesyncd.service(8) Main PID: 1032 (systemd-timesyn) Status: "Synchronized to time server for the first time 91.189.89.198:123 (ntp.ubuntu.com)." Tasks: 2 (limit: 4915) Memory: 3.0M CGroup: /system.slice/systemd-timesyncd.service └─1032 /lib/systemd/systemd-timesyncd Jan 11 13:06:18 NeoMex systemd-timesyncd[1032]: Synchronized to time server for the first time 91.189.91.157:123 (ntp.ubuntu.com). ...
Lo stato della sincronizzazione SNTP di timedatectl
può essere verificato usando show-timesync
:
$ timedatectl show-timesync --all LinkNTPServers= SystemNTPServers= FallbackNTPServers=ntp.ubuntu.com ServerName=ntp.ubuntu.com ServerAddress=91.189.89.198 RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=34min 8s NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-23, RootDelay=8.270ms, RootDispersion=18.432ms, Reference=91EECB0E, OriginateTimestamp=Sat 2020-01-25 18:35:49 EST, ReceiveTimestamp=Sat 2020-01-25 18:35:49 EST, TransmitTimestamp=Sat 2020-01-25 18:35:49 EST, DestinationTimestamp=Sat 2020-01-25 18:35:49 EST, Ignored=no PacketCount=263, Jitter=2.751ms } Frequency=-211336
Questa configurazione potrebbe essere adeguata per la maggior parte delle situazioni, ma, come notato prima, sarà insufficiente se si spera di sincronizzare diversi client in una rete. In questo caso si raccomanda di installare un client NTP completo.
Il Demone NTP
L’ora del sistema viene confrontata con l’ora della rete a intervalli regolari. Affinché questo funzioni dobbiamo avere un demone in esecuzione in background. Per molti sistemi Linux il nome di questo demone è ntpd
. ntpd
permetterà a una macchina non solo di essere un consumatore di tempo (cioè, in grado di sincronizzare il proprio orologio da una fonte esterna), ma anche di fornire il tempo ad altre macchine.
Assumiamo che il nostro computer sia basato su systemd e che usi systemctl
per controllare i demoni. Installeremo i pacchetti ntp
usando il gestore di pacchetti appropriato e poi ci assicureremo che il nostro demone ntpd
sia in esecuzione controllando il suo stato:
$ systemctl status ntpd ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-12-06 03:27:21 EST; 7h ago Process: 856 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 867 (ntpd) CGroup: /system.slice/ntpd.service `-867 /usr/sbin/ntpd -u ntp:ntp -g
In alcuni casi potrebbe essere necessario avviare e abilitare ntpd
. Sulla maggior parte delle macchine Linux questo viene fatto con:
# systemctl enable ntpd && systemctl start ntpd
Le interrogazioni NTP avvengono sulla porta UDP 123. Se NTP fallisce, assicurati che questa porta sia aperta e in ascolto.
La Configurazione NTP
NTP è in grado di interrogare diverse fonti e di selezionare i migliori candidati da utilizzare per impostare l’ora del sistema. Se una connessione di rete viene persa, NTP utilizza le regolazioni precedenti per stimare le regolazioni future.
A seconda della vostra distribuzione Linux, la lista dei server NTP di rete sarà memorizzata in posti diversi. Supponiamo che ntp
sia installato sulla tua macchina.
Il file /etc/ntp.conf
contiene informazioni di configurazione su come il tuo sistema si sincronizza con l’ora di rete. Questo file può essere letto e modificato usando vi
o nano
.
Per impostazione predefinita i server NTP utilizzati sono specificati in una sezione come questa:
# 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
La sintassi per aggiungere server NTP è simile a questa:
server (IP Address) server server.url.localhost
Gli indirizzi dei server possono essere indirizzi IP o URL se il DNS è stato configurato correttamente. In questo caso, il server sarà sempre interrogato.
Un amministratore di rete potrebbe anche considerare l’uso (o la creazione) di un pool. In questo caso, assumiamo che ci siano diversi provider NTP, tutti con demoni NTP in esecuzione e con lo stesso orario. Quando un client interroga un pool, un provider viene selezionato a caso. Questo aiuta a distribuire il carico di rete tra molte macchine in modo che nessuna macchina nel pool stia gestendo tutte le query NTP.
Comunemente, /etc/ntp.conf
sarà popolato con un pool di server chiamato pool.ntp.org
. Così, per esempio, server 0.centos.pool.ntp.org
è un pool NTP predefinito fornito alle macchine CentOS.
pool.ntp.org
I server NTP usati di default sono un progetto open source. Maggiori informazioni possono essere trovate su ntppool.org.
Considerate se il pool NTP sia appropriato per le vostre necessità o meno. Se gli affari, l’organizzazione o la vita umana dipendono dall’avere un orario corretto o possono essere danneggiati dal fatto che sia sbagliato, non dovreste “prendere l’ora da Internet”. L’NTP Pool è generalmente di alta qualità, ma è un servizio gestito da volontari nel loro tempo libero. Parlate con i vostri fornitori di attrezzature e di servizi per ottenere un servizio locale e affidabile per voi. Vedi anche i nostri termini di servizio. Noi raccomandiamo i time server di Meinberg, ma sono consigliabili anche server di End Run, Spectracom e molti altri.
ntpdate
Durante la configurazione iniziale, l’ora del sistema e l’NTP potrebbero essere seriamente desincronizzati. Se lo offset tra l’ora di sistema e l’ora NTP è maggiore di 17 minuti, allora il demone NTP non apporterà modifiche all’ora di sistema. In questo scenario sarà necessario un intervento manuale.
Per prima cosa, se ntpd
è in esecuzione, sarà necessario fermare il servizio. Usa systemctl stop ntpd
per farlo.
Poi, usa ntpdate pool.ntp.org
per eseguire una sincronizzazione iniziale una tantum, dove pool.ntp.org
si riferisce all’indirizzo IP o all’URL di un server NTP. Può essere necessaria più di una sincronizzazione.
ntpq
ntpq
è un’utilità per monitorare lo stato di NTP. Una volta che il demone NTP è stato avviato e configurato, ntpq
può essere usato per controllare il suo stato:
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +37.44.185.42 91.189.94.4 3 u 86 128 377 126.509 -20.398 6.838 +ntp2.0x00.lv 193.204.114.233 2 u 82 128 377 143.885 -8.105 8.478 *inspektor-vlan1 121.131.112.137 2 u 17 128 377 112.878 -23.619 7.959 b1-66er.matrix. 18.26.4.105 2 u 484 128 10 34.907 -0.811 16.123
In questo caso -p
sta per print e stamperà a schermo un riassunto dei peer. Gli indirizzi degli host possono anche essere restituiti come indirizzi IP usando -n
.
remote
-
hostname del provider NTP.
refid
-
ID di riferimento del provider NTP.
st
-
Stratum del provider.
when
-
Numero di secondi dall’ultima interrogazione.
poll
-
Numero di secondi tra le query.
reach
-
ID di stato che indica se un server è stato raggiunto. Le connessioni riuscite aumenteranno questo numero di 1.
delay
-
Tempo in ms tra la query e la risposta del server.
offset
-
Tempo in ms tra il tempo di sistema e il tempo NTP.
jitter
-
Offset in ms tra l’ora di sistema e l’ora NTP nell’ultima interrogazione.
ntpq
ha anche una modalità interattiva, a cui si accede quando viene eseguito senza opzioni o argomenti. L’opzione ?
restituirà una lista di comandi che ntpq
riconoscerà.
chrony
chrony
è un altro modo per implementare NTP. È installato di default su alcuni sistemi Linux, ma è disponibile per il download su tutte le principali distribuzioni. chronyd
è il demone chrony, e chronyc
è l’interfaccia a riga di comando. Potrebbe essere richiesto di avviare e abilitare chronyd
prima di interagire con chronyc
.
Se l’installazione di chrony ha una configurazione predefinita, l’uso del comando chronyc tracking
fornirà informazioni sull’orario NTP e di sistema:
$ chronyc tracking Reference ID : 3265FB3D (bras-vprn-toroon2638w-lp130-11-50-101-251-61.dsl.) Stratum : 3 Ref time (UTC) : Thu Jan 09 19:18:35 2020 System time : 0.000134029 seconds fast of NTP time Last offset : +0.000166506 seconds RMS offset : 0.000470712 seconds Frequency : 919.818 ppm slow Residual freq : +0.078 ppm Skew : 0.555 ppm Root delay : 0.006151616 seconds Root dispersion : 0.010947504 seconds Update interval : 129.8 seconds Leap status : Normal
Questo output contiene molte informazioni, più di quelle disponibili in altre implementazioni.
Reference ID
-
L’ID e il nome di riferimento a cui il computer è attualmente sincronizzato.
Stratum
-
Numero di "salti" verso un computer con un orologio di riferimento collegato.
Ref time
-
L’ora UTC in cui è stata fatta l’ultima misurazione dalla sorgente di riferimento.
System time
-
Ritardo dell’orologio di sistema dal server sincronizzato.
Last offset
-
Offset stimato dell’ultimo aggiornamento dell’orologio.
RMS offset
-
Media a lungo termine del valore di offset.
Frequency
-
Il grado di errore con cui l’orologio del sistema si troverebbe se chronyd non lo correggesse. È fornito in ppm (parti per milione).
Residual freq
-
Frequenza residua che indica la differenza tra le misure della sorgente di riferimento e la frequenza attualmente in uso.
Skew
-
Limite di errore stimato della frequenza.
Root delay
-
Totale dei ritardi del percorso di rete verso il computer stratum, dal quale il computer riceve la sincronizzazione.
Leap status
-
Lo stato di salto che può avere uno dei seguenti valori: normale, inserisci secondo, cancella secondo o non sincronizzato.
Possiamo anche osservare una serie di informazioni dettagliate sull’ultimo aggiornamento NTP valido:
# chrony ntpdata Remote address : 172.105.97.111 (AC69616F) Remote port : 123 Local address : 192.168.122.81 (C0A87A51) Leap status : Normal Version : 4 Mode : Server Stratum : 2 Poll interval : 6 (64 seconds) Precision : -25 (0.000000030 seconds) Root delay : 0.000381 seconds Root dispersion : 0.000092 seconds Reference ID : 61B7CE58 () Reference time : Mon Jan 13 21:50:03 2020 Offset : +0.000491960 seconds Peer delay : 0.004312567 seconds Peer dispersion : 0.000000068 seconds Response time : 0.000037078 seconds Jitter asymmetry: +0.00 NTP tests : 111 111 1111 Interleaved : No Authenticated : No TX timestamping : Daemon RX timestamping : Kernel Total TX : 15 Total RX : 15 Total valid RX : 15
Infine, chronyc sources
restituirà informazioni sui server NTP utilizzati per sincronizzare il tempo:
$ chronyc sources 210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample ===============================================================================
Al momento, questa macchina non ha fonti configurate. Possiamo aggiungere fonti da pool.ntp.org
aprendo il file di configurazione di chrony. Esso si trova di solito in /etc/chrony.conf
. Quando apriamo questo file, dovremmo vedere che alcuni server sono elencati di default:
210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== # Most computers using chrony will send measurement requests to one or # more 'NTP servers'. You will probably find that your Internet Service # Provider or company have one or more NTP servers that you can specify. # Failing that, there are a lot of public NTP servers. There is a list # you can access at http://support.ntp.org/bin/view/Servers/WebHome or # you can use servers from the 3.arch.pool.ntp.org project. ! server 0.arch.pool.ntp.org iburst iburst ! server 1.arch.pool.ntp.org iburst iburst ! server 2.arch.pool.ntp.org iburst iburst ! pool 3.arch.pool.ntp.org iburst
I server presenti nel file servono anche da guida alla sintassi quando ne inseriremo di nostri. Tuttavia, in questo caso rimuoveremo semplicemente i punti escalmativi !
all’inizio di ogni linea, decommentando così queste linee e usando i server di default del progetto pool.ntp.org
.
Inoltre, in questo file possiamo scegliere di cambiare la configurazione di default per quanto riguarda skew e drift, così come la posizione del driftfile e del keyfile.
Su questa macchina abbiamo bisogno di fare un’importante correzione iniziale del clock. Sceglieremo di decommentare la seguente linea:
! makestep 1.0 3
Dopo aver apportato le modifiche al file di configurazione, riavvia il servizio chronyd
e poi usa chronyc makestep
per far passare manualmente l’orologio di sistema:
# chronyc makestep 200 OK
Poi usa il chronyc tracking
come prima per verificare che le modifiche abbiano avuto luogo.
Esercizi Guidati
-
Inserisci il termine appropriato per ogni definizione:
Definizione Termine Un computer che condividerà l’orario di rete
Distanza da un orologio di riferimento, in salti o passi
Differenza tra l’ora di sistema e l’ora di rete
Differenza tra l’ora di sistema e l’ora di rete dall’ultimo polling NTP
Gruppo di server che forniscono l’orario di rete e condividono il carico tra di loro
-
Specificate quale dei comandi usereste per produrre i seguenti valori:
Valore chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Jitter
Drift
Interval of Poll
Offset
Stratum
IP Address of Provider
Root Delay
-
Stai impostando una rete aziendale che consiste in un server e diversi desktop Linux. Il server ha un indirizzo IP statico di 192.168.0.101. Decidi che il server si connetterà a
pool.ntp.org
e quindi fornirà l’orario NTP ai desktop. Descrivi la configurazione del server e dei desktop. -
Una macchina Linux ha l’ora sbagliata. Descrivi i passi che faresti per risolvere i problemi di NTP.
Esercizi Esplorativi
-
Indica le differenze tra SNTP e NTP.
SNTP NTP -
Perché un amministratore di sistema potrebbe scegliere di non usare
pool.ntp.org
? -
Come potrebbe un amministratore di sistema scegliere di unirsi o altrimenti contribuire al progetto
pool.ntp.org
?
Sommario
In questa lezione abbiamo imparato:
-
Che cos’è NTP e perché è importante.
-
Configurazione del demone NTP dal progetto
pool.ntp.org
. -
Uso di
ntpq
per verificare la configurazione NTP. -
Uso di
chrony
come servizio NTP alternativo.
Comandi utilizzati in questa lezione:
timedatectl show-timesync --all
-
Visualizza informazioni SNTP se si usa
timedatectl
. ntpdate <address>
-
Esegue un aggiornamento NTP manuale una tantum.
ntpq -p
-
Stampa una cronologia delle rchieste recenti di NTP.
-n
sostituirà le URL con gli indirizzi IP. chronyc tracking
-
Visualizza lo stato di NTP se si usa chrony.
chronyc ntpdata
-
Visualizza le informazioni NTP sull’ultimo polling.
chronyc sources
-
Visualizza le informazioni sui provider NTP.
chronyc makestep
-
Esegue un aggiornamento NTP manuale una tantum se si usa chrony.
Risposte agli Esercizi Guidati
-
Inserisci il termine appropriato per ogni definizione:
Definizione Termine Un computer che condividerà l’orario di rete
Provider
Distanza da un orologio di riferimento, in salti o passi
Stratum
Differenza tra l’ora di sistema e l’ora di rete
Offset
Differenza tra l’ora di sistema e l’ora di rete dall’ultimo polling NTP
Jitter
Gruppo di server che forniscono l’orario di rete e condividono il carico tra loro
Pool
-
Specificate quale dei comandi usereste per produrre i seguenti valori:
Valore chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Jitter
X
X
Drift
Interval of Poll
X
X
X (colonna
when
)X
X
Offset
X
X
X
Stratum
X
X
X
X
X
IP Address of Provider
X
X
X
X
Root Delay
X
X
-
State impostando una rete aziendale che consiste in un server e diversi desktop Linux. Il server ha un indirizzo IP statico di 192.168.0.101. Decidi che il server si connetterà a
pool.ntp.org
e quindi fornirà l’orario NTP ai desktop. Descrivi la configurazione del server e dei desktop.Assicurati che il server abbia un servizio ntpd in funzione, piuttosto che SNTP. Usa i pool
pool.ntp.org
nel file/etc/ntp.conf
o/etc/chrony.conf
. Per ogni client, specificare192.168.0.101
in ogni file/etc/ntp.conf
o/etc/chrony.conf
. -
Un sistema Linux ha l’ora sbagliata. Descrivi i passi che fareste per risolvere i problemi di NTP.
Per prima cosa, assicurati che il sistema sia connesso a Internet. Usa
ping
per verificarlo. Controlla che un servizio ntpd o SNTP sia in esecuzione usandosystemctl status ntpd
osystemctl status systemd-timesyncd
. Potreste vedere messaggi di errore che forniscono informazioni utili. Infine, usa un comando comentpq -p
ochrony tracking
per verificare se sono state fatte delle richieste. Se l’ora di sistema è drasticamente diversa dall’ora di rete, può essere che l’ora di sistema sia considerata “insana” e non verrà cambiata senza un intervento manuale. In questo caso, usa un comando della lezione precedente o un comando comentpdate pool.ntp.org
per eseguire una sincronizzazione ntp una tantum.
Risposte agli Esercizi Esplorativi
-
Indica le differenze tra SNTP e NTP.
SNTP NTP meno accurato
più accurato
richiede meno risorse
richiede più risorse
non può agire come fornitore di tempo
può agire come fornitore di tempo
solo piccole modifiche temporali
fa passi o slitta il tempo
richiede il tempo da una singola fonte
può monitorare più server NTP e utilizzare il fornitore ottimale
-
Perché un amministratore di sistema potrebbe scegliere di non usare
pool.ntp.org
?Da ntppool.org: se è assolutamente cruciale avere un orario corretto, dovresti considerare un’alternativa. Allo stesso modo, se il tuo Internet provider ha un time server, si raccomanda di usare quello.
-
Come potrebbe un amministratore di sistema scegliere di unirsi o altrimenti contribuire al progetto
pool.ntp.org
?Da www.ntppool.org: il tuo server deve avere un indirizzo IP statico e una connessione internet permanente. L’indirizzo IP statico non deve cambiare affatto o almeno meno di una volta all’anno. Oltre a questo, i requisiti di banda sono modesti: 384 - 512 Kbit di banda. I server Stratum 3 o 4 sono i benvenuti.