Cómo configurar ntpd en Ubuntu para una sincronización de tiempo precisa y estable

目次

1. Introducción: ¿Por qué es importante la sincronización horaria?

Problemas causados por la desincronización del sistema

En sistemas Linux como Ubuntu, mantener la hora exacta es de suma importancia. Aunque pueda parecer solo un pequeño error de reloj, en la operación de servidores y en entornos de ejecución de aplicaciones, una desviación horaria puede convertirse en la causa de fallos críticos.

Por ejemplo, pueden ocurrir los siguientes problemas:

  • Inconsistencia en los registros de logs
    Si las marcas de tiempo en los logs del sistema o de las aplicaciones están desfasadas, identificar la causa de un problema se vuelve muy difícil.
  • Mal funcionamiento de trabajos cron
    Las tareas programadas (copias de seguridad o procesos batch) pueden no ejecutarse en el momento correcto y activarse en tiempos inesperados.
  • Fallo en certificados SSL y autenticaciones de seguridad
    En comunicaciones HTTPS o autenticaciones SSH se requiere una hora precisa. Si hay desajuste, los certificados pueden considerarse “fuera de validez” y generar errores de conexión.

Estos problemas tienen un impacto especialmente grave cuando se administran varios servidores sincronizados en una red.

El papel y la importancia de NTP

Para prevenir estos problemas se utiliza el NTP (Network Time Protocol). NTP se comunica con servidores de tiempo en Internet o en la red local y ajusta automáticamente la hora del sistema.

En Ubuntu, existen varias herramientas relacionadas con NTP como ntpd, chrony y systemd-timesyncd. En este artículo nos centraremos en ntpd (Network Time Protocol daemon), explicando en detalle su instalación y uso en Ubuntu.

Especialmente en servidores de larga duración o en sistemas que requieren coherencia en los logs, la estabilidad de ntpd está ampliamente reconocida.

En el siguiente capítulo presentaremos qué es ntpd, su función básica y las opciones disponibles en Ubuntu.

年収訴求

2. ¿Qué es ntpd? Su papel y opciones en Ubuntu

Descripción general y características de ntpd

ntpd (Network Time Protocol Daemon) es un programa demonio que utiliza NTP para mantener la hora del sistema precisa. Se comunica periódicamente con servidores NTP en Internet o en la red local y ajusta automáticamente el reloj del sistema.

Una de sus características es la “sincronización gradual”, que corrige las desviaciones de tiempo poco a poco. Esto evita cambios bruscos de hora que puedan afectar negativamente a los sistemas y aplicaciones en ejecución.

Además, ntpd soporta funciones avanzadas de NTP como comunicación simétrica y autenticación, ofreciendo un servicio robusto de sincronización para entornos empresariales.

Herramientas de sincronización de tiempo disponibles en Ubuntu

En Ubuntu, las opciones de sincronización horaria incluyen:

  • ntpd (paquete ntp)
    Ampliamente utilizado en entornos de operación prolongada o con necesidades de configuración detallada. Ofrece flexibilidad y estabilidad, y permite sincronización de alta precisión con servidores NTP públicos.
  • chrony
    Una alternativa moderna a ntpd, con alta precisión y sincronización rápida tras el arranque. Funciona bien en entornos de pocos recursos y en máquinas virtuales. Muchas distribuciones lo adoptan como predeterminado.
  • systemd-timesyncd
    Un servicio ligero de sincronización horaria habilitado por defecto en Ubuntu 20.04 y versiones posteriores. Es simple y fácil de usar, pero con funciones limitadas, no apto para configuraciones avanzadas o como servidor NTP local.

Razones y ventajas de elegir ntpd

El mayor motivo para usar ntpd en Ubuntu es su fiabilidad y estabilidad. Es especialmente recomendable en los siguientes casos:

  • Servidores de larga duración donde la precisión horaria es crítica
  • Entornos que requieren un servidor NTP dentro de la red local
  • Necesidades empresariales con autenticación y control avanzado

Además, ntpd es ampliamente compatible con sistemas existentes y tiene un historial probado, reduciendo las preocupaciones al implementarlo.

3. Instalación y configuración inicial de ntpd en Ubuntu

Pasos para instalar ntpd

Para utilizar ntpd en Ubuntu, primero es necesario instalar el paquete ntp. El proceso es sencillo siguiendo estos pasos:

sudo apt update
sudo apt install ntp

Este comando instalará automáticamente ntpd y sus archivos relacionados. Según la versión de Ubuntu, chrony o systemd-timesyncd pueden estar habilitados por defecto. En ese caso, se recomienda deshabilitarlos o eliminarlos previamente.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

Habilitar el servicio y verificar su inicio

Una vez completada la instalación, habilita el servicio ntpd y confirma su estado de ejecución:

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

Si el comando status muestra “active (running)”, significa que ntpd se ha iniciado correctamente.

Verificación y edición del archivo de configuración inicial

La configuración de ntpd se define en el archivo /etc/ntp.conf. Justo después de la instalación, se incluyen varios servidores NTP predeterminados (normalmente de la serie pool.ntp.org).

Primero revisa el contenido del archivo:

cat /etc/ntp.conf

Si deseas especificar servidores en Japón, edítalo de la siguiente manera:

server ntp.nict.jp iburst

La opción iburst acelera la primera sincronización y se recomienda añadirla.

Después de modificar la configuración, reinicia ntpd para aplicar los cambios:

sudo systemctl restart ntp

Verificar la sincronización automática del sistema

Después de arrancar, ntpd sincroniza automáticamente la hora con los servidores configurados. Para confirmar que funciona correctamente, utiliza el siguiente comando:

ntpq -p

Este comando muestra la lista de servidores NTP conectados, junto con datos como latencia, desfase y jitter.

4. Configuración y personalización del servidor NTP

Selección recomendada de servidores NTP

Uno de los aspectos más importantes al configurar ntpd es elegir qué servidores NTP usar. Si te conectas a través de Internet, seleccionar servidores de alta fiabilidad en tu país mejora la estabilidad de la sincronización.

Servidores NTP representativos en Japón:

  • ntp.nict.jp (Instituto Nacional de Información y Comunicaciones)
  • ntp.jst.mfeed.ad.jp (JST・Mfeed)
  • ntp.ring.gr.jp (Internet Multifeed)

Estos servidores utilizan relojes atómicos de alta precisión y pueden usarse libremente para fines personales sin necesidad de registro.

Agrega estas líneas a /etc/ntp.conf para sincronizar con ellos:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

Parámetros de configuración en ntp.conf

Además de especificar servidores NTP, /etc/ntp.conf permite controlar comportamientos detallados. Configuraciones comunes incluyen:

  • Directiva restrict
    Define restricciones o permisos de conexión desde clientes. Es recomendable limitar accesos innecesarios para mayor seguridad. Ejemplo: permitir conexiones desde la red local.
  restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  • driftfile
    Especifica el archivo donde se guarda la deriva del reloj del sistema (pequeñas desviaciones). Normalmente el valor por defecto es suficiente.
  driftfile /var/lib/ntp/ntp.drift

Implementación de un servidor NTP en red local

Con Ubuntu y ntpd también es posible operar como servidor NTP dentro de una red interna, distribuyendo la hora a otros dispositivos. Esto resulta útil en entornos sin acceso a Internet o donde se requiere coherencia horaria en múltiples equipos.

Ejemplo de configuración:

  1. Añadir una regla restrict en /etc/ntp.conf para permitir acceso local restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  2. En los clientes, configurar la referencia al servidor NTP local server 192.168.0.10 iburst # IP local del servidor NTP
  3. Abrir el puerto NTP en el firewall (UDP 123) sudo ufw allow 123/udp

Si el tráfico está bloqueado, la sincronización no será posible y el comando ntpq no mostrará el estado de conexión con el servidor.

5. Verificación de funcionamiento y solución de problemas en ntpd

Cómo comprobar el estado del servicio

Para confirmar que ntpd está en ejecución, utiliza el siguiente comando:

sudo systemctl status ntp

Si aparece active (running), significa que funciona correctamente. En caso de inactive o failed, podría deberse a errores de configuración o dependencias faltantes.

Para revisar los registros en detalle:

journalctl -u ntp

Esto mostrará el historial de inicio del servicio ntpd y posibles errores.

Verificación de sincronización con el comando (ntpq -p)

El comando más usado para verificar la sincronización con servidores NTP es:

ntpq -p

Ejemplo de salida:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024

Significado de los campos principales:

  • remote: Nombre del servidor NTP conectado
  • st: Estrato del servidor, 1 es la referencia más precisa (reloj atómico, etc.)
  • reach: Historial de conexión (8 bits)
  • delay: Latencia de red (ms)
  • offset: Desfase temporal (ms)
  • jitter: Variación en la precisión

El servidor marcado con * es el que actualmente está siendo utilizado para sincronizar.

Errores comunes y cómo solucionarlos

A continuación se presentan errores frecuentes al implementar ntpd y cómo resolverlos:

1. No aparece información en ntpq -p / reach = 0

  • Causa: El puerto UDP 123 está bloqueado en el firewall o router.
  • Solución: Verifica que tanto en el servidor como en los clientes el firewall permita el tráfico NTP.
sudo ufw allow 123/udp

2. Mensaje “System clock not synchronized”

  • Causa: ntpd no se está ejecutando o compite con otro servicio de sincronización (como systemd-timesyncd).
  • Solución: Deshabilita servicios innecesarios y reinicia ntpd.
sudo systemctl disable systemd-timesyncd
sudo systemctl restart ntp

3. Error al resolver el nombre del servidor NTP

  • Causa: Problemas de DNS o fallos de red.
  • Solución: Comprueba la resolución de nombres con ping ntp.nict.jp y corrige la configuración DNS si es necesario.

4. Desajuste grande que no se sincroniza

  • Causa: ntpd no corrige automáticamente grandes desviaciones por motivos de seguridad.
  • Solución: Ajusta manualmente la hora inicial y luego reinicia ntpd.
sudo ntpd -gq  # Sincronización inmediata única
sudo systemctl restart ntp

Supervisión continua

En entornos de producción, es recomendable registrar periódicamente la salida de ntpq -p con un script y generar alertas en caso de anomalías. Si el valor reach se mantiene en 0 o los registros se interrumpen repentinamente, puede indicar un fallo en el servicio.

6. Comparación de ntpd con otras herramientas de sincronización horaria

Principales herramientas en Ubuntu

En Ubuntu se pueden usar varias herramientas de sincronización horaria, cada una con ventajas específicas según el entorno. Las más comunes son:

  • ntpd (paquete ntp)
  • chrony
  • systemd-timesyncd

Conocer sus diferencias ayuda a elegir la más adecuada para cada caso.

Características de ntpd

  • Ventajas
  • Estabilidad y fiabilidad probadas durante años
  • Amplia variedad de funciones y configuraciones (servidor NTP local, autenticación, modo simétrico, etc.)
  • Alta compatibilidad con servidores NTP públicos y abundante documentación
  • Desventajas
  • La primera sincronización tras el arranque puede ser lenta
  • Adaptación limitada a entornos modernos como redes virtualizadas

Características de chrony

  • Ventajas
  • Sincronización rápida tras el arranque
  • Alta precisión en entornos variables (máquinas virtuales, portátiles, VPN)
  • Capacidad de aprendizaje autónomo, a menudo superando la precisión de ntpd
  • Desventajas
  • Configuración más compleja como servidor NTP local
  • Menos documentación y casos prácticos que ntpd

Características de systemd-timesyncd

  • Ventajas
  • Habilitado por defecto desde Ubuntu 20.04
  • Instalación y gestión extremadamente sencillas
  • Consumo mínimo de recursos
  • Desventajas
  • Funciones limitadas, no apto como servidor NTP local
  • Precisión y registro simplificados, no recomendado para sistemas de gran escala

Tabla comparativa

Característicantpdchronysystemd-timesyncd
PrecisiónAltaMuy altaMedia
Velocidad de sincronización inicialA veces lentaMuy rápidaMedia
Servidor NTP local○ (algo complejo)× (no disponible)
Flexibilidad de configuraciónAltaMediaBaja
Compatibilidad con entornos virtuales
Experiencia de uso / documentación
Uso recomendadoServidores, entornos corporativosVMs, portátiles, redes variablesPC individuales, principiantes

Recomendaciones por escenario

  • Servidores (especialmente en operación continua)
     → Recomendado ntpd o chrony por su estabilidad y precisión.
  • Entornos en la nube, máquinas virtuales o portátiles
     → chrony es más flexible y preciso.
  • Uso básico en un solo PC
     → systemd-timesyncd es suficiente.

7. Preguntas frecuentes (FAQ)

Q1. ¿ntpd viene instalado por defecto en Ubuntu 22.04?

A1.
No. En Ubuntu 22.04, ntpd no está instalado por defecto. El servicio estándar habilitado es systemd-timesyncd, que realiza una sincronización básica. Para usar ntpd, es necesario instalar manualmente el paquete ntp.

sudo apt install ntp

Además, tras la instalación se recomienda deshabilitar systemd-timesyncd para evitar conflictos.

Q2. ¿Por qué ntpq -p no muestra resultados?

A2.
Las posibles causas incluyen:

  • El servicio no está activo: Verifica con sudo systemctl status ntp y actívalo si es necesario.
  • Problemas de comunicación con servidores NTP: Asegúrate de que el puerto UDP 123 no esté bloqueado por el firewall.
  • Errores en el archivo de configuración: Comprueba /etc/ntp.conf en busca de errores de sintaxis.

Primero ejecuta:

ntpq -p

Si la salida está vacía o reach se muestra como 0, podría ser un fallo de conexión con los servidores externos.

Q3. ¿Debo elegir ntpd o chrony?

A3.
Depende del entorno:

  • Servidores físicos de larga duración o servidores NTP localesntpd es más estable.
  • Entornos virtuales, portátiles o redes variables (Wi-Fi, VPN)chrony ofrece mayor precisión.
  • Sincronización básica sin configuraciones avanzadassystemd-timesyncd es suficiente.

Q4. ¿Qué hace el comando ntpd -gq?

A4.
ntpd -gq sincroniza el reloj una sola vez con un servidor NTP y luego se detiene.

  • -g: Permite corregir grandes desajustes de tiempo.
  • -q: Ejecuta la sincronización una vez y finaliza (sin ejecutarse como demonio).

Es útil cuando la hora del sistema está muy desfasada y ntpd no la corrige automáticamente.

Q5. ¿Conviene especificar varios servidores NTP?

A5.
Sí. Definir múltiples servidores mejora la redundancia y la fiabilidad. Si uno falla, los demás pueden mantener la sincronización.

Ejemplo en /etc/ntp.conf:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. Conclusión: Mejora la fiabilidad del sistema con sincronización horaria estable

Recordatorio sobre las ventajas de ntpd

En sistemas Ubuntu, la sincronización precisa del tiempo no es solo una cuestión de comodidad. Está directamente relacionada con la seguridad, la resolución de problemas, la gestión de registros y la exactitud de procesos automatizados.

En este artículo revisamos desde los fundamentos de NTP (Network Time Protocol), el uso de ntpd, la instalación, configuración y personalización, hasta su comparación con otras herramientas de sincronización.

Consejos para los lectores

La elección de la herramienta de sincronización horaria en Ubuntu depende de los objetivos, la arquitectura del sistema y los requisitos de disponibilidad.
Pero el principio es universal: “sin tiempo preciso, no hay operación estable”.

  • Para servidores o entornos con gestión de registros → Configurar adecuadamente ntpd o chrony.
  • Para un uso individual y simplesystemd-timesyncd es suficiente.

Aunque la importancia de la hora exacta no siempre es evidente en la rutina diaria, se convierte en un punto crítico en momentos de fallo. Tener una base temporal confiable siempre marcará la diferencia.

Usa esta guía para implementar la solución de sincronización horaria más adecuada en tu entorno Ubuntu.

侍エンジニア塾