Ir al contenido principal

Tener la hora correcta en su módulo es fundamental para todo tipo de actividades, incluida la sincronización de los registros y la validación de los certificados de seguridad. A partir de la versión 15.1, el VOS se envía con un puerto del demonio del Protocolo de Tiempo de Red (ntpd) y se recomienda encarecidamente que lo ejecute.

Típicamente, para ejecutar el ntpd es necesario proporcionarle una lista de servidores de tiempo, hosts en la red que también ejecutan el ntpd y proporcionarán el tiempo a cualquier host que lo solicite. Hay un gran número de servidores de tiempo disponibles en Internet que puedes usar. Echa un vistazo a http://www.pool.ntp.org/en/ que organiza los servidores por región.

Sugiero listar uno o tres (o más) servidores, nunca dos. La policía de Toronto intenta averiguar qué servidor es mejor para usar comparando las respuestas de los servidores. Si sólo se enumeran dos servidores, es posible que la ntpd no pueda hacer una determinación y termine no utilizando ninguno.

Pero, ¿qué debe hacer si las políticas de su empresa le impiden acceder a los servidores de tiempo en Internet y no tiene un servidor de tiempo designado por la empresa? En ese caso, es posible que pueda utilizar un controlador de dominio local de Microsoft Windows (DC) o un controlador de dominio de respaldo (BDC). La mayoría de los DC y BDC proporcionan servicios de tiempo.

Entonces, como administrador de VOS, ¿cómo puede encontrar el DC o BDC local? La forma más simple es preguntar, pero asumiendo que no es una opción, puedes ejecutar el monitor de paquetes y verlo por ti mismo. Tanto las estaciones de trabajo como los controladores de dominio emiten periódicamente en el puerto UDP 138.

La orden

>sistema>stcp>biblioteca_de_comandos>monitor_de_paquetes -interfaz #INTERFACE -numérico
-time_stamp -verbose -pkt_hdr -hex_header -hex_dump -length 1500 -filter -port 138
Figura 1 - comando packet_monitor

mostrará estas emisiones (asegúrese de reemplazar INTERFAZ con el nombre de su interfaz IP). Desafortunadamente, para encontrar los servidores de tiempo necesita mirar los datos hexadecimales en el paquete y como probablemente habrá muchos paquetes para atravesar necesita volcar los paquetes en un archivo. Mi pm.cm, comando macro (puedes encontrar la macro aquí) creará automáticamente un archivo de salida y ejecutará el rastreo como un proceso iniciado. El archivo de salida tendrá el nombre pm.(fecha).(hora).out. El comando sería

pm #INTERFACE -no_arp -no_icmp -port 138
Figura 2 - macro de comando pm

Como sea que inicie el rastreo, déjelo correr por 15 o 20 minutos y debería obtener una transmisión de cada DC y BDC de su red. Luego busque las líneas con la cadena "c0 3" y "c0 2" en ellas; es decir, C minúscula, cero, cuatro espacios y un tres o un dos. El número corresponde al mordisco superior del byte en el offset c0. Ese byte puede ser decodificado como

ABCD EFGH
^^^^ ^^^^
|||| El anfitrión es una estación de trabajo...
|||| El host es un servidor...
|||| El host no es un servidor SQL.
|||| El host no es un controlador de dominio...
||||------- El host es un controlador de dominio de respaldo...
|||-------- El host es un servidor de tiempo.
||--------- El anfitrión no es un anfitrión de Apple.
|---------- El anfitrión no es un anfitrión de Novell.
Figura 3 - Decodificación de bytes de tipo servidor

Como puedes ver, al buscar los primeros tres o dos, puede que no consigas todos los servidores de tiempo, pero a menos que tengas un sitio exclusivo de Novel o Apple, debería conseguir al menos un DC o 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 - líneas packet_monitor que coinciden con el servidor de tiempo y el controlador de dominio de respaldo

No basta con encontrar las líneas "c0". También necesitas encontrar la dirección del anfitrión que envió el paquete. El comando grep que se puede encontrar en el directorio >system>gnu_library>bin puede coincidir en varias líneas

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 - líneas de packet_monitor que muestran los servidores de tiempo descubiertos

La dirección de los servidores de tiempo aparece en las líneas inmediatamente superiores a la línea "c0". En la figura anterior hemos identificado 192.168.33.249, 192.168.33.248, 192.168.33.253 y 192.168.33.252.

Ahora que hemos identificado los anfitriones que se anuncian como servidores de tiempo, ¿cómo podemos estar seguros de que funcionarán? El comando ntpdate puede ser usado para consultar manualmente cada servidor de tiempo. Utiliza el argumento "-q" para consultar sólo el servidor de tiempo, en este punto no queremos que ntpdate también establezca la hora del módulo.

ntpdate -q 192.168.33.248
Buscando el anfitrión 192.168.33.248 y el servicio ntp
host found : dc48.noahslab.stratus.com
servidor 192.168.33.248, estrato 4, compensación -0.117418, retraso 0.04202
6 Feb 17:53:10 ntpdate[1427079382]: ajustar el servidor de tiempo 192.168.33.248 offset -0
+.117418 seg.
listo 17:53:10

ntpdate -q 192.168.33.249
Buscando el host 192.168.33.249 y el servicio ntp
host found : dc49.noahslab.stratus.com
servidor 192.168.33.249, estrato 4, compensación -0.038709, retraso 0.04355
6 Feb 17:53:25 ntpdate[1427079382]: ajustar el servidor de tiempo 192.168.33.249 offset -0
+.038709 seg.
listo 17:53:25

ntpdate -q 192.168.33.252
Buscando el host 192.168.33.252 y el servicio ntp
host found : dc52.noahslab.stratus.com
servidor 192.168.33.252, estrato 3, compensación 0.015733, retraso 0.04216
6 Feb 17:53:38 ntpdate[1427079382]: ajustar el servidor de tiempo 192.168.33.252 offset 0.
+015733 seg.
listo 17:53:38
Figura 6 - usando ntpdate para probar los servidores de tiempo descubiertos - servidores en funcionamiento

Digamos que uno de los servidores tiene una política de cortafuegos que le impide dar la hora aunque la advierta, ntpdate mostrará lo siguiente.

ntpdate -q 192.168.33.254
Buscando el host 192.168.33.254 y el servicio ntp
host found : dc54.noahslab.stratus.com
servidor 192.168.33.254, estrato 0, compensación 0.000000, retraso 0.00000
6 Feb 17:54:00 ntpdate[1427079382]: no hay un servidor adecuado para la sincronización de la fuente
+d
listo a las 17:54:00
Figura 7 - usando ntpdate para probar los servidores de tiempo descubiertos - servidor que no funciona

Ahora que sabes qué servidores de tiempo puedes usar, puedes escribir el archivo >system>ntp>ntp.conf de la siguiente manera. Todo lo que está en negro viene del archivo sample_ntp.conf.17.0, los nuevos caracteres están en verde. Fíjese en el carácter de comentario que se añadió delante de la línea "servidor foo.bar.somewhere.com". Las declaraciones de restricción mejoran la posición de seguridad del sistema evitando que otros hosts hagan consultas fuera de tiempo contra el demonio ntp.

# Las directivas del servidor indican de dónde obtener el tiempo.
# Pueden ser valores DNS o IP, uno por cada directiva.
# servidor foo.bar.somewhere.com

servidor 192.168.33.248 burst iburst
servidor 192.168.33.249 burst iburst
servidor 192.168.33.252 burst iburst

# Home para el logile.  Elija un buen camino relativo - VOS absoluto
# Los nombres no pueden ser analizados correctamente.
logfile >sistema>ntp>ntp.logfile

# Home para el archivo de la deriva.
driftfile >sistema>ntp>ntp.drift

# Estas declaraciones evitarán las consultas fuera de tiempo de cualquier anfitrión, excepto el anfitrión local
restringir la consulta por defecto
restringir 127.0.0.1
Figura 8 - actualizado >sistema>ntp>archivontp.conf

Inicie el comando ntpd (hay un sample_start_ntpd.17.0 en el directorio >system>ntp) y después de unos minutos debería ver algo como lo siguiente. El "*" delante de 192.168.33.252 indica que ese es el servidor del que ntpd ha elegido tomar su tiempo. El "+" delante de 192.168.33.248 indica otra buena elección en caso de que no haya respuesta de 192.168.33.252. Mientras una de las líneas como un "*" en la columna uno sepa que la hora del módulo se sincronizará con un servidor de tiempo. Sin embargo, recuerde que puede tardar un tiempo en converger cuando la diferencia inicial entre el módulo y el servidor de tiempo sea grande.

ntpq -n
ntpq> peer
     El refid remoto se activa cuando el alcance del sondeo compensa la fluctuación.
==============================================================================
+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 - usando ntpq para confirmar la sincronización de tiempo

Finalmente, el ntpd actúa como cliente y servidor, así que una vez que se ejecuta en un módulo VOS puede actuar como servidor de tiempo para otros módulos o cualquier otra cosa en su red.