Configuración del servidor de tiempo en Debian

Inicio
Última actualización: 16 de diciembre, 2008

Table de Contenido

Introducción

Network Time Protocol (NTP) es un protocolo de red para sincronizar el reloj de un computador con la hora de una fuente de referencia, logrando una precisión de orden de milisegundos con respecto a la Hora Universal Coordinada (UTC). La hora UTC, que ha sido adoptado como la escala de tiempo estándar por la mayoría de las naciones del mundo, es basada en la rotación de la Tierra alrededor de su eje y en el calendario Gregoriano, que a su vez es basado en la rotación de la Tierra alrededor del Sol.

La hora UTC es diseminada a través de receptores especiales, como radios, satélites o módems, manejados por los gobiernos de varias naciones del mundo. Un número limitado de computadores están equipados con estos receptores y actúan como servidores de tiempo primarios (stratum 1), usados para sincronizar un número mucho mayor de servidores secundarios (stratum 2), que a su vez sincronizan a clientes ternarios (stratum 3) a través de protocolos de sincronización, como NTP, cuyos daemons a la vez actúan como servidores para sincronizar aún más clientes. Esto crea una cascada de servidores sincronizados.

¿Por qué sincronizar el reloj? Las ventajas son muchas y las desventajas ninguna. El reloj sincronizado con NTP está siempre a la hora oficial y no es necesario ajustarlo cada cierto tiempo. Los problemas asociados a un reloj desincronizado son múltiples. Por ejemplo, el sello de tiempo cuando se crea o modifica un archivo puede quedar con la hora y fecha equivocada. El correo electrónico que envías desde el computador podría llevar un sello de tiempo equivocado. ¿No te ha sucedido que has recibido correo con fechas totalmente erróneas?

Los computadores poseen en su circuito un reloj bastante inexacto, llamado reloj CMOS o reloj del hardware. Hemos comprobado que el drift típico del reloj del hardware en nuestros computadores es de unos 20 segundos por día. Esa es la inexactitud típica de un reloj de hardware que funciona correctamente. No es raro en computadores viejos que éste reloj esté defectuoso, probablemente debido a una batería descargada. Cuando el computador arranca, el reloj del sistema (el que ves en la barra del escritorio) se coloca según el reloj del hardware. Por eso sucede que al arrancar el computador, el reloj del sistema aparece a una hora y fecha descolocada, a pesar de haber sido puesto a la hora correcta recientemente. Esto se debe a la inexactitud o defecto del reloj del hardware.

Modificar el reloj del hardware

El reloj del hardware se modifica con el comando hwclock (hardware clock),

# hwclock --set --date="11/09/2006 15:27:30"

La fecha tiene el formato Inglés mm/dd/aaaa. El reloj de sistema no se modifica con éste comando, porque lo que se modificó fue el reloj del hardware. Copia la hora del reloj del hardware al reloj del sistema con el comando,

# hwclock --hctosys

Observa el reloj de la barra o da el comando 'date' para ver el efecto. hctosys significa "hardware clock to system clock".

Modificar el reloj del sistema

Primero, verifica que la variable de entorno UTC esté puesta en "UTC=yes" en el archivo de configuración /etc/default/rcS. Si el computador tiene adicionalmente el sistema operativo Windows, deja la variable en "UTC=no". Verifica que la zona esté correcta en el archivo de configuración /etc/timezone. Esta debería decir America/Santiago. Si la zona está incorrecta, modifícala con el comando tzselect. Luego da el comando date para ver la hora del sistema. Este comando retornará a la pantalla algo así,

  Sat Feb  3 15:22:57 CLT 2007

Instala el paquete ntpdate con,

# apt-get install ntpdate

La herramienta ntpdate es útil para sincronizar rápidamente la hora del sistema a la del servidor NTP y se corre siempre al arrancar el computador. Si deseas sincronizar nuevamente da el comando,

# ntpdate cl.pool.ntp.org
3 Feb 16:51:26 ntpdate[22719]: adjust time server 200.89.74.17 offset 0.018493 sec

A modo de prueba, modifica la hora con hwclock, atrasándola 12 horas y luego corre 'ntpdate cl.pool.ntp.org' para que veas como se sincroniza la hora rápidamente.

Esta herramienta no es apta para sincronizar cada cierto tiempo. Para ello se usa el daemon ntpd.  

Configuración de NTP cliente

Corre ntpdate una vez y luego instala el paquete ntp con,

# apt-get install ntp

El daemon ntpd correrá la sincronización cada cierto tiempo (varios minutos) tal de no ocupar mucha red.

La configuración de NTP está en el archivo /etc/ntp.conf y debería decir algo así,

# /etc/ntp.conf, configuration for ntpd

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable


# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# pool.ntp.org maps to more than 300 low-stratum NTP servers.
# Your server will pick a different set every time it starts up.
#  *** Please consider joining the pool! ***
#  *** <http://www.pool.ntp.org/join.html> ***
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

Lo más importante de este archivo es la definición del servidor NTP que se especifica en server.

Agrega a la lista el pool correspondiente a Chile y América del Sur,

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server cl.pool.ntp.org
server south-america.pool.ntp.org

Reinicia ntpd con,

# /etc/init.d/ntp restart

Verifica la sincronización después de unos 5 a 10 minutos con el comando ntptrace. Este comando retornará a la pantalla algo así,

$ ntptrace
localhost: stratum 3, offset 0.000044, synch distance 1.16098
debian.ciencias.uchile.cl: stratum 2, offset 0.000032, synch distance 0.16200
ntp0.ja.net: stratum 1, offset -0.023523, synch distance 0.00212, refid 'MSF'

Esto indica que el computador está sincronizado y a la vez se ha transformado en un servidor ternario (stratum 3).

Si ejecutando el comando ntptrace aparece el mensaje,

$ ntptrace
localhost: stratum 16, offset 0.000025, synch distance 0.00002
0.0.0.0: *Not Synchronized*

todavía no hay sincronización. Verifica todos los pasos de este manual y reinicia ntpd con,

# /etc/init.d/ntp restart

Finalmente, la sincronización ajusta el reloj del sistema, por lo que es necesario copiarla al reloj del hardware. Lo más simple es reiniciar hwclock con el comando,

# /etc/init.d/hwclock.sh restart

Aparecerá un mensaje así,

  Saving the system clock..
  Hardware Clock updated to Tue Apr 24 21:47:13 CLT 2007.

No es necesario hacer esto manualmente cada cierto tiempo. Debian reinicia hwclock para poner el reloj del hardware a la hora del sistema cada vez que el sistema se apaga o arranca.

Configuración de NTP servidor

Configura primero NTP cliente. Edita /etc/ntp.conf y modifica las restricciones, removiendo noquery,

...
restrict -4 default kod notrap nomodify nopeer 
restrict -6 default kod notrap nomodify nopeer
...

Si tienes un cortafuego, habilita el puerto 123 UDP hacia requerimientos por la interfase que va a servir NTP.

Reinicia ntpd con,

# /etc/init.d/ntp restart

Mayor información

Si deseas más información sobre NTP puedes instalar el paquete ntp-doc y leer la documentación adjunta. También puedes ir a la página web del proyecto NTP 1.

Copyright © 2002-2008 Ricardo Yanez

  [1] - http://www.ntp.org

This document was generated using AFT v5.096