NTP (Network Time Protocol) è un protocollo utilizzato per la sincronizzazione degli orologi di una o più macchine attraverso uno o più time server che forniscono questo servizio attraverso Internet, in genere è in ascolto sulla porta 123.
Questa guida è stata preparata utilizzando NTP contenuto nel pachetto ntp-4.2.0-18mdk.rpm su Mandriva 2006 Cooker.
Spesso è importante avere un orologio di sistema attendibile soprattuto nel caso in cui ci siano dei job di cron che devono partire ad una certa ora su più macchine in perfetta sincronia oppure nel caso in cui si verifichi un incidente (come l'attacco di una macchina) che richiede delle informazioni dipendenti dai log, infatti i log di sistema o quelli generati da programmi come Apache indicano l'ora e la data in cui è stata compiuta una certa azione, quindi è importante che le informazioni contenute nei log siano attendibili.
Come al solito urpmi ci viene in aiuto quindi dopo averlo configurato in modo appropriato basta lanciare:
# urpmi ntp
NTP può essere usato in due modi, la modalità demone ovvero il demone ntpd gira in background aggiornando l'orologio di sistema in "real-time" usando i server indicati nel file di configurazione, oppure esiste la modalità che io chiamo "una volta ogni tanto" ovvero tramite il comando ntpdate $time_server (dove $time_server è l'indirizzo di un NTP server) che permette di aggiornare l'orologio di sistema quando lo si desidera questo comando può essere inserito come job di cron per essere eseguito una volta all'ora, una al giorno, una alla settimana, una al mese, etc...
Questa guida tratterà entrambe le modalità di utilizzo.
Il file di configurazione principale di NTP è situato in /etc/ntp.conf, apriamolo con il nostro editor di fiducia.
server 127.127.1.0
fudge 127.127.1.0 stratum 10
#server NTP da cui prendere l'ora per la sincronizzazione questi sono i server gentilmente offerti dall'IEN Galileo Ferraris, ovviamente sono server per l'ora italiana, se avete necessità di sincronizzare il vostro orologio con altre nazionalità all'indirizzo http://www.eecis.udel.edu/~mills/ntp/clock1b.html potete trovare un elenco degli altri server NTP disonibili
server ntp1.ien.it minpoll 9 maxpoll 10 server ntp2.ien.it minpoll 9 maxpoll 10
#l'opzione driftfile specifica un file nel quale verrà salvata la correzione di frequenza dell'orologio di sistema rispetto a quello del server, #se questo file viene definito il demone utilizzerà come valore di correzione iniziale quello indicato in questo file in caso contrario utilizzerà il #valore 0, assicuratevi di incare un path nel quale il demone ntpd può scrivere
driftfile /etc/ntp/drift multicastclient broadcastdelay 0.008
#l'opzione authenticate indica se l'accesso al server deve essere autenticato, se il server necessita di autenticazione impostatela a yes
authenticate no
#l'opzione keys serve ad indicare un file contenente le chiavi da utilizzare per l'accesso ad un server NTP che necessita di autenticazione, #i permessi di tale file devono essere 0600
ID tipo chiave
ID indica il numero di identificazione della chiave che può essere compreso tra 1 e 65534
tipo indica la tipologia della chiave, uno dei tanti disponibili è MD5 che viene indicato con M
chiave indica la chiave che è composta da 1 a 16 caratteri ASCII
ESEMPIO:
/etc/ntp/keys 1 M qu4eo127y0f5 2 M Gei86FdkT56S
In questo caso 1 indica la chiave per il server 1 e 2 indica la chiave per il server 2.
Per poter utilizzare le chiavi bisogna indicare al demone quali sono le chiavi fidate da utilizzare tramite l'opzione trustedkey
ESEMPIO:
trustedkey 1 2
Successivamente bisogna associare ogni chiave ad un server.
ESEMPIO:
server ntp1.ien.it key 1 server ntp2.ien.it key 2
keys /etc/ntp/keys
trustedkey 1 2
requestkey 1 2
controlkey 1 2
#ntp ha la possibilità di fornire informazioni relative a ciò che accade durante il suo funzionamento tramite l'opzione statsdir che specifica #una cartella nel quale queste informazioni andranno salvate
statsdir /var/log/ntpstats/
#ntp ha anche la possibilità di archiviare in un file di log le informazioni che produce tramite l'opzione logfile
logfile /var/log/ntpd
#è possibile restringere l'accesso al server NTP solo a determinati indirizzi o a classi di indirizzi tramite le opzioni restrict, default e #ignore, per esempio con restrict si concede l'accesso al server solo a una classe di indirizzi
restrict 192.168.16.0 netmask 255.255.255.0[/b]
Se avete deciso di utilizzare NTP come demone adesso non dovete fare altro che salvare il file di configurazione e riavviare il demone perchè le modifiche vengano applicate:
# /etc/init.d/ntpd reload
Se invece avete deciso di usare NTP in modalità "una volta ogni tanto" è ora di preparare un piccolo scipt che sincronizzerà l'orologio di sistema con il server NTP e contemporanemanete sincronizzerà l'hardware clock con l'orologio di sistema.
Quando viene installato ntpd vengono creati automaticamente in /etc/rcX.d (dove X è un numero che va da 0 a 6, ogni numero corrisponde ad un runlevel, man init per maggiori informazioni) quindi ntpd verrà eseguito automaticamente all'avvio; se non volete che ciò accada dovete rimuovere tutti i link simbolici che fanno riferimento a /etc/init.d/ntpd
Aprite il vostro editor preferito e incollate quanto segue.
/usr/sbin/ntpdate ntp1.ien.it ntp2.ien.it && hwclock --systohc && echo "Il system clock e l'hardware clock sono ora sincronizzati con il server NTP"
Lo script è davvero di una semplicità estrema, io non capisco quasi nulla di bash scripting quindi se qualcuno volesse migliorarlo è liberissimo di farlo.
Ora rendiamo eseguibile lo script:
$ chmod ug+x /path/to/script
Dato che solo l'utente root può modificare l'orologio di sistema facciamo in modo che lo script appartenga a quest ultimo.
# chown root.root /path/to/script
Ora dobbiamo fare in modo che lo script si avvii con un intervallo di tempo prestabilito, per fare sì che ciò accada dobbiamo impostare un job di cron. Per farlo ci sono due metodi.
Metodo 1:
# crontab -e
Questo comando apre il file /etc/crontab con l'editor testuale Vim.
Per inserire del testo scrivete :i, inserite qualcosa di simile a questo:
30 16 * * * /path/to/script
Questa sintassi indica che lo script verrà eseguito sempre alle 16:30. Se volete cambiare qualcosa sappiate che il primo numero indica i minuti, il secondo le ore, il terzo indica il giorno del mese, il quarto indica il mese e il quinto indica il giorno della settimana.
Dopo aver impostato il job di cron con la frequenza che volete premete ESC e per salvare :write quindi per uscire :quit, se avete sbagliato qualcosa uscite senza salvare con :quit!.
Per verificare che il job di cron sia stato inserito correttamente digitate:
# contab -l
Questo comando restituirà come output la lista dei job di cron tra cui dovreste vedere anche quello inserito da voi.
Metodo 2:
Se non avete voglia di modificare crontab potete inserire il vostro script in una di queste cartelle:
/etc/cron.hourly/ (ogni ora)
/etc/cron.weekly/ (una volta alla settimana)
/etc/cron.monthly/ (una volta al mese)
Ora il vostro computer dovrebbe avere un orologio che spacca il secondo.
Ci vediamo alla prossima guida!
Commenti
Inviato da Madman il Lun, 02/05/2005 - 14:37.
Modulo Webmin per NTPD
Ho trovato anche un modulo per Webmin che permette di gestire il demone NTPD.
http://www.netorbit.it/ntp.html