NTPD vs Timedatectl

¡Hola!

No sabía como empezar este POST ya que me encontré con una curiosidad el cual me hizo pensar para el uso de los servidores.

Sabemos que si disponemos de una plataforma, lo ideal es tener todos los servidores o servicios con la misma hora.

Antes usaba el servicio de NTP o NTPDATE para poder configurar la hora de acuerdo a los servicios NTP (urls) externas.

Mi cuestión o duda vino en el momento en el que me fije en la salida del comando timedatectl el cual me puso manos a la obra para investigar un poco acerca de su conexión con los NTP.

¿NTPD o Timesyncd?

Lo primero que debemos hacer es preguntarnos acerca de esto, es decir como o cuando usar cada uno.

NTPD

Digamos que es un servicio que nos resuelve nuestros problemas a la hora de sincronizar con los NTP (urls). Pero no solo nos da este servicio sino que a través del mismo podemos ser nosotros los que demos la hora. Es decir que podemos hacer de puente/servidor con otros clientes para que usen nuestra hora.

Timedatectl

Comando por el cual podemos obtener o asignar la hora en nuestros servidores Linux. La parte de sincronización con servidores NTP lo usa para lo mínimo, es decir digamos que es un cliente más ligero que el propio NTPD.

Digamos que esto se creo como una alternativa más ligera o programada para ocupar el menor espacio/recursos.


¿Es recomendable tener los dos?

Absolutamente no, de hecho yo cometí el error de tenerlo los dos por la ignorancia y aunque funcionaba todo bien era como tener 2 programas que hacen lo mismo (Recordamos que lo que buscamos es eficiencia y los mínimos programas instalados).

Cuando hacía una consulta al timedatectl me daba «Active: inactive (dead)», es decir que estábamos usando el servicio NTPD.

Por lo tanto como hemos dicho anteriormente si solo vamos a sincronizar nuestra hora del servidor lo recomendable es hacerlo a través de timedatectl.

Timedatectl

systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:systemd-timesyncd.service(8)

Como podemos ver tenemos el caso de que nuestro servicio de timedatectl actualmente no está sincronizada con la hora. Eso es probable que ocurra si tenemos el protocolo NTP instalado en nuestro servidor.

Como es común, para poder avanzar debemos deshabilitar el servicio NTP o desinstalar el servicio. Ojo al desinstalar por si tiene dependencias y no hacerlo a lo loco.

Aquí vamos a enseñar a deshabilitarlo:

systemctl list-unit-files | grep ntp
ntp-systemd-netif.path                 enabled
ntp-systemd-netif.service              static
ntp.service                            enabled

Como podéis ver lo tengo habilitado con NTP. Vamos a deshabilitarlo del arranque y además paramos el servicio.

systemctl disable ntp
systemctl stop ntp
systemctl status ntp

Ahora solo nos queda activarlo con timedatectl

# Habilitando ntp
timedatectl set-ntp true
# Reiniciamos el servicio
systemctl restart systemd-timedated
# Por si no coge la hora también reiniciamos esto.
systemctl restart systemd-timesyncd
# Status
systemctl status systemd-timesyncd

Ahora vamos a ver la salida del status

● systemd-timesyncd.service - Network Time Synchronization
    Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2019-10-18 10:05:03 CEST; 1 weeks 4 days ago
      Docs: man:systemd-timesyncd.service(8)
  Main PID: 14587 (systemd-timesyn)
    Status: "Synchronized to time server 91.189.94.4:123 (ntp.ubuntu.com)."
     Tasks: 2 (limit: 1109)
    CGroup: /system.slice/systemd-timesyncd.service
            └─14587 /lib/systemd/systemd-timesyncd

Os he marcado las dos líneas en negrita que marcan que estamos sincronizados y además cuando ha sido.

En versiones de systemd mayores a la 239 (Versiones mayores o igual a Ubuntu 19.04) podemos obtener más información acerca del servicio de horas.

timedatectl show-timesync

Además también se puede ver sus propiedades.

timedatectl timesync-status

Con esto hemos terminado la explicación acerca del servicio timesyncd.

Deja un comentario

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