ntp-dali

Network Time Protocol (NTP) (f: wikipedia) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos conmutando paquetes de datos en redes con latencia variable. NTP utiliza el protocolo UDP como su capa de transporte (puerto 123). Está diseñado para resistir a los efectos de la latencia variable.

En este apunte voy a explicar cómo configurar NTP en un equipo GNU/Linux (distribución Gentoo) para ajustar la hora y que se mantenga, a la vez que pueda hacer de servidor horario en tu red casera.

NTP + NTP-CLIENT

Los relojes hardware no son demasiado buenos, (calidad de los relojes). El sistema mantendrá el reloj a través de técnicas software mientras que el servidor está arrancado, pero una vez que apagas el servidor, el reloj HW puede que se quede bastante desincronizado, esa es la razón por la que forzaré una sincronización del reloj durante el re-arranque del sistema.

Voy a ejecutar el daemon NTP como un servicio y lo ejecutaré con un usuario diferente a root. Para poder ejecutar ntp como un usuario diferente a root es necesario configurar lo siguiente en ciertas versiones del Kernel y activar el USE “caps”.

  • Instalación

Ejecuto la instalación de ntpd y ntpclient

El programa ntpd tiene que ejecutarse como un servicio y el programa ntp-client tiene que ejecutarse durante el arranque. Si es la primera vez que vas a sincronizar, te recomiendo hacer lo siguiente: añade los servicios, cambia la hora con ntp-client (para ajustar el reloj software) y rearranca el equipo, para que se cambie el reloj hardware y luego se arranquen ntpd de forma normal.

Ejecución con openrc

Configuro los ficheros de apoyo. El daemon ntpd utiliza por defecto el fichero /etc/ntp.conf

Ejecución con systemd

Configuro los ficheros de apoyo. El daemon ntpd utiliza por defecto el fichero /etc/ntp.conf pero en mi caso he preferido cambiarle el nombre. NOTA: Esto es una decisión personal porque creo que tiene más sentido añadir la “d” de daemon, así que recordar que he cambiado el nombre del fichero de configuración a /etc/ntpd.conf e indicaré al ejecutable que lo utilice en el fichero ntpd.service.

Programo el reloj y deshabilito el cliente NTP que trae systemd.

Configuro los .service de ntp y ntp-client

Habilito el servicio

  • Gestión de NTPD

Puede llegar a tardar hasta 4 horas calibrar el reloj antes de llegar al estado correcto de Stratum (dado que estás sincronzando con servidores stratum 2, tu estado debería ser de stratum 3). De hecho la razón por la que ejecuto ntp-client (antes que ntpd) es para poner el equipo en hora y que este proceso sea más rápido. Cuando ntpd arranque y vea que la hora del equipo coincide con la de sus servidores, tardará muy poco en sincronizar. Si el estado no ha cambiado tras un rato es que algo está fallando. Lo correcto es que diga que es “stratum=3”

Si después de una horas tu servidor sigue en stratum 16 entonces es que algo está fallando. Mira esta guía. Puedes comprobar contra qué servidores estás conectados

OpenNTP

A continuación muestro un ejemplo de configuración para varios equipos Linux con systemd. He configurado dos como Servidores NTP con “OpenNTPD” y el resto usarán el cliente embebido en systemd.

Servidores con Openntpd

OpenNTPD es una versión ligera del servidor NTP que se ha portado desde OpenBSD. Configuro dos equipos como servidores: cortafuegix y apodix.

  • Instalación

Configuración como Daemon

  • Programo el reloj y deshabilito el cliente NTP que trae systemd

  • Configuro el fichero para que actúe como servidor

  • Programo el daemon para que arranque en el siguiente boot y lo activo

Cliente con systemd-timesyncd

Para los equipos cliente utilizo el que incluye systemd

  • Programo el reloj y deshabilito el cliente NTP que trae systemd