Introduzione
Mantenere l’ora esatta è fondamentale per quasi tutti i servizi o software. E-mail, logger, sistemi di eventi e pianificatori, meccanismi di autenticazione degli utenti e servizi in esecuzione su piattaforme distribuite richiedono tutti timestamp accurati per registrare gli eventi in ordine cronologico. Questi servizi utilizzano il Network Time Protocol, o NTP, per sincronizzare l’orologio di sistema con una fonte esterna attendibile. Questa fonte può essere un orologio atomico, un ricevitore GPS o un altro time server che utilizza già NTP.
Qui entra in gioco il progetto NTP Pool Project. Si tratta di un enorme cluster mondiale di time server che fornisce un facile accesso al noto “buon tempo” per decine di milioni di clienti in tutto il mondo. È il time server predefinito per Ubuntu e la maggior parte delle altre principali distribuzioni Linux, così come molte appliance e applicazioni software in rete.
In questa guida, si imposta NTP sul server e configurarlo per essere parte del progetto Pool NTP, in modo che fornisce l’ora esatta ad altri utenti del progetto Pool NTP. Fornire i cicli di CPU di riserva e la larghezza di banda inutilizzata è un modo perfetto per restituire qualcosa alla comunità.
La larghezza di banda richiesta è relativamente bassa e può essere regolata in base alla quantità che è possibile fornire e dove risiede il server. Ogni client invierà solo un paio di pacchetti UDP ogni 20 minuti, quindi la maggior parte dei server riceve solo una dozzina di pacchetti NTP al secondo, con picchi un paio di volte al giorno fino a cento pacchetti al secondo. Ciò si traduce in un utilizzo della larghezza di banda di 10-15Kb/sec con punte di 50-120Kb/sec.
Ci sono tre requisiti di base che devi soddisfare prima di entrare nel progetto NTP Pool:
- Il server deve avere un indirizzo IP statico.
- Il server deve avere una connessione Internet stabile e permanente.
- Il tuo indirizzo IP non cambia più, o cambia solo raramente (una volta all’anno o meno).
Per la maggior parte dei server basati su cloud, i primi due requisiti vengono generalmente soddisfatti automaticamente. Il terzo requisito sottolinea che l’adesione al progetto NTP Pool costituisce un impegno a lungo termine. Naturalmente, se le circostanze cambiano, va bene prendere un server fuori dalla piscina, ma ci vorrà molto tempo (per lo più settimane, ma a volte mesi o addirittura anni) prima che il traffico svanisca completamente.
Prerequisiti
Per completare questo tutorial, è necessario:
- Un Centos 7 server con rete IPv6 configurato. Se è necessario configurare la rete IPv6 su una droplet esistente, è possibile seguire questo tutorial.
- Un utente non root sudo e un firewall, che è possibile impostare seguendo la configurazione iniziale del server con il tutorial CentOS 7 e la sezione “Configurazione di un firewall di base” nei passaggi consigliati aggiuntivi per i nuovi server CentOS 7 tutorial.
Passo 1 — Installazione di NTP
Il pacchetto NTP non è installato per impostazione predefinita, quindi utilizzerai il gestore pacchetti per installarlo. Innanzitutto, aggiorna i tuoi pacchetti:
- sudo yum update
Quindi installare NTP:
- sudo yum install ntp
una Volta completata l’installazione, avviare il servizio e a configurarlo in modo che si avvia automaticamente ogni volta che il server stivali:
- sudo systemctl start ntpd
- sudo systemctl enable ntpd
Se hai configurato il firewall, come specificato nel prerequisiti, è necessario consentire il traffico UDP per il servizio NTP per comunicare con il protocollo NTP piscina:
- sudo firewall-cmd --permanent --add-service=ntp
- sudo firewall-cmd --reload
Per ulteriori informazioni su FirewallD, vedere Come configurare un Firewall Utilizzando FirewallD su CentOS 7.
NTP è ora installato, ma è configurato per utilizzare i server di tempo pool NTP predefiniti. Consente di scegliere alcuni server di tempo specifici, invece.
Passo 2 — Scelta di un server Upstream adatto
Il progetto Pool NTP chiede agli operatori che desiderano unirsi al pool di scegliere buoni server locali di rete anziché utilizzare i server pool.ntp.org
predefiniti. Ciò garantisce che il progetto Pool NTP rimanga affidabile, veloce e sano. Quando si sceglie la fonte di tempo, si vorrà una connessione di rete stabile senza perdita di pacchetti e il minor numero possibile di salti tra i server.
Il protocollo NTP a più livelli e gerarchico separa le parti coinvolte in server primari, server secondari e client. I server primari sono chiamati Strato 1 e sono collegati direttamente alla fonte del tempo, che si chiama Strato 0. Questa fonte può essere un orologio atomico, un ricevitore GPS o un sistema di navigazione radio. I server secondari nella catena sono chiamati Strato 2, Strato 3 e così via.
Ogni server è anche un client. Un client Stratum 2 riceve tempo da un server Stratum 1 a monte e fornisce tempo ai server Stratum 3 a valle o ad altri client. Affinché i membri del progetto Pool NTP funzionino correttamente, il demone NTP richiede almeno tre server configurati. Il progetto raccomanda un minimo di quattro e non più di sette fonti.
Il progetto Pool NTP fornisce un elenco di server di tempo pubblici Stratum 1 e Startum 2. Gli elenchi designano i time server NTP disponibili per l’accesso pubblico in base alle restrizioni indicate. Troverete tre tipi:
- OpenAccess: questa volta il server è aperto a qualsiasi client conforme alle raccomandazioni sull’utilizzo del pool NTP.
- RestrictedAccess: Questa volta il server ha alcune restrizioni di accesso oltre alle raccomandazioni sull’utilizzo del pool NTP.
- Accesso chiuso: Questa volta il server è chiuso o richiede un accordo preliminare.
Attenzione: non utilizzare server che non sono elencati come OpenAccess a meno che non sia stata ricevuta l’approvazione per farlo.
Visita l’elenco dei Time Server di Stratum 1. Vedrai una lista come la seguente:
Ordina l’elenco in base alla colonna Codice ISO e trova uno o due server geograficamente vicini al data center del server. Quando la colonna Criteri di accesso del server indica OpenAccess, è possibile utilizzarlo senza problemi. Se si dice “RestrictedAccess”, fare clic per aprire la voce e leggere le istruzioni indicate nel campo AccessDetails. Spesso, scoprirai che NotificationMessage è impostato su Yes, il che significa che devi creare un’e-mail informale diretta all’indirizzo fornito in ServerContact, informando l’operatore del server del tuo desiderio di utilizzare questo time server come fonte temporale per il tuo membro del progetto NTP Pool.
Una volta identificati i server che si desidera utilizzare, fare clic sul collegamento per ciascun server nella colonna ISO e copiare il nome host o l’indirizzo IP. Utilizzerai questi indirizzi nel passaggio 3.
Quindi, selezionare tre o quattro server dall’elenco Stratum 2, seguendo lo stesso processo.
Una volta selezionati i time server, è il momento di configurare il client NTP per utilizzarli.
Passo 3 — Configurazione di NTP per unirsi al pool
Per utilizzare il server con il pool NTP e configurare i nuovi time server, è necessario apportare alcune modifiche alla configurazione del demone NTP. Per fare ciò, modificare il file /etc/ntp.conf
:
- sudo vi /etc/ntp.conf
Innanzitutto, assicurati che sia configurato un driftfile. Un driftfile memorizza l’offset di frequenza tra l’orologio di sistema in esecuzione alla sua frequenza nominale e la frequenza richiesta per rimanere in sincronizzazione con l’ora corretta. Aiuta a raggiungere un tempo stabile e preciso. Dovresti trovare questo nella parte superiore del tuo file di configurazione su un’installazione predefinita:
# 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...
Quindi, rimuovere le voci di origine dell’ora predefinite dalla configurazione. Stai cercando tutte le linee che sono del modello server 0.centos.pool.ntp.org iburst
. Se si utilizza una configurazione predefinita, rimuovere le linee evidenziate come mostrato nell’esempio seguente:
...# 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 iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
Sostituisci le linee rimosse con i server selezionati manualmente nel passaggio precedente.
...server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst...
Usiamo l’opzione iburst
per ogni server, secondo le raccomandazioni del pool NTP. In questo modo, se il server è irraggiungibile, questo invierà una raffica di otto pacchetti invece del solito pacchetto. L’utilizzo dell’opzione burst
nel progetto Pool NTP è considerato un abuso in quanto invierà quegli otto pacchetti ogni intervallo di polling, mentre iburst
invia gli otto pacchetti solo la prima volta.
Quindi, assicurarsi che la configurazione predefinita non consenta query di gestione. In caso contrario, il server potrebbe essere utilizzato in attacchi di riflessione NTP o potrebbe essere vulnerabile alle query ntpq
e ntpdc
che tentano di modificare lo stato del server. Verificare che l’opzione noquery
sia aggiunta alle righe predefinite restrict
. Assicurati inoltre di aggiungere le opzioni kod
e limited
poiché limitano troppo i client che chiedono con entusiasmo e applicano la limitazione della velocità.
...# 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 kod limited# 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.1restrict ::1
Puoi trovare maggiori informazioni sulle altre opzioni nella documentazione ufficiale.
Il file di configurazione del demone NTP ora dovrebbe essere simile al seguente, anche se il file potrebbe contenere commenti aggiuntivi, che puoi tranquillamente ignorare:
driftfile /var/lib/ntp/ntp.driftrestrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1restrict ::1server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst
Salvare il file e uscire dall’editor.
Ora riavvia il servizio NTP e lascia che il tuo time server sincronizzi il suo orologio con i server upstream.
- sudo systemctl restart ntpd
Dopo alcuni minuti, controlla lo stato del tuo time server con il comando ntpq
:
- ntpq -p
L’output dovrebbe essere simile a questo:
Output remote refid st t when poll reach delay offset jitter============================================================================== mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492+nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247*ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853+ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669
La colonna remote indica il nome host dei server utilizzati dal demone NTP e la colonna refid indica l’origine utilizzata dai server. Quindi, per i server di Strato 1, il campo refid dovrebbe mostrare GPS, PPS, ACTS o PTB, e i server di Strato 2 e superiori mostreranno l’indirizzo IP del server upstream. La colonna st mostra lo strato e delay, offset e jitter indicano la qualità della sorgente temporale. Valori più bassi sono migliori per questi tre campi.
Il tuo time server è ora in grado di servire il tempo al pubblico. Puoi verificarlo chiamando ntpdate
da un altro host:
- ntpdate -q your_server_ip
L’output dovrebbe essere simile a questo e ti dice che ha regolato il time server e l’offset:
Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate: adjust time server your_server_ip offset 0.001172 sec
Ora sei pronto per registrare il tuo server NTP con il progetto Pool NTP in modo che altri possano usarlo.
Passo 4-Aggiunta del server al pool NTP
Per aggiungere il server in modo che altri possano usarlo, visita manage.ntppool.org e iscriviti per un account. Riceverai un’email da NTP Pool [email protected] richiedendo di verificare il tuo account. Conferma il tuo account seguendo le istruzioni nell’e-mail, quindi accedi a manage.ntppool.org.
Una volta effettuato l’accesso, vedrai la semplice interfaccia per l’aggiunta di server:
Inserire l’indirizzo IP del server e fare clic su Invia.
La schermata successiva ti chiede di verificare che abbia identificato la regione del tuo server. Se mostra il tuo server in una regione diversa da quella che ti aspetti, usa la casella dei commenti per informarli.
Se sei felice, conferma la voce facendo clic su Sì, questo è il mio server, aggiungilo!
Il server è ora parte del progetto Pool NTP. Visita http://www.pool.ntp.org/scores/your_server_ip
per vedere le informazioni raccolte dal sistema di monitoraggio del pool NTP sul tuo server. Controlla il server un paio di volte all’ora e visualizza i dati di offset, alog con il punteggio del sistema. Finché il server è mantenere il buon tempo ed è raggiungibile, il punteggio salirà fino a raggiungere 20 punti. Solo i server con un punteggio superiore a 10 vengono utilizzati nel pool.
Risoluzione dei problemi di connettività
Se hai problemi a sincronizzare il tuo server, potresti avere un packet firewall in atto che rilascia i pacchetti in uscita sulla porta 123
. Date un’occhiata a Come impostare un firewall Utilizzando FirewallD su CentOS 7 per imparare a controllare lo stato del firewall.
Se la stazione di monitoraggio del progetto NTP Pool non riesce a raggiungere il server NTP e il punteggio del server sta diminuendo, oppure non è possibile utilizzare il server per sincronizzare un altro orologio, è possibile disporre di un firewall a pacchetti che elimina il traffico in entrata sulla porta 123
. Controllare lo stato del firewall.
Se si è certi di non disporre di firewall o di aver aperto la porta 123
sia per il traffico in entrata che in uscita, il provider del server o un altro provider di transito potrebbe far cadere i pacchetti lungo la strada. Se non hai le conoscenze per risolvere questi problemi da solo, è meglio rivolgersi alla comunità e chiedere aiuto. Il forum NTP Pool Projects è un buon punto di partenza. Puoi anche unirti alla mailing list o inviare un emaill all’operatore del progetto NTP Pool. Assicurati di poter mostrare tutti i passaggi che hai già provato a risolvere il problema prima di chiedere aiuto.
Conclusione
In questo tutorial, è stato impostato con successo il proprio time server e ne ha fatto un membro del progetto Pool NTP, servire il tempo per la comunità. Per rimanere in contatto con la comunità di tempo-keeping. partecipa al forum NTP Pool Projects o alla mailing list. Assicurati di monitorare il punteggio del tuo server e apportare le modifiche necessarie.