¡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.