NTP (Network Time Protocol) se utiliza para sincronizar la hora del sistema con una hora de referencia proporcionada por servidores especiales. Este artículo cubre cómo configurar NTP en diferentes sistemas operativos y dispositivos, comenzando con una guía completa para configurar un servidor NTP en Linux.
Demostraremos la configuración de la sincronización usando Ubuntu, pero esta guía también se aplica a Debian y la mayoría de los sistemas basados en Linux. Hemos dividido las instrucciones en tres partes: la primera cubre la instalación del servidor NTP, la segunda explica cómo sincronizar los clientes NTP, y la tercera cubre configuraciones avanzadas de sincronización.
Para seguir esta guía, necesitarás lo siguiente:
Un servidor en la nube con Ubuntu instalado.
Un usuario root o un usuario con privilegios sudo.
Nano o cualquier otro editor de texto instalado.
Estos pasos te guiarán a través de la instalación y preparación del servidor NTP para su configuración.
Actualiza el índice del repositorio para asegurarte de que puedas descargar las versiones más recientes del software. Usa el siguiente comando:sudo apt-get update
Instala el servidor NTP:sudo apt-get install ntp
Confirma la instalación eligiendo "Y" si se te solicita (Y/N). Espera hasta que el software se descargue e instale.
Verifica la instalación:sntp --version
La salida debería mostrar el número de versión y el tiempo de instalación.
Conéctate con el servidor más cercano.
El servidor debería recibir la hora correctamente de forma predeterminada, pero es mejor conectarse a un servidor cercano para mayor fiabilidad. Para hacerlo, edita el archivo ntp.conf ubicado en /etc/ntp.conf. Ábrelo con nano (necesitas privilegios sudo) ingresando:sudo nano /etc/ntp.conf
En el archivo abierto, verás cuatro líneas que hemos resaltado en naranja para referencia: Estas son las pools predeterminadas, que reemplazaremos con locales (por ejemplo, para los EE. UU., podemos usar servidores NTP de esta página). Después de reemplazar las líneas, guarda y cierra el archivo ntp.conf presionando Ctrl+O y luego Ctrl+X.
Reinicia el servidor:sudo service ntp restart
Verifica el estado del servidor:sudo service ntp status
La salida debería indicar "Active (running)" en una de las primeras líneas (Active) y el tiempo de inicio del servidor.
Configura el firewall.
Para permitir que los clientes accedan al servidor, abre el puerto UDP 123 usando UFW con el siguiente comando:sudo ufw allow from any to any port 123 proto udp
La instalación está completa y el servidor está en funcionamiento. Ahora puedes continuar con la configuración adicional.
Los siguientes pasos permitirán que los sistemas cliente se sincronicen con nuestro servidor NTP, que servirá como su fuente de tiempo primaria.
Verifica la Conexión
Para verificar la configuración de red para NTP, ingresa el siguiente comando en la terminal:sudo apt-get install ntpdate
Especifica la IP y el Nombre de Host
Para configurar la IP y el nombre de host del servidor, edita el archivo hosts ubicado en /etc/hosts:sudo nano /etc/hosts
Agrega los datos relevantes en la tercera línea desde arriba (la dirección que aparece a continuación es solo un ejemplo; reemplázala con la IP real de tu servidor NTP):192.168.154.142 ntp-server
Presiona Ctrl+X para salir y guarda los cambios presionando Y. Alternativamente, si tienes un servidor DNS, puedes realizar este paso allí.
Verifica la Sincronización del Cliente con el Servidor
Para verificar si la sincronización está activa entre el servidor y el cliente, ingresa:sudo ntpdate ntp-server
La salida mostrará la diferencia de tiempo. Una pequeña diferencia de milisegundos es normal, por lo que puedes ignorar valores pequeños.
Desactiva el Servicio timesyncd
Este servicio sincroniza la hora local del sistema, pero no lo necesitamos ya que nuestros clientes se sincronizarán con el servidor NTP. Desactívalo con:sudo timedatectl set-ntp off
Instala NTP en el Sistema Cliente
Instala NTP en el cliente con este comando:sudo apt-get install ntp
Establece tu Servidor NTP como la Referencia Primaria
Para asegurarte de que los clientes se sincronicen específicamente con tu servidor, abre el archivo ntp.conf y agrega la siguiente línea:server NTP-server-host prefer iburst
La directiva prefer marca al servidor como preferido y iburst permite realizar múltiples solicitudes al servidor para una mayor precisión de sincronización. Guarda los cambios presionando Ctrl+X y confirma con Y.
Reinicia el Servidor
Reinicia el servidor NTP con este comando simple:sudo service ntp restart
Verifica la Cola de Sincronización
Finalmente, verifica el estado de la sincronización ingresando:ntpq -ps
Este comando muestra la lista de servidores en la cola de sincronización, incluyendo tu servidor NTP como la fuente.
Ahora que hemos configurado el servidor NTP y sincronizado las máquinas cliente, volvamos al archivo ntp.conf (que se encuentra en /etc/ntp.conf). Este archivo contiene configuraciones adicionales para garantizar una sincronización robusta con fuentes externas.
Marca el servidor o grupo de servidores más confiables con la directiva prefer que hemos usado antes. Por ejemplo:
server 1.north-america.pool.ntp.org prefer
La directiva server indica un servidor específico, mientras que pool puede usarse para especificar un grupo de servidores. No olvides la línea server 127.127.1.0 al final de la lista de pools, que utiliza la hora del sistema si se pierde la conexión.
Asegúrate de que las siguientes líneas estén presentes en ntp.conf:
restrict default kod notrap nomodify nopeer noquery
La directiva default aplica estas configuraciones como predeterminadas para todos los comandos restrict:
kod (Kiss-o’-Death) limita la tasa de solicitudes.
notrap bloquea la aceptación de comandos de control.
nomodify restringe los comandos que podrían modificar el estado del servidor.
nopeer prohíbe la sincronización con hosts externos.
noquery bloquea las solicitudes de consulta.
Para IPv4 usa -4 antes de default, y para IPv6 usa -6.
Aquí tienes un ejemplo de cómo usar algunos de estos comandos. La siguiente línea permite la sincronización de nodos en una red específica mientras restringe que esos nodos reciban comandos de control o que alteren el estado:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
Las siguientes líneas son necesarias para que el servidor se comunique consigo mismo:
restrict 127.0.0.1
restrict ::1
No olvides reiniciar el servidor después de hacer estos cambios.
Para verificar si NTP está funcionando correctamente, utiliza el comando ntpq -p. Con la configuración adecuada, la salida debería ser una tabla con columnas que se ven como sigue:
En la primera columna, verás la dirección del servidor de sincronización, seguida de su servidor principal, el nivel de estrato (columna st), y la columna de tipo (t). Las siguientes tres columnas muestran detalles sobre el último tiempo de sincronización, el intervalo de sincronización y el estado de fiabilidad (donde 377 indica ocho intentos exitosos de sincronización con ese servidor). Las dos últimas columnas muestran la diferencia de tiempo entre el servidor sincronizado y el servidor de referencia, así como el desplazamiento.
Presta atención a los símbolos en la primera columna que aparecen antes de la dirección IP:
Un símbolo "+" indica un servidor confiable para la sincronización.
Un "-" significa lo contrario, y
Un "*" indica el servidor actual elegido para la sincronización.
De vez en cuando, aparecerá una "x", lo que significa que el servidor no está disponible.
Para asegurarte de que el servidor esté distribuyendo la hora correcta, ejecuta el comando ntpdate desde otro sistema, especificando la IP del servidor NTP que deseas verificar. La salida debe ser algo como esto:
adjust time server (dirección IP aquí) offset 0.012319 sec
El número representa la desviación de la hora. Una desviación de alrededor de 0,01 segundos (12 milisegundos) es perfectamente aceptable.
Ahora que hemos completado la configuración de Linux, veamos la configuración del protocolo NTP en Windows.