Come si configura un server NTP locale?


16

Ho installato il server NTP su Ubuntu Server 10.04 usando:

sudo apt-get install ntp

Il demone NTP sembra funzionare e ascoltare sulla porta 123.

Tuttavia, non sono stato in grado di ottenere il tempo da un'altra macchina:

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

Ci sono delle configurazioni necessarie da fare?

Risposte:


19

Ecco un buon tutorial dai forum di Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Copia-pasta flagrante:

HOWTO: impostare un server NTP

Questo tutorial descrive come configurare la macchina come server NTP (Network Time Protocol) locale e / o come utilizzare il demone NTP per mantenere regolarmente un orario di sistema accurato.

Che cos'è l'NTP?

Il Network Time Protocol (NTP) è un protocollo progettato per sincronizzare accuratamente gli orologi locali con i time server in rete. La rete NTP di time server è impostata in modo gerarchico, in modo tale che qualsiasi utente possa accedere al sistema come server a un certo livello (vedere la pagina Wikipedia per maggiori dettagli).

La gerarchia NTP è divisa in diversi livelli, chiamati strati di clock. Il livello più preciso, Stratum 0, è riservato agli orologi atomici, ecc. Il livello successivo, Stratum 1, è generalmente utilizzato da macchine collegate in rete localmente collegate agli orologi Stratum 0. Lo strato 2 ... 15 sono macchine NTP collegate, a loro volta, a orologi di livello inferiore e tra loro.

Questa guida descrive come sincronizzare accuratamente con le macchine Stratum 1 e 2 e mantenere il più preciso possibile l'orologio di sistema durante il giorno. Sono inoltre incluse sezioni su come consentire alla macchina di funzionare come server Stratum 2/3 per altre macchine sulla rete locale.

Devo creare un server NTP?

No ... assolutamente no! Se sei soddisfatto che gli orologi sulla tua rete abbiano qualche differenza sconosciuta rispetto all'ora standard (e tra loro), non devi impostare un server NTP. Ne ho installato uno sul mio laptop per sincronizzare più macchine su una rete locale entro <1 ms per un esperimento di bioingegneria. Vi sono inoltre numerosi altri vantaggi, descritti di seguito.

Motivazione:

Regolarmente, le caselle Ubuntu non modificate usano ntpdate ( /usr/sbin/ntpdate) per sincronizzare periodicamente l'orologio con un server orario esterno. Questo approccio sincronizza l'orologio con una risoluzione di rotta (in genere una volta al giorno).

Gli orologi dei computer sono imperfetti e durante il giorno andranno alla deriva dal (corretto) time server. Inoltre, i tassi di deriva negli orologi dei diversi computer differiscono, in modo tale che alla fine del giorno potrebbero esistere differenze significative tra le diverse macchine collegate in rete, che possono interferire con determinate operazioni (ad esempio, si può mai presentare un makefile quando si sposta il codice sorgente tra macchine diverse?).

È possibile eseguire il demone NTP localmente su un computer della rete. Ciò ha molteplici vantaggi: in primo luogo, il demone NTP "apprende" gradualmente il tasso di deriva della macchina locale e può correggerlo per tutto il giorno. La sincronizzazione con i server di tempo di livello superiore avviene più volte al giorno e molti server di tempo diversi possono essere utilizzati contemporaneamente per rendere la sincronizzazione più accurata. In questo modo, il demone NTP funge da preciso client orario, mantenendo l'orologio di sistema il più vicino possibile all'ora standard.

Oltre a mantenere un accurato clock di sistema, il demone NTP consente a una macchina della rete (se lo si desidera) di operare come un server orario NTP. Ciò consentirà ad altre macchine della rete locale di sincronizzarsi con il proprio server orario LAN in modo molto rapido e preciso, poiché la latenza della rete è ridotta al minimo. In questo modo, le differenze di clock tra le macchine della rete sono ridotte al minimo. Mac, e anche le finestre di Windows sono anche in grado di sincronizzarsi con un server NTP, se ne configuri uno.

Esistono altre, meno personali, motivazioni per configurare una macchina come server NTP. Innanzitutto, ciò potrebbe ridurre lo sforzo sui server NTP di livello superiore, poiché altre macchine sulla LAN potrebbero sincronizzarsi con un server orario stabilito localmente. Inoltre, ntpdate è stato deprecato a favore dell'uso del flag -q per ntpd (che imita la sua funzionalità). Pertanto, anche se non si desidera eseguire ntpd costantemente in background, alla fine ntpdate verrà sostituito con ntpd, quindi è possibile familiarizzarsi ora

Come mantenere un accurato clock di sistema con ntpd

  1. Installa il demone NTP

Innanzitutto, installa il demone NTP (ntpd):

sudo aptitude install ntpd

Come accennato in precedenza, ntpd può agire sia come client (sincronizzando l'ora del sistema) sia come server (fornendo l'ora esatta per altre macchine).

Facoltativamente, potresti anche voler rimuovere il programma di sincronizzazione dell'ora precedente (obsoleto), ntpdate. Forse potrebbe essere più saggio farlo dopo aver lavorato ntpd

sudo aptitude remove ntpdate
  1. Configurare correttamente il demone

Il file di configurazione per ntpd si trova in /etc/ntp.conf. Il file Ubuntu predefinito probabilmente richiede alcune modifiche per prestazioni ottimali.

La prima sezione che potresti voler modificare è l'elenco dei server con cui sincronizzarti. La sezione predefinita probabilmente ha il seguente aspetto:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

Al fine di ottenere il tempo più preciso possibile, è preferibile comunicare con più server NTP diversi e mantenerli il più vicino possibile alla propria posizione fisica. Esistono online diversi elenchi di server, probabilmente il migliore si trova qui. C'è qualche dibattito sul numero corretto di server da usare. Uno è meglio di due, e tre o più probabilmente è una buona idea, a patto che tu non esca troppo. Di seguito è riportato un esempio di alcuni server che ho usato:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Una volta trovati alcuni server validi, aggiungili all'elenco, inserendo 'iburst'quello più promettente. Per esempio:

server nist1-dc.WiTime.net iburst

Questo farà sì che ntpd si sincronizzi molto rapidamente con questo server dopo l'avvio. Altrimenti, ntpd tenderà lentamente a raggiungere un accordo con l'elenco dei server (come è la sua natura) e potrebbero essere necessari 15-20 minuti per sincronizzarsi abbastanza bene da fungere da time server per il resto della rete.

Inoltre, aggiungi alcune righe aggiuntive in fondo all'elenco dei server per fornire l'ora locale corrente come impostazione predefinita in caso di perdita temporanea della connettività Internet:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Questo eviterà qualsiasi cattiveria se si esegue ntpd su un laptop o un altro computer con periodi intermittenti di disconnessione da Internet.

Tutto sommato, l'elenco dei server dovrebbe essere simile al seguente (questo è mio, i tuoi server saranno probabilmente diversi):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. Assicurarsi che la configurazione funzioni

Ora che hai un elenco di server corretto nel tuo /etc/ntp.conffile, è tempo di eseguire il demone e vedere se la sincronizzazione è corretta! Assicurarsi di disporre di una connessione Internet attiva, quindi eseguire:

sudo /etc/init.d/ntp restart

Quindi, controlla il registro di sistema per vedere se ti sincronizzi con un server orario:

tail -f /var/log/syslog

In circa 10-15 secondi (o fino a 15-20 minuti se hai dimenticato di inserire 'iburst' dopo il tuo server preferito), dovresti vedere qualcosa di simile al seguente nel registro di sistema:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Se questo messaggio non arriva mai, non sei ancora correttamente sincronizzato con la rete del server NTP. Controllare l'elenco dei peer NTP con cui si sta comunicando utilizzando quanto segue:

ntpq -c lpeer

Se i campi "delay", "offset" e "jitter" sono diversi da zero e non sono stati sincronizzati, probabilmente significa che devi solo aspettare un po '. Controlla di nuovo di aver inserito l'argomento 'iburst' nell'elenco dei tuoi server! I miei colleghi, per riferimento, sembrano simili ai seguenti:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. Condividere! (opzionale)

Una volta che ntpd è in esecuzione e sincronizzato con i time server selezionati, è possibile configurarlo in modo da fungere da time server per altre macchine. Per fare ciò, aggiungi una sezione come la seguente a /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. Sincronizzare! (opzionale)

Dopo aver configurato un server NTP utilizzando i passaggi 1-4, è possibile sincronizzare le altre macchine sulla rete con il server in vari modi. Di seguito ne descrivo un paio:

ntpd:

Se ntpd è installato su un altro computer, è possibile utilizzare il primo server nell'elenco dei server del file ntp.conf oppure sincronizzare una volta con l'opzione -q, come segue:

ntpd -q [IP address of your server]

ntpdate:

Se hai ancora ntpdate installato su un altro computer, puoi usarlo per sincronizzarti con il tuo server come segue:

ntpdate [IP address of your server]

Nota: se si esegue ntpd su una macchina e per qualche motivo si desidera ancora utilizzare ntpdate per impostare l'ora, è necessario utilizzare l'opzione -u.

Finestre:

I computer Windows utilizzano una versione semplificata di NTP chiamata Simple Network Time Protocol (SNTP) e possono sincronizzarsi con i server NTP. Per sincronizzare con il tuo nuovo server, fai doppio clic sull'ora e vai alla scheda "Ora Internet". Inserisci l'indirizzo IP del tuo server nel campo "Server". Ho attaccato uno screenshot di Windows XP sincronizzato con un time server LAN, nel caso qualcuno fosse interessato.

Questo è tutto! L'intero processo non è difficile, ma può essere fonte di confusione per qualcuno che non ha mai lavorato molto con la rete NTP. Spero che questo possa essere d'aiuto! Fammi sapere se hai problemi con la configurazione del tuo server.

Mike

link

Ho trovato utili i seguenti link ... anche tu!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http: //lists.ntp.isc. org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


Grazie per il link In realtà, non ho modificato la mia configurazione! Ha funzionato dopo qualche tempo.
Khaled,

sul tuo server ntp puoi eseguire ntpdate -s a_stratum_1_server_addressper forzare la sincronizzazione immediata. quindi sull'altra tua macchina (client), eseguendo 'ntpdate -q your_local_ntp_server` dovrebbe rispondere con qualcosa di simile aserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds

Una risposta di solo collegamento può non essere aggiornata. Si prega di includere le informazioni importanti nella risposta stessa.
Zeta,

5

Ci sono molti link a riguardo e mi sembra che complicino la procedura. Nel mio caso ho una macchina che funge da server proxy e firewall e tutti gli altri si connettono a Internet attraverso di essa. Non volevo aprire le porte sul firewall. Quindi il server proxy deve essere il tempo (NTP) del server e le altre macchine ( client ) ottengono il tempo da esso.

È necessario installare ntp su tutti i computer e installare ntpq anche su tutti.

Innanzitutto, controlla se ntp funziona. Per impostazione predefinita, ntpd (il demone ntp) sarà in esecuzione non appena installato e le impostazioni predefinite dovrebbero funzionare. Tuttavia, ntp non funziona istantaneamente, quindi aspetta un po '. Quindi, il comando:

ntpq -c lpeer

dovrebbe darti un output simile a questo:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

o:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

In tal caso, sei connesso e il tuo time server sta rilevando l'ora. In caso contrario, utilizzare

ps -e | grep "ntp" 

per essere sicuri che ntp sia in esecuzione e riprovare. Prova anche a riavviare ntp:

sudo /etc/init.d/ntp restart

potrebbe volerci un po 'di "tempo" (scusate!) prima che venga stabilita la connessione. Il demone non esegue il polling dei server molto spesso. La colonna "quando" nell'output sopra mostra il tempo in secondi dal polling del server.

Ora, devi fare in modo che il time server invii l'ora alle altre tue macchine.

Modifica il file /etc/ntp.confsul server. Devi aggiungere una linea per la tua rete. Nel mio caso, ho una rete 10.0.0.0. Nel file ntp.conf, ho aggiunto la riga:

broadcast 10.255.255.255

Devi aggiungere una linea di trasmissione per ogni segmento della tua rete. Se la tua rete è semplice come la mia, basta una riga come quella sopra. Ora riavvia ntp usando il comando sopra e controlla di nuovo usando ntpq, e dovresti vedere:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Voila, sta trasmettendo.

Ora, devi fare in modo che ogni macchina client ottenga il tempo dal tuo server di trasmissione. Su ognuno, modifica il file:

/etc/ntp.conf

e vedrai alcune righe che specificano i server.

aggiungi una linea

server 10.10.10.1

o qualunque sia l'indirizzo del tuo server. Quindi riavviare ntp sul computer client utilizzando il comando sopra. In alternativa, è possibile ottenere l'ID processo e semplicemente ucciderlo ed eseguirlo di nuovo. Qualunque cosa.

Quindi, dopo un tempo sufficiente, verificare con ntpq:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

e puoi vedere che il client sta usando il time server.

Questo richiede del tempo.


È possibile eseguire ntpdate -s a_stratum_1_server_addresssul server NTTP per forzare il polling e la sincronizzazione immediata.
Keith Reynolds,

Questo tipo di trasmissione è supportato da tutti gli switch? Ad esempio, la trasmissione UDP viene bloccata dalla maggior parte degli switch / router.
Tanasis,

1

La risposta accettata (come a luglio 2018) non ha funzionato per me. Questo altro metodo ha funzionato perfettamente su Ubuntu 16.04 LTS a luglio 2018:

Installa NTP se non installato:

sudo apt-get update
sudo apt-get install ntp

Modifica il file di configurazione per consentire al servizio NTP di ricevere richieste:

sudo nano /etc/ntp.conf --syntax=sh

Rimuovi commento questa riga:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

per:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

Riavvia il servizio NTP :

sudo /etc/init.d/ntp restart

Ora il tuo server NTP deve funzionare e consentire a un altro computer di sincronizzarsi con il tuo. Uno dei test di cui sopra, come ntpdate -u YourComputerdovrebbe funzionare correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.