NTP sta per “Network Time Protocol”. È un protocollo utilizzato dai dispositivi connessi a Internet per sincronizzare l’ora dei loro sistemi con un riferimento temporale. Ci sono vari punti importanti sul motivo per cui è importante mantenere il tempo preciso, ei principi di funzionamento di NTP sono elementari ma sorprendenti.

Di recente abbiamo pubblicato un articolo sulla configurazione del server e del client NTP su distribuzioni basate su Ubuntu. Ciò richiede una descrizione dettagliata di come funziona esattamente NTP e perché è importante.

Qual è il requisito di tempo preciso?

Innanzitutto, vediamo perché in primo luogo è stata sviluppata un’infrastruttura così profonda in modo che le nostre macchine potessero utilizzare il tempo preciso.

Si verifica la deriva

Ogni volta che si utilizza un sistema informatico, è un fatto ben noto che l’orologio hardware inizia a rallentare col passare del tempo. In alcuni casi, questo effetto può anche sommarsi a un’elevata imprecisione. Questo ovviamente non è un effetto desiderabile, quindi è consigliabile utilizzare la sincronizzazione dell’ora.

Gestione dei registri

Se è presente una rete di più dispositivi e si dice che si verifica un problema, ciò interessa più sistemi sulla rete. Il modo migliore per tenere traccia del problema e scoprire cosa è successo è controllare i log di sistema (ulteriori informazioni sul controllo dei file di log qui). Se uno di questi sistemi è indietro di pochi secondi, sembrerà che sia stato effettuato prima dell’altro sistema, che in realtà è stato colpito per primo. Ciò rende difficile la risoluzione dei problemi e, in generale, la gestione di più sistemi su una rete. Questo era solo un esempio, ma ci sono molte altre e gravi possibilità.

Panoramica del server NTP
Panoramica del server NTP (cortesia: Siemens)

Transazioni

Diversi tipi di transazioni vengono effettuate su Internet. A volte, se l’orologio di sistema è in anticipo rispetto all’ora effettiva, nei registri di sistema del pagamento potrebbe essere visualizzato che il pagamento è arrivato prima che tu abbia effettivamente pagato l’importo. Ciò renderà il pagamento come non tuo e darà luogo a ulteriori problemi.

O in un caso più simile, a causa di imprecisioni temporali, può spesso accadere che il destinatario invii una risposta alla tua e-mail prima ancora che tu abbia inviato l’e-mail in primo luogo. Come puoi immaginare, la precisione del tempo su due diversi sistemi su Internet può essere la radice di diverse conseguenze potenzialmente dannose.

Esecuzione del comando

Su una rete, ci sono spesso script scritti per eseguire attività orchestrate su più sistemi. Se uno script di questo tipo ha parametri temporali, può essere incasinato se un sistema ha un tempo impreciso. Alcuni comandi verranno eseguiti prima o dopo aver sabotato l’intero processo. Questo ovviamente non è bello che accada.

Ancora una volta, su una nota più simile, il tuo GPS non funzionerebbe correttamente se l’ora non è sincronizzata correttamente tra il tuo sistema e il satellite GPS.

Come funziona?

Pertanto, abbiamo visto diversi motivi per cui mantenere un tempo preciso su una rete è abbastanza importante per incorporare gli scenari e la nostra vita quotidiana. Fortunatamente per noi, questo non è molto difficile da ottenere. Usando NTP, possiamo renderlo possibile. Ma allora, come fa NTP a farlo accadere? Lasciaci vedere.

Fonti di tempo

Le fonti di tempo definitive devono essere estremamente precise, ovviamente. Queste fonti di tempo sono alcune delle migliori scientificamente possibili in questo momento, le prime delle quali lo sono Orologi atomici, che utilizzano 9192631770 cicli della radiazione corrispondenti alla transizione tra due livelli di energia dell’atomo di cesio 133 allo stato fondamentale come un secondo. Oltre a questo, i ricevitori per i segnali orari trasmessi da alcune agenzie di standard nazionali possono essere considerati l’ora esatta.

NTP100-GPS
NTP100-GPS

Si dice che queste fonti di tempo siano a Stratum 0 livello. Il concetto di strato funziona come descritto:

Concetto di strato

Stratum significa letteralmente “uno di una serie di strati, livelli o gradazioni in un sistema ordinato, “Ed è così che viene utilizzato anche nel contesto di NTP. Il livello dello strato 0 è l’ora più precisa possibile. Se un server sincronizza l’ora con un’origine 0-time dello strato, si tratta di un’origine 1-time dello strato. E se fornisce tempo a un altro server, quel server è una sorgente stratum 2-time. Man mano che i livelli continuano a salire, anche il numero di strato assegnato al server di solito continua a salire. Quindi più basso è il numero di strato assegnato a un server, più preciso sarebbe il tempo.

I livelli di strato vengono considerati fino allo strato 16, dopodiché la differenza di orario è eccessiva. In molti scenari, si consiglia di utilizzare solo fino a 4 server.

Server Stratum 1

Un server di livello 0 non può essere utilizzato da utenti regolari come noi. Gli orologi atomici e le fonti temporali delle agenzie nazionali sono gestiti direttamente dal governo.

Salendo più in alto, un server dello strato 1 è un server che è collegato direttamente a un orologio hardware, che si trova ai livelli dello strato 0. Questo è il miglior server di origine dell’ora possibile perché lo strato 0 non è in realtà un server ma un orologio. Il server a cui può essere effettivamente connesso è il server stratum 1, che riceve l’ora direttamente dall’orologio hardware.

Un server di strato 1 deve avere un preciso e ben mantenuto. Dovrebbe anche essere altamente disponibile poiché altri sistemi possono fare affidamento sul suo servizio orario.

Processo di sincronizzazione del tempo

Prima di tutto, per configurare l’NTP sul tuo sistema, devi scegliere i server che utilizzerai per sincronizzare l’ora. Per questo, puoi scegliere il server che desideri utilizzare e configurare le impostazioni sul tuo software di sistema.

Come viene sincronizzato il tempo

Il processo di sincronizzazione inizia con il sistema e il server NTP che scambiano più pacchetti di dati per un bel po ‘di tempo. Ciò che sta effettivamente accadendo è che viene calcolato il tempo impiegato dal pacchetto per completare un viaggio di andata e ritorno al server NTP e viceversa. L’ora viene inviata in quei pacchetti di dati dal server NTP e il tempo di viaggio calcolato viene detratto di conseguenza. Per esempio:

Il sistema ha l’ora 17:00:05 quando invia il pacchetto. Il sistema ora riceve la risposta dal server NTP alle 17:00:11. Il server NTP ha inviato le informazioni sull’ora, che in realtà sono le 17:05:23 in questo momento. Ma quando guardi il tempo di viaggio impiegato dal pacchetto, che è di 6 secondi, significa che ci sono voluti 3 secondi per andare al server e altri 3 per tornare indietro. Ciò significa che erano le 17:05:23 di 3 secondi fa, non al momento. Quindi l’ora viene regolata di conseguenza alle 17:05:26.

(Ovviamente ho ampliato la scala a un livello molto elevato, ma è solo per motivi di spiegazione. Queste differenze sono in millisecondi in realtà, ma la logica è la stessa).

L’intero processo di scambio di pacchetti dura circa 5 minuti per garantire l’ora corretta e assicurarsi che l’offset sia stato corretto. Ovviamente, più brevi, più coerenti e più simmetrici sono gli scambi di pacchetti, più accurato sarà il tempo. Il protocollo NTP utilizza pacchetti UDP e IP per questo processo a causa della loro velocità e affidabilità. La porta utilizzata è 123. Si dice che la precisione del tempo sia tipicamente compresa tra 5 e 100 ms.

Se la differenza di orario tra il server NTP e il sistema è abbastanza piccola, la cambierà rapidamente. Se la differenza di orario è grande, l’ora viene modificata costantemente con piccole differenze fino a quando non viene corretta.

Migliori pratiche

Avere più server

Questa è la pratica più altamente raccomandata: avere più server NTP ridondanti se uno utilizza malfunzionamenti o diventa impreciso per qualche motivo. Non ci saranno molte perdite se la rete può essere collegata subito a un altro server NTP. Inoltre, sarà ancora meglio se puoi impostare script che possono attivare automaticamente e connettere la rete a uno dei server ridondanti quando vengono forniti alcuni segnali ovvi (come non ricevere pacchetti dal server NTP, ecc.).

Considera il layout di rete

La rete dovrebbe essere strutturata in modo che i sistemi che richiedono un tempo più preciso siano fisicamente più vicini e collegati direttamente al server NTP. Se sono presenti sottoreti, dovrebbero essere utilizzate per attività che relativamente non richiedono tempo preciso.

Comunicazioni NTP protette

Poiché NTP è basato su UDP, è un protocollo concentrato su molto, quindi a seconda del sistema, potrebbero esserci potenziali vulnerabilità. È sempre una buona idea proteggere la connessione NTP con l’autenticazione.

Accesso limitato

Proteggere la rete da aggressori esterni è sicuramente importante, ma lo è anche la prevenzione di maltrattamenti. Limitando l’accesso ai server NTP per il numero minimo di persone, puoi assicurarti di avere il minor numero di errori umani possibile e, soprattutto, puoi essere certo che non sarà gestito da qualcuno che non ha la comprensione tecnica effettivamente necessaria per gestire la rete.

Evita i loop temporali

Prospettive di fantascienza a parte, dovresti sempre assicurarti di evitare loop temporali nella struttura della rete. Diciamo che A funge da server per B e B per C. Ora, se C viene nuovamente assegnato come server per A, le cose possono diventare complicate. Ovviamente, nessuno sano di mente lo farebbe, ma a volte può accadere accidentalmente, quindi controllare il layout della rete NTP una volta ogni tanto è una buona idea.

Conclusione

NTP è un protocollo eccellente ed efficiente per assicurarsi che il sistema abbia sempre l’ora corretta. Può diventare un po ‘complicato in una rete di grandi dimensioni o in un ambiente d’ufficio, ma essere un po’ attenti e avere buoni layout può fare molto. Ci auguriamo che tu abbia trovato utile quell’articolo.


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *