Logotipo Network Time Protocol

Sincronizar la fecha y la hora en Debian con NTP

 
 

Índice General

  1. Introducción
  2. El demonio NTP
  3. El comando ntpdate

 

  1. Introducción (Volver al índice General)
    Network Time Protocol (NTP) es un protocolo de Internet utilizado por los sistemas operativos para sincronizar sus relojes con los servidores de hora, que cuentan con relojes precisos y confiables. NTP utiliza UDP como capa de transporte y usa el puerto 123.

    En este artículo veremos como instalar y configurar en un ordenador, con sistema operativo Debian, el servicio NTP para sincronizar el reloj del sistema con la hora de Internet, y además, veremos como actualizar inmediatamente la fecha y hora del sistema con la herramienta ntpdate.

    Nota: Los pasos a seguir en este artículo, en cuanto a las instalaciones, serán aplicables en aquellos sistemas operativos basados en Debian, y en cuanto a la configuración y ejecución de los programas, serán aplicables prácticamente en cualquier sistema Linux.

  2.  

  3. El demonio NTP (Volver al índice General)
    ntpd es un demonio NTP que se ejecuta en segundo plano y mantiene sincronizada la fecha y la hora del sistema basandose en la respuesta de los servidores NTP configurados. También actua como servidor NTP.

       

    • Instalación del demonio NTP (Volver al índice General)
      En primer lugar, instalaremos el servicio NTP ejecutando el siguiente comando:

      $ sudo apt install ntp

      Habilitaremos el servicio para que arranque con el sistema:

      $ sudo systemctl enable ntp
      Synchronizing state of ntp.service with SysV service script with /lib/systemd/systemd-sysv-install.
      Executing: /lib/systemd/systemd-sysv-install enable ntp

      Viendo la salida anterior, tendremos que habilitar NTP con el servicio SysV ejecutando el siguiente comando:

      $ sudo /lib/systemd/systemd-sysv-install enable ntp

      Para asegurarnos de que el servicio está en ejecución, podemos ejecutar el siguiente comando:

      $ sudo systemctl status ntp.service 
      ● ntp.service - Network Time Service
         Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
         Active: active (running) since Sun 2020-12-06 18:33:25 CET; 7s ago
           Docs: man:ntpd(8)
        Process: 1498 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
       Main PID: 1504 (ntpd)
          Tasks: 2 (limit: 4915)
         Memory: 1.7M
         CGroup: /system.slice/ntp.service
                 └─1504 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 128:127
       
      dic 06 18:33:28 mycomputer ntpd[1504]: Soliciting pool server 147.156.7.26
      dic 06 18:33:29 mycomputer ntpd[1504]: Soliciting pool server 162.159.200.1
      dic 06 18:33:29 mycomputer ntpd[1504]: Soliciting pool server 162.159.200.123
      dic 06 18:33:29 mycomputer ntpd[1504]: Soliciting pool server 147.156.7.50
      dic 06 18:33:30 mycomputer ntpd[1504]: Soliciting pool server 178.255.228.77
      dic 06 18:33:30 mycomputer ntpd[1504]: Soliciting pool server 5.56.160.3
      dic 06 18:33:30 mycomputer ntpd[1504]: Soliciting pool server 178.255.228.77
      dic 06 18:33:31 mycomputer ntpd[1504]: Soliciting pool server 51.38.162.10
      dic 06 18:33:31 mycomputer ntpd[1504]: Soliciting pool server 178.32.88.247
      dic 06 18:33:32 mycomputer ntpd[1504]: Soliciting pool server 2606:4700:f1::

      La salida nos indicará que está loaded (cargado) y active (activo).

    •  

    • Configuración del demonio NTP (Volver al índice General)
      Una vez instalado el paquete pasaremos a configurarlo. Para hacerlo editaremos el archivo /etc/ntp.conf:

      $ sudo nano /etc/ntp.conf

      En este archivo encontraremos una sección en la que se establecen los servidores de hora que el demonio NTP utilizará para la sincronización. Será un listado similar al siguiente:

      ...
      # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
      # pick a different set every time it starts up.  Please consider joining the
      # pool: 
      pool 0.debian.pool.ntp.org iburst
      pool 1.debian.pool.ntp.org iburst
      pool 2.debian.pool.ntp.org iburst
      pool 3.debian.pool.ntp.org iburst
      ...

      En nuestro ejemplo sustituiremos los servidores genéricos de Debian por los servidores específicos de nuestra región.
      En este enlace, podemos ver un listado de servidores de hora para España. No obstante, el Real Decreto 1308/1992 declara al Laboratorio del Real Instituto y Observatorio de la Armada como laboratorio depositario del Patrón Nacional de Tiempo y laboratorio asociado al Centro Español de Metrología, es decir, nuestra hora oficial. El servidor NTP oficial de España es hora.roa.es.
      Pues bien, leido lo anterior, en nuestro ejemplo los servidores de hora seleccionados serán los siguientes (comentaremos los servidores genéricos de Debian por si en el futuro nos hacen falta):

      ...
      # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
      # pick a different set every time it starts up.  Please consider joining the
      # pool: 
      #pool 0.debian.pool.ntp.org iburst
      #pool 1.debian.pool.ntp.org iburst
      #pool 2.debian.pool.ntp.org iburst
      #pool 3.debian.pool.ntp.org iburst
      server hora.roa.es
      server 0.es.pool.ntp.org
      server 1.es.pool.ntp.org
      server 2.es.pool.ntp.org
      server 3.es.pool.ntp.org
      ...

      Finalmente, reiniciamos el servicio con el siguiente comando:

      $ sudo systemctl restart ntp.service

      Si lo que deseamos es que nuestro equipo se sincronice con un servidor de hora ubicado en nuestra red, por ejemplo hora.zeppelinux.es, solo tendríamos que comentar o eliminar las líneas del resto de servidores y añadir el nombre o la IP del servidor de hora de nuestra red:

      ...
      # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
      # pick a different set every time it starts up.  Please consider joining the
      # pool: 
      server hora.zeppelinux.es
      ...

      Tras reiniciar el demonio NTP, transcurrido unos minutos se actualizará la hora de nuestro sistema automaticamente.

  4.  

  5. El comando ntpdate (Volver al índice General)
    ntpdate es un cliente sencillo de NTP que sincroniza el reloj del sistema con el tiempo obtenido de un servidor de NTP. Si el demonio NTP está instalado, entonces ntpdate no es necesario, pero es otra forma de poder sincronizar la hora de forma inmediata.

    Para instalar ntpdate, ejecutaremos el siguiente comando:

    $ sudo apt install ntpdate

    Para sincronizar el reloj de forma inmediata con un servidor de hora, ejecutaremos la siguiente orden:

    $ sudo ntpdate ip_o_nombre_de_servidor

    Por ejemplo:

    $ sudo ntpdate hora.roa.es

    Si tenemos instalado el demonio NTP y está en ejecución, obtendremos el siguiente error:

    6 Dec 19:29:50 ntpdate[2739]: the NTP socket is in use, exiting

    Para poder sincronizar la hora con ntpdate mientras se ejecuta el demonio NTP, tendremos que ejecutar la siguiente orden:

    $ sudo ntpdate -u hora.roa.es
       

    • Probando el cambio de hora (Volver al índice General)
      Podemos hacer una prueba para comprobar el cambio de hora:

      1. Cambiamos manualmente la hora con el comando date, por ejemplo:
        $ sudo date --set "07 Dec 2020 13:15"
      2. Si utilizamos un entorno de escritorio (desktop environment) como KDE o Gnome, veremos como cambia la hora del reloj. Para verlo desde la consola podemos ejecutar el siguiente comando:
        $ date
        lun dic  7 13:15:17 CET 2020

        y veremos que el cambio de hora ha tenido efecto.

      3. Ejecutamos ntpdate pasándole como parámetro la dirección del servidor de hora:
        $ sudo ntpdate hora.roa.es

        O si el demonio NTP está ejecutándose, este otro:

        $ sudo ntpdate -u hora.roa.es
      4. Finalmente, volvemos a comprobar si ha surtido efecto el cambio con date.

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.