Passa al contenuto principale

Avere l'ora corretta sul modulo è fondamentale per tutti i tipi di attività, tra cui la sincronizzazione dei registri e la convalida dei certificati di sicurezza. A partire dalla versione 15.1, VOS viene fornito con una porta del demone Network Time Protocol (ntpd) e si consiglia vivamente di eseguirlo.

In genere, per eseguire ntpd è necessario fornirgli un elenco di server di tempo, host sulla rete che eseguono anch'essi ntpd e forniranno l'ora a qualsiasi host che lo richieda. Su Internet è disponibile un gran numero di server di tempo che è possibile utilizzare. Date un'occhiata a http://www.pool.ntp.org/en/ che organizza i server per regione.

Suggerisco di elencare uno o tre (o più) server, mai due. ntpd cerca di capire quale server sia meglio utilizzare confrontando le risposte dei server. Se sono elencati solo due server, è possibile che ntpd non sia in grado di prendere una decisione e finisca per non utilizzare nessuno dei due.

Ma cosa fare se le politiche aziendali impediscono l'accesso ai server di riferimento orario su Internet e non si dispone di un server di riferimento orario designato dall'azienda? In tal caso, è possibile utilizzare un controller di dominio (DC) Microsoft Windows locale o un controller di dominio di backup (BDC). La maggior parte dei DC e dei BDC fornisce servizi di riferimento orario.

Quindi, come amministratore VOS, come puoi trovare il DC o il BDC locale? Il modo più semplice è chiedere, ma supponendo che questa non sia un'opzione, puoi eseguire il monitoraggio dei pacchetti e cercare da solo. Sia le workstation che i controller di dominio trasmettono periodicamente sulla porta UDP 138.

Il comando

>system>stcp>command_library>packet_monitor -interface#INTERFACE -numeric
-time_stamp -verbose -pkt_hdr -hex_header -hex_dump -length 1500 -filter -port 138
Figura 1 – Comando packet_monitor

visualizzerà queste trasmissioni (assicurati di sostituire INTERFACE con il nome della tua interfaccia IP). Sfortunatamente, per trovare i server temporali è necessario esaminare i dati esadecimali nel pacchetto e, dato che probabilmente ci saranno molti pacchetti da esaminare, è necessario scaricare i pacchetti in un file. Il mio comando macro pm.cm (puoi trovare il comando macro qui) creerà automaticamente un file di output ed eseguirà la traccia come processo avviato. Il file di output avrà il nome pm.(data).(ora).out. Il comando sarà

pm#INTERFACE -no_arp -no_icmp -port 138
Figura 2 – Macro del comando pm

Indipendentemente da come si avvia la traccia, lasciarla in esecuzione per 15-20 minuti e si dovrebbe ottenere una trasmissione da ciascun DC e BDC sulla rete. Cerca quindi le righe contenenti la stringa "c0 3" e "c0 2", ovvero la lettera C minuscola, lo zero, quattro spazi e un tre o un due. Il numero corrisponde al nibble superiore del byte all'offset c0. Quel byte può essere decodificato come

ABCD EFGH
^^^^ ^^^^
|||| ||||-- l'host è una workstation
|||| |||--- l'host è un server
|||| ||---- l'host NON è un server SQL
|||| |----- l'host NON è un controller di dominio
||||------- l'host è un controller di dominio di backup
|||-------- l'host è un server di tempo
||--------- l'host NON è un host Apple
|---------- l'host NON è un host Novell
Figura 3 – Decodifica byte tipo server

Come puoi vedere, cercando i primi tre o due potresti non ottenere tutti i server temporali, ma a meno che tu non gestisca un sito esclusivo Novel o Apple, dovresti ottenere almeno un DC o un BDC.

d pm.11-02-06.17:25:06.out -match 'c0    2'
ready  17:47:13

d pm.11-02-06.17:25:06.out -match 'c0    3'

%phx_vos#m15_mas>SysAdmin>Noah_Davids>pm.11-02-06.17:25:06.out  11-02-06 17:47

     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*

ready  17:47:29
Figura 4 – Linee packet_monitor corrispondenti al server di sincronizzazione e al controller di dominio di backup

Non basta trovare le righe "c0". È necessario trovare anche l'indirizzo dell'host che ha inviato il pacchetto. Il comando grep, che si trova nella directory >system>gnu_library>bin, può trovare corrispondenze su più righe.

grep -e 'c0    3' -e 'c0    2' -e UDP pm.11-02-06.17:25:06.out
. . . .
UDP from 192.168.33.180.138 to 192.168.33.255.138 Cksum 7ca3, 220 data bytes.
UDP from 192.168.33.249.138 to 192.168.33.255.138 Cksum c89a, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.50.138 to 192.168.33.255.138 Cksum 9526, 193 data bytes.
UDP from 192.168.33.248.138 to 192.168.33.255.138 Cksum d05f, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.202.138 to 192.168.33.255.138 Cksum cf35, 219 data bytes.
UDP from 192.168.33.253.138 to 192.168.33.255.138 Cksum 9505, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.131.138 to 192.168.33.255.138 Cksum aa35, 222 data bytes.
UDP from 192.168.33.252.138 to 192.168.33.255.138 Cksum 7343, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . . .
Figura 5 – Linee packet_monitor che mostrano i server di tempo rilevati

L'indirizzo dei server di riferimento temporale appare sulle righe immediatamente sopra la riga "c0". Nella figura sopra abbiamo identificato 192.168.33.249, 192.168.33.248, 192.168.33.253 e 192.168.33.252.

Ora che abbiamo identificato gli host che si pubblicizzano come server di riferimento orario, come possiamo essere sicuri che funzioneranno? Il comando ntpdate può essere utilizzato per interrogare manualmente ciascun server di riferimento orario. Utilizzate l'argomento "-q" per interrogare solo il server di riferimento orario, poiché in questa fase non vogliamo che ntpdate imposti anche l'ora del modulo.

ntpdate -q 192.168.33.248
Ricerca dell'host 192.168.33.248 e del servizio ntp
host trovato: dc48.noahslab.stratus.com
server 192.168.33.248, stratum 4, offset -0.117418, ritardo 0.04202
6 feb 17:53:10 ntpdate[1427079382]: regola il server orario 192.168.33.248 offset -0
+.117418 sec
pronto  17:53:10

ntpdate -q 192.168.33.249
Ricerca host 192.168.33.249 e servizio ntp
host trovato: dc49.noahslab.stratus.com
server 192.168.33.249, stratum 4, offset -0,038709, ritardo 0,04355
6 feb 17:53:25 ntpdate[1427079382]: regola il server orario 192.168.33.249 offset -0
+.038709 sec
pronto  17:53:25

ntpdate -q 192.168.33.252
Ricerca host 192.168.33.252 e servizio ntp
host trovato: dc52.noahslab.stratus.com
server 192.168.33.252, stratum 3, offset 0,015733, ritardo 0,04216
6 feb 17:53:38 ntpdate[1427079382]: regola il server orario 192.168.33.252 offset 0.
+015733 sec
pronto  17:53:38
Figura 6 – Utilizzo di ntpdate per testare i server di tempo rilevati — server funzionanti

Supponiamo che uno dei server abbia una politica firewall che gli impedisce di fornire l'ora anche se la pubblicizza, ntpdate mostrerà quanto segue.

ntpdate -q 192.168.33.254
Ricerca dell'host 192.168.33.254 e del servizio ntp
host trovato: dc54.noahslab.stratus.com
server 192.168.33.254, stratum 0, offset 0.000000, ritardo 0.00000
6 feb 17:54:00 ntpdate[1427079382]: nessun server adatto alla sincronizzazione trovato
+d
pronto  17:54:00
Figura 7 – Utilizzo di ntpdate per testare i server di tempo rilevati — server non funzionante

Ora che sai quali server di tempo puoi usare, puoi scrivere il file >system>ntp>ntp.conf come segue. Tutto ciò che è in nero proviene dal file sample_ntp.conf.17.0, i nuovi caratteri sono in verde. Notate il carattere di commento che è stato aggiunto davanti alla riga "server foo.bar.somewhere.com". Le istruzioni restrict migliorano la sicurezza del sistema impedendo ad altri host di effettuare query non relative al tempo sul demone ntp.

# Le direttive server indicano da dove ottenere l'ora.
# Possono essere valori DNS o IP, uno per direttiva.
# server foo.bar.somewhere.com

server 192.168.33.248 burstiburst
server 192.168.33.249 burst iburst
server 192.168.33.252 burstiburst

# Home il logile.  Scegli un buon percorso relativo - VOS assoluto
# I nomi dei percorsi assoluti VOS non possono essere analizzati correttamente.
logfile >system>ntp>ntp.logfile

# Home il driftfile.
driftfile >system>ntp>ntp.drift

# Queste istruzioni impediranno le query non relative al tempo da qualsiasi host tranne l'host locale.
restrict default noquery
restrict 127.0.0.1
Figura 8 – file >system>ntp>ntp.conf aggiornato

Avvia il comando ntpd (è presente un file sample_start_ntpd.17.0 nella directory >system>ntp) e dopo alcuni minuti dovresti vedere qualcosa di simile a quanto riportato di seguito. Il simbolo "*" davanti a 192.168.33.252 indica che quello è il server da cui ntpd ha scelto di prendere il tempo. Il segno "+" davanti a 192.168.33.248 indica un'altra buona scelta nel caso in cui non ci sia risposta da 192.168.33.252. Finché una delle righe ha un "*" nella colonna uno, sapete che l'ora del modulo sarà sincronizzata con un server di tempo. Ricordate tuttavia che potrebbe essere necessario un po' di tempo prima che gli orari convergano quando la differenza iniziale tra il modulo e il server di tempo è grande.

ntpq -n
ntpq> peer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+192.168.33.248  192.168.33.252   4 u    - 1024  377    1.312  -1549.3 639.489
 192.168.33.249  192.168.33.252   4 u  626 1024  377  132.423   15.202  27.797
*192.168.33.252  192.168.33.51    3 u  802 1024  377    0,964  -27,486   2,993
Figura 9 – Utilizzo di ntpq per confermare la sincronizzazione dell'ora

Infine, ntpd funge sia da client che da server, quindi una volta avviato su un modulo VOS può fungere da server di riferimento temporale per altri moduli o qualsiasi altro elemento della rete.