GNU/Linux >> Linux Esercitazione >  >> Linux

Che cos'è la dispersione NTP e come posso controllarla?

Soluzione 1:

Vedo una certa confusione nelle risposte qui. Per cominciare, ntpclient , almeno in -s modalità, non agisce come un client NTP completo, invia e riceve solo un pacchetto , quindi non ci sono "ultimi 8 pacchetti ricevuti". In realtà non sta affatto stimando la propria dispersione.

Invece, il valore che sta stampando è il valore chiamato "root dispersion" (rootdisp) nel pacchetto restituito dal server, che è una stima della quantità totale di errore/varianza tra quel server e l'ora corretta. Il modo in cui questo viene calcolato è piuttosto semplice:ogni server NTP riceve l'ora da un orologio esterno (ad esempio un ricevitore radio o GPS) o da un altro server NTP. Se un server riceve l'ora da un orologio esterno, la sua dispersione radice è l'errore massimo stimato di quell'orologio. Se riceve l'ora da un altro server NTP, la sua dispersione root è la dispersione root di quel server plus la dispersione aggiunta dal collegamento di rete tra loro.

Un punto di confusione qui è che mentre ntpq e chrony visualizzano la dispersione e la dispersione della radice in secondi, che è ciò a cui le persone sono abituate a guardare, ntpclient la visualizza in microsecondi . Indipendentemente da ciò, un valore di 1217163 è ancora piuttosto alto. Un buon server NTP conosce l'ora in pochi millisecondi; uno cattivo entro poche decine o centinaia di millisecondi. Il tuo ti sta dicendo che il suo tempo può essere considerato attendibile solo entro +/- 1,2 secondi.

Puoi effettivamente fare in modo che ntpclient si sincronizzi comunque con questo server passando -x 0 o -t opzione (a seconda della versione di ntpclient), che disabilita i controlli di integrità NTP. Se hai solo bisogno di un tempo approssimativamente preciso (entro pochi secondi), potrebbe essere abbastanza buono. Tuttavia, ntpclient è abbastanza ragionevole nel rifiutare di sincronizzarsi con un server così cattivo. Il tuo ntpq l'output sulla macchina Ubuntu mostra un jitter di centinaia di millisecondi per tutti i suoi server, anche se hanno un ritardo basso, il che indica una rete molto inaffidabile o una cospirazione di tutto dei server per fornire un orario irregolare o un problema di cronometraggio di base sul server stesso.

Mi preoccupa anche che il server 10.31.10.22 pubblicizzi un refid di LOCL (orologio locale indisciplinato) ma ha uno strato di 1. Di solito l'orologio locale è spostato su uno strato di 10 in modo che venga utilizzato solo come fonte di sincronizzazione di ultima istanza per impedire a un branco di allontanarsi. O 10.31.10.22 è configurato in modo errato e fornisce un brutto momento al resto della rete, oppure è stato disciplinato in un buon momento da qualche programma al di fuori del controllo di NTP, nel qual caso l'errata configurazione è semplicemente che sta pubblicizzando il LOCL rifidare; dovrebbe essere sovrascritto ad es. GPS o qualunque cosa stia fornendo il suo tempo.

Soluzione 2:

Solo una risposta parziale per "Cos'è la dispersione?":

Un tipico viaggio di andata e ritorno NTP:

client |        | server
    t1 |------->| t2
    t3 |<-------| t4

Ciò produce due valori, offset (la differenza di orario tra client e server) e il ritardo (essenziale il tempo di percorrenza della rete) con le seguenti formule:

offset= ((t4 - t3) + (t1 - t2)) / 2
delay = (t4 - t1) - (t3 - t2)

Il client seleziona l'offset corrente dagli ultimi 8 pacchetti ricevuti, scegliendo quello con il minor ritardo.

Gli stessi 8 pacchetti vengono utilizzati per calcolare la dispersione facendo una media ponderata della differenza di questi 8 offset rispetto a quello selezionato nell'ultimo passo, dove il ritardo viene utilizzato come fattore di ponderazione, dando maggior peso a ritardi minori. È una misura per la "diffusione" dei valori e utilizzata per calcolare la qualità di un time server, soprattutto se ne hai più tra cui scegliere.

Soluzione 3:

La tua dispersione e inclinazione sono enormi, c'è un offset molto grande dall'orologio locale a quel peer. Dovresti confrontare gli offset con il date locale e imposta l'orologio manualmente.

Avvia ntpd e mostra ntpq -p da un host che utilizza tutti i peer. Selezionerà i migliori.

Soluzione 4:

Secondo questa documentazione di Cisco, "dispersione , riportata in secondi, è la massima differenza di orario mai osservata tra l'orologio locale e l'orologio del server". Con i server ntp che non sono completamente guasti, non dovrebbe mai verificarsi un'elevata dispersione. L'unico scenario fattibile è quando il tuo client avvia ntp e finora ha a disposizione solo il suo orologio locale. E anche in questo caso, una dispersione così alta da te segnalata corrisponde a orologi che sono fuori servizio per più di due settimane .

Dovrebbe essere sufficiente per garantire che l'orologio locale non sia troppo lontano all'inizio (anche un paio d'ore sarebbero ancora accettabili), regolando l'orologio (e anche la data!) nel BIOS o emettendo ntpdate una volta prima di iniziare ntpd sul client.


Linux
  1. Che cos'è un server Web e come funziona un server Web?

  2. Come installare e configurare NTP per la sincronizzazione dell'ora in CentOS?

  3. Come configurare il server NTP in CentOS?

  4. Come sincronizzare l'ora usando NTP nel server Ubuntu?

  5. Come impostare Debian per aggiornare automaticamente data e ora?

Che cos'è il comando SSH e come utilizzare SSH per connettersi al server remoto

Come configurare server e client NTP su Debian 10

Come configurare server e client NTP su Debian 11

Cos'è l'API Heartbeat di WordPress e come controllarla

Come impostare la sincronizzazione dell'ora con NTP su Ubuntu 18.04

Usa NTP per sincronizzare l'ora