La correcta sincronización del tiempo en los sistemas Linux es esencial para el funcionamiento de servicios críticos como autenticación, registros de auditoría, sistemas distribuidos o tareas programadas. Este artículo presenta dos scripts de configuración automatizada que detectan e instalan el servicio de sincronización de tiempo más adecuado (Chrony o NTP), lo configuran con un servidor de tiempo genérico público (pool.ntp.org
) y aseguran su correcta activación y verificación.
Objetivo
- Detectar si
chrony
ontp
están instalados. - Instalar
chrony
si no hay ningún servicio de sincronización. - Configurar el servicio correspondiente para sincronizar contra
pool.ntp.org
. - Activar y reiniciar el servicio.
- Verificar el estado de sincronización.
Script para Debian/Ubuntu
#!/bin/bash
NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony/chrony.conf"
NTP_CONF="/etc/ntp.conf"
check_installed() {
dpkg -l | grep -qw "$1"
}
configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chrony
systemctl restart chrony
}
configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntp
systemctl restart ntp
}
echo "Comprobando si chrony o ntp están instalados..."
if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
apt update && apt install -y chrony
configure_chrony
fi
# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p
Script para CentOS/RHEL
#!/bin/bash
NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony.conf"
NTP_CONF="/etc/ntp.conf"
check_installed() {
rpm -q "$1" &>/dev/null
}
configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chronyd
systemctl restart chronyd
}
configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntpd
systemctl restart ntpd
}
echo "Comprobando si chrony o ntp están instalados..."
if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
yum install -y chrony
configure_chrony
fi
# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p
Consideraciones finales
- Chrony es recomendado para sistemas modernos, especialmente en entornos virtualizados o con redes intermitentes.
- pool.ntp.org es una fuente pública fiable, pero en entornos corporativos es recomendable configurar un servidor NTP interno sincronizado con fuentes autorizadas.
- Ambos scripts están preparados para ejecutarse con privilegios de superusuario y realizar los cambios sin intervención manual.
Estos scripts son ideales para automatizar despliegues en entornos híbridos o heterogéneos, simplificando la administración del tiempo en sistemas Linux.