El demonio ntpd se encarga de setear y mantener el reloj del sistema con la hora actualizada, en sincronía con servidores de tiempo a través de Internet. En sistemas operativos GNU/Linux y FreeBSD, ntpd implementa el protocolo NTP (Network Time Protocol) versión 4 definido en la RFC-5905.



El demonio opera intercambiando mensajes con uno o más servidores de tiempo sobre un rango de intervalos designados. Cuando inicia, el programa requiere varios intercambios (ráfagas) con todos los servidores de tiempo configurados para establecer la hora correctamente.

En redes corporativas es común que todas las estaciones de trabajo sincronicen su reloj contra uno o varios servidores de tiempo centralizados. Para proteger la red de estas ráfagas (por ejemplo a las 8:00 AM cuando todos los usuarios encienden sus estaciones de trabajo al mismo tiempo), el intervalo de consulta inicial para cada servidor es retrasado un tiempo aleatorio. Por esta razón, pueden pasar algunos minutos hasta que el reloj de cada cliente sea sincronizado.

Hoy en día todos los sistemas y hardware incluyen un chip TOY (time-of-year) para mantener el reloj en funcionamiento cuando se corta el suministro de energía. Cuando una máquina se enciende, se utiliza este chip para establecer la hora inicial del sistema. Una vez que se ha sincronizado contra un servidor NTP, el sistema operativo se encarga de corregir la hora en este chip de forma periódica.

Si NTP detecta que la hora en el host está desfasada más de 1000 segundos respecto al servidor de tiempo, asume que algo debe estar muy mal y requiere la intervención del operador para setear el reloj manualmente. Típicamente NTP envía un mail a root. Como anécdota, ciertos sistemas de contabilidad y finanzas toman la hora del sistema para registrar las transacciones, por lo que a veces es necesario cambiar la hora y fecha del servidor (cuando se requieren hacer "correcciones" contables). Por lo tanto estoy acostumbrado a recibir este correo de ntpd cada vez que un responsable de área me pide cambiar la fecha del servidor al día X del mes Y del año pasado "porque tienen que corregir datos de carga" (en estos casos es conveniente no saber de qué se trata, si lo pide un responsable de área autorizado, cambiar la hora y no hacer preguntas).

Bajo condiciones de trabajo normales, ntpd ajusta el reloj en pasos pequeños, para que la escala de tiempo sea continua, sin saltos abruptos en la hora.

Todos mis servidores tienen el cliente NTP configurado contra un servidor NTP en la red local, como en toda red corporativa. De esta forma, todos los sistemas de la red están sincronizados con exactamente la misma hora. Sin embargo, a mi estación de trabajo FreeBSD nunca le configuré el cliente NTP, y el reloj en hardware estaba cada vez más adelantado (más de 5 minutos). Como dice el conocido refrán: "en casa de herrero cuchillo de palo".

Manos a la obra

En FreeBSD los servicios se habilitan en el archivo /etc/rc.conf:

# nano /etc/rc.conf 

Dentro de dicho archivo, agregar la siguiente línea:

# NTP
ntpd_enable="YES"

Guardar los cambios y cerrar (Ctrl+X).

ntpd obtiene su configuración desde el archivo ntp.conf ubicado, en los sistemas FreeBSD, dentro del directorio /etc:

# nano /etc/ntp.conf

La configuración por defecto del cliente NTP en los sistemas FreeBSD sincroniza contra servidores de ntp.org (Network Time Foundation). Comentar dichas líneas en la configuración y agregar una línea para sincronizar contra nuestro servidor de tiempo local:

#server 0.freebsd.pool.ntp.org iburst
#server 1.freebsd.pool.ntp.org iburst
#server 2.freebsd.pool.ntp.org iburst
#server 3.freebsd.pool.ntp.org iburst
server ntp.linuxito.com iburst

La opción "iburst" indica que cuando el servidor de tiempo esté fuera de alcance envíe ocho paquetes en lugar de uno, con 2 segundos de diferencia entre cada uno. Este comportamiento está diseñado para acelerar la sincronización inicial con el servidor.

Habiendo configurado el cliente NTP y habilitado el servicio, iniciar el demonio:

root@hal9000:~ # service ntpd start
Starting ntpd.

Luego de unos segundos, se observa que la hora se sincroniza correctamente:

root@hal9000:~ # date
Fri May 19 08:25:28 ART 2017
root@hal9000:~ # date
Fri May 19 08:17:56 ART 2017

Al fin tengo mi estación de trabajo en hora.

Referencias

man ntpd
man ntp.conf


Tal vez pueda interesarte



Compartí este artículo y dejá tu comentario