# Automatización de la configuración de sincronización horaria en sistemas Linux con NTP o Chrony

- Link: https://binariocero.com/linux/automatizacion-de-la-configuracion-de-sincronizacion-horaria-en-sistemas-linux-con-ntp-o-chrony
- Published: 2025-07-26T12:15:24+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

En entornos empresariales, la correcta sincronización horaria de los sistemas es
crucial para mantener la coherencia en registros, autenticaciones, y procesos distribuidos.
Este artículo presenta dos scripts automatizados, uno para sistemas **Debian/Ubuntu**
y otro para **CentOS/RHEL**, que detectan si el sistema usa **NTP** o **Chrony**
y configuran el servicio adecuadamente utilizando un servidor de tiempo genérico(`
time.example.com`).

## ¿Qué hacen los scripts?

Ambos scripts:

 * Detectan automáticamente si está instalado **NTP** o **Chrony**.
 * Configuran el archivo correspondiente (`ntp.conf` o `chrony.conf`) desactivando
   las entradas existentes y añadiendo el nuevo servidor.
 * Habilitan y reinician el servicio.
 * Verifican el estado de sincronización.

## Script para Debian/Ubuntu

    ```wp-block-preformatted
    #!/bin/bashDC_SERVER="time.example.com"NTP_CONF="/etc/ntp.conf"CHRONY_CONF="/etc/chrony/chrony.conf"check_installed() {    dpkg -l | grep -qw "$1"}configure_ntp() {    echo "Configurando NTP..."    sed -i 's/^server/#server/g' $NTP_CONF    echo "server $DC_SERVER iburst" >> $NTP_CONF    cat <<EOF >> $NTP_CONFrestrict default kod nomodify notrap nopeer noqueryrestrict 127.0.0.1restrict ::1EOF    systemctl enable ntp    systemctl restart ntp}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 "Comprobando si NTP o Chrony están instalados..."if check_installed ntp; then    echo "NTP ya está instalado."    configure_ntpelif check_installed chrony; then    echo "Chrony ya está instalado."    configure_chronyelse    echo "No hay NTP ni Chrony. Instalando NTP..."    apt update && apt install -y ntp    configure_ntpfiecho "Verificando sincronización..."timedatectl statusntpq -p || chronyc sources -v
    ```

## Script para CentOS/RHEL

    ```wp-block-preformatted
    #!/bin/bashDC_SERVER="time.example.com"NTP_CONF="/etc/ntp.conf"CHRONY_CONF="/etc/chrony.conf"check_installed() {    rpm -q "$1" &>/dev/null}configure_ntp() {    echo "Configurando NTP..."    sed -i 's/^server/#server/g' $NTP_CONF    echo "server $DC_SERVER iburst" >> $NTP_CONF    cat <<EOF >> $NTP_CONFrestrict default kod nomodify notrap nopeer noqueryrestrict 127.0.0.1restrict ::1EOF    systemctl enable ntpd    systemctl restart ntpd}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 "Comprobando si NTP o Chrony están instalados..."if check_installed ntp; then    echo "NTP ya está instalado."    configure_ntpelif check_installed chrony; then    echo "Chrony ya está instalado."    configure_chronyelse    echo "No hay NTP ni Chrony. Instalando NTP..."    yum install -y ntp    configure_ntpfiecho "Verificando sincronización..."timedatectl statusntpq -p || chronyc sources -v
    ```

## Consideraciones finales

 * Puedes reemplazar `time.example.com` por un servidor NTP corporativo o uno público
   como `pool.ntp.org`.
 * Es recomendable abrir los puertos UDP 123 si existen restricciones de firewall.
 * En sistemas modernos, se recomienda Chrony por su mayor precisión y rapidez de
   convergencia, especialmente en entornos virtualizados.

Estos scripts son útiles en despliegues automatizados, entornos de configuración
masiva o como parte de sistemas de provisión como Ansible o scripts de inicio.
