Configuración del servidor de tiempo en Debian

Inicio
Última actualización: 12 de febrero, 2011

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 adoptada 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
 5 Feb 13:31:05 ntpdate[12599]: adjust time server 146.83.183.179 offset 0.000586 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; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift


# Enable this if you want statistics to be logged.
#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 about 1000 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 dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic

Lo más importante de este archivo es la definición del servidor NTP que se especifica en server. Los servidores 0.debian.pool.ntp.org, etc. son un alias a la lista rotante de servidores NTP correspondientes al país de origen. En Chile existen actualmente tres,

ntp.reuna.cl
inti.inf.utfsm.cl
trauco.inf.utfsm.cl

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
146.83.183.179: 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..

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 pool NTP 1.

Copyright © 2002-2011 Ricardo Yanez

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

This document was generated using AFT v5.097