Sincronización de Tiempo en Linux con Chrony, Scripts Automatizados para Entornos Debian/Ubuntu y RHEL

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

La correcta sincronización del tiempo en los servidores es esencial para garantizar la coherencia en logs, autenticaciones, servicios distribuidos y tareas programadas. Chrony es una alternativa moderna y eficiente a NTP (Network Time Protocol) tradicional, recomendada por muchas distribuciones Linux como sincronizador por defecto.

En este artículo presentamos dos scripts Bash diseñados para automatizar la instalación, configuración y verificación de Chrony, reemplazando cualquier instancia previa de NTP, tanto en sistemas basados en Debian/Ubuntu como en CentOS/RHEL. Los scripts utilizan como servidor de tiempo principal el servicio público confiable time.cloudflare.com.

Script para Debian/Ubuntu con Chrony

Este script:

  • Elimina cualquier instalación previa de NTP.
  • Instala Chrony si no está presente.
  • Configura Chrony para usar el servidor time.cloudflare.com.
  • Habilita y reinicia el servicio.
  • Muestra el estado de sincronización.
#!/bin/bash

DC_SERVER="time.cloudflare.com"
CHRONY_CONF="/etc/chrony/chrony.conf"

check_installed() {
dpkg -l | grep -qw "$1"
}

remove_ntp_if_exists() {
if check_installed ntp; then
echo "Eliminando NTP..."
systemctl stop ntp
systemctl disable ntp
apt remove --purge -y ntp
fi
}

install_chrony() {
echo "Instalando Chrony..."
apt update && apt install -y chrony
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF
sed -i 's/^server/#server/g' $CHRONY_CONF
echo "server $DC_SERVER iburst" >> $CHRONY_CONF
systemctl enable chrony
systemctl restart chrony
}

echo "Preparando sistema para usar Chrony..."

remove_ntp_if_exists

if check_installed chrony; then
echo "Chrony ya está instalado."
else
install_chrony
fi

configure_chrony

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking
chronyc sources -v

Script para CentOS/RHEL con Chrony

Este script realiza la misma función adaptada al entorno de paquetes RPM (CentOS/RHEL).

#!/bin/bash

DC_SERVER="time.cloudflare.com"
CHRONY_CONF="/etc/chrony.conf"

check_installed() {
rpm -q "$1" &>/dev/null
}

remove_ntp_if_exists() {
if check_installed ntp; then
echo "Eliminando NTP..."
systemctl stop ntpd
systemctl disable ntpd
yum remove -y ntp
fi
}

install_chrony() {
echo "Instalando Chrony..."
yum install -y chrony
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF
sed -i 's/^server/#server/g' $CHRONY_CONF
echo "server $DC_SERVER iburst" >> $CHRONY_CONF
systemctl enable chronyd
systemctl restart chronyd
}

echo "Preparando sistema para usar Chrony..."

remove_ntp_if_exists

if check_installed chrony; then
echo "Chrony ya está instalado."
else
install_chrony
fi

configure_chrony

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking
chronyc sources -v

Consideraciones Finales

  • Servidor NTP utilizado: En ambos scripts se ha configurado time.cloudflare.com, un servidor NTP confiable y de baja latencia. Puede reemplazarse fácilmente por cualquier otro servidor, ya sea público o interno.
  • Seguridad: Aunque Chrony es seguro por diseño, siempre es recomendable aplicar restricciones en redes productivas para evitar sincronizaciones no autorizadas.
  • Automatización: Estos scripts son ideales para ser usados en configuraciones automáticas vía Ansible, scripts de provisión o plantillas de imágenes.
Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.