HOWTO: Cómo sincronizar la fecha y hora desde la terminal, usando Network Time Protocol (NTP).


ÍNDICE

  1. INTRODUCCIÓN
  2. JUSTIFICACIÓN
  3. MOSTRAR LA FECHA Y HORA
  4. SINCRONIZAR
  5. SINCRONIZAR LA HORA AUTOMÁTICAMENTE AL INICIAR EL SISTEMA
  6. IDEAS
  7. SITIOS RECOMENDADOS



INTRODUCCIÓN

Los equipos de cómputo necesitan tener la fecha y hora al corriente, de tal manera que sea posible registrar correctamente la fecha y hora de cambios realizados a archivos del sistema o de los usuarios. Desde 1985 se hace uso del protocolo NTP (Network Time Protocol) el cual permite sincronizar la fecha y hora entre equipos servidores y clientes, siendo los servidores quienes envían los datos correctos, y los clientes quienes ajustan su fecha y hora según la información proporcionada por el servidor.



JUSTIFICACIÓN

Si un equipo no tiene la fecha y hora correctos tanto los archivos del sistema como los de los usuarios se verán afectados al no reflejar correctamente el momento exacto de modificaciones realizadas, ocasionando que sea difícil identificar o auditar cambios en el sistema en base a la fecha y hora reales.

También se verían afectadas las tareas programas, pues se ejecutarían en momentos que no van acorde a la hora real. Este documento pretende explicar de manera sencilla cómo hacer que un equipo GNU/Linux reciba la fecha y hora correctos desde un servidor NTP, y aplique dichos cambios.

Aunque los entornos de escritorio tienen herramientas gráficas para ajustar la fecha y hora, nunca está de más el conocer cómo realizar dichos ajustes cuando se carece de un entorno, o cuando se desea tener mayor control sobre dichos ajustes.


MOSTRAR LA FECHA Y HORA

Para mostrar la fecha y hora actuales sólo basta ejecutar el comando date :

$ date
Sat Sep 19 14:39:48 CDT 2009

De esta manera se puede observar si la fecha y hora son correctos, y en caso de no serlo se puede ajustar manualmente, acorde al manual de date:

$ man date

Sin embargo para realizar el cambio manualmente el usuario requiere contar con otro reloj que le sirva de refencia, el cual deberá estar ajustado correctamente. Además la idea es hacer que el sistema automáticamente realice dicho ajuste, mediante una sincronización con otro equipo que con seguridad sí está ajustado correctamente.



SINCRONIZAR

El comando ntpdate es usado para establecer la conexión con un servidor NTP, y el parámetro -s (syncronize) indica que el equipo debe sincronizarse con un servidor específico. Es necesario anteponer el comando sudo puesto que la modificación de la fecha y hora afectará a todo el sistema, y la administración del mismo es tarea que corresponde al superusuario. He aquí un ejemplo:

$ sudo ntpdate -s pool.ntp.org

En el ejemplo anterior sólo se ha indicado el servidor Global (pool.ntp.org) el cual determina el lugar de donde procede la conexión del cliente, y en base a ello devuelve la fecha y hora correspondientes.

Para que la sincronización sea más precisa se recomienda usar los servidores de las Zonas Continentales, los cuales son:

  • África (africa.pool.ntp.org)
  • América (north-america.pool.ntp.org , south-america.pool.ntp.org)
  • Asia (asia.pool.ntp.org)
  • Europa (europe.pool.ntp.org)
  • Oceanía (oceania.pool.ntp.org)

Así pues los usuarios en Italia pueden usar:

$ sudo ntpdate -s europe.pool.ntp.org

mientras que los usuarios en México pueden usar:

$ sudo ntpdate -s north-america.pool.ntp.org

También es posible usar Zonas de Países, anteponiendo el código del país al servidor Global, por ejemplo:

Para Argentina:

$ sudo ntpdate -s ar.pool.ntp.org

Para España:

$ sudo ntpdate -s es.pool.ntp.org

Para México:

$ sudo ntpdate -s mx.pool.ntp.org

Es importante tomar en cuenta que no todos los países tiene un servidor registrado, así que no se debe suponer que el servidor para Venezuela es ve.pool.ntp.org ya que dicho servidor, al momento de la redacción de este documento, no existe. Para saber qué Zonas de Países existen se debe visitar el siguiente enlace, en donde se hace clic en cada Zona Continental para mostrar qué países tienen servidores NTP en dichas zonas:

http://www.pool.ntp.org/zone/@



SINCRONIZAR LA HORA AUTOMÁTICAMENTE AL INICIAR EL SISTEMA

Para que la máquina sincronice la hora automáticamente al iniciar sistema, sólo instalamos el paquete ntp.

sudo aptitude install ntp

Aclaración: La hora se sincronizará a los pocos minutos en que se inicie la sesión.



IDEAS

Con la información anteriormente obtenida es posible crear una tarea para que el demonio cron del sistema realice la sincronización cada determinado tiempo.
También se puede sincronizar la hora de la BIOS con el protocolo NPT:

sudo hwclock --systohc


SITIOS RECOMENDADOS

Los siguientes enlace son sitios recomendados para obtener más información al respecto:

Network Time Protocol: http://es.wikipedia.org/wiki/Network_Time_Protocol
NTP Pool Project: http://www.pool.ntp.org/
Horario de verano: http://es.wikipedia.org/wiki/Horario_de_verano
How do I setup NTP to use ntp.pool.org?: http://www.pool.ntp.org/use.html
Tiempo Universal Coordinado (UTC): http://es.wikipedia.org/wiki/Tiempo_universal_coordinado
World Clock: http://www.timeanddate.com/worldclock/