💾 Archived View for moribundo.flounder.online › blog › 026_ntp_ntpdate.gmi captured on 2024-02-05 at 09:40:14. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-05-24)

-=-=-=-=-=-=-

- ENTRADA 026 -

En hora con NTP y ntpdate

Llegó el dia D, hora H. Bien chicos, sincronicemos los relojes...

Si usas un servicio de doble autenticación (2FA) para loguearte en webs sabrás que necesitas tener el reloj del sistema lo más preciso posible, ya que los códigos 2FA proporcionados por los programas de autenticación se basan en el tiempo y si no está sincronizado con la hora oficial, serán inválidos. Normalmente las aplicaciones de este tipo permiten un desfase de pocos segundos, así que hay que configurar la hora del sistema lo más precisa posible, y para ello usaré NTP y ntpdate bajo GNU/Linux.

Para saber más sobre 2FA:

► 2FA: Autenticación en dos factores

► 2FA por consola con PASS

NTP

Un poco de teoría

Network Time Protocol es el sistema más utilizado porque permite lanzar sincronizaciones cada pocos segundos o cada pocas horas, al servidor o servidores que quieras, según lo configures. Para que NTP funcione hay que lanzar el demonio ntpd desde init o systemd.

El archivo de configuración se encuentra en /etc/ntp.conf. y aquí es donde hay que especificar las conexiones y cómo se harán. NTP funciona mediante niveles o estratos. NTP es un protocolo escalonado y se divide en capas (estratos), que determinan la distancia desde el 'reloj de referencia' (nivel 0), que son relojes atómicos de cesio, y los GPS, y son los que distribuyen el Tiempo Universal Coordinado (UTC) a otros dispositivos. El último estrato posible es el 16.

Los dispositivos conectados a un reloj de referencia son los servidores de estrato 1, y a su vez los que se concetan a ellos son los de estrato 2, y así hasta 16.

Elegir servidor

Así pues, lo primero es configurar un servidor. Puedes elegir el que quieras, que sea más cercano a tu zona.

Existen además los servidores pool, mediante los que se efectúan diversas conexiones a otros servidores para mejorar la precisión, pero no son necesarios en un Pc doméstico, y además efectuan demasiadas conexiones hacia afuera.

Respecto a los estratos, se puede especificar solo un nivel, ya que no estoy prestando servicio NTP, solo estoy poniendo en hora mi Pc (gracias a @pela0 por la info).

Hay dos modificadores que podemos usar:

Frecuencia de sondeo

Al conectarse a los servidores para hacer la sincronización, NTP por defecto utiliza 1.024 segundos de tiempo máximo y 64 segundos de tiempo mínimo. Esto quizá es demasiado, así que podemos cambiar los valores.

Se usan potencias de 2, así que yo he configurado unos tiempos diferentes mediante dos opciones:

Estos valores son suficientes para un Pc de escritorio. Para que se tenga en cuenta el minpool/maxpool, debes agregarlos por servidor en el ntp.conf

NOTA:
minpoll tiene un límite de 4 (16 segundos)
maxpoll tiene un límite de 17 (36,4 horas)

Restricciones

El acceso al servidor puede controlarse mediante restricción de acciones de los clientes. Existen varias opciones:

Ficheros log

Existen dos archivos de monitorización de NTP:

Consultas a NTP

Para saber en cualquier momento qué está haciendo NTP existe el comando ntpq -p

Cuando lanzamos el comando veremos algo así:

remote		  refid	 	 st t when poll	 reach	delay	offset	jitter
==============================================================================
+ns2.puck.ch	  194.42.48.120	  3 u 394  1024  377   33.018   -0.087  0.382
+gaia.ailab.ch	  129.132.2.21	  3 u 391  1024  377   32.398   -0.815  0.126

Los valores son:


+:	 El servidor es utilizado en el algoritmo de cálculo.
-:	 El servidor ha sido descartado por ofrecer respuestas incorrectas.
x:	 El servidor ha sido descartado por problemas de distancia de sincronización.
#:	 El servidor es candidato a entrar en el algoritmo de calculo si alguno de los existentes no se encuentra disponible.
Espacio: El servidor ha sido descartado por no poder consultarse o ser local.

Ejemplo

Dejo aquí mi /etc/ntp.conf:

# Associate to Arch's NTP pool
#server 0.arch.pool.ntp.org
#server 1.arch.pool.ntp.org
#server 2.arch.pool.ntp.org
#server 3.arch.pool.ntp.org
server hora.roa.es iburst minpoll 12 maxpoll 14

restrict default kod limited nomodify nopeer noquery notrap
restrict 127.0.0.1
restrict ::1

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

NTPDATE

ntpdate es un comando que forma parte del paquete ntp en algunas distribuciones y que sirve para poner el reloj en hora cada vez que se lance el comando desde consola.

Para poner en hora el sistema hay que poner el siguiente comando como root:

ntpdate servidor-ntp

Este comando se puede añadir a cron, el demonio de autoejecución de GNU/Linux. Si solo quieres poner el sistema en hora al iniciar el equipo, hay que editar el archivo de cron mediante el comando crontab:

crontab -e
@reboot /usr/sbin/ntpdate hora.roa.es

Podemos revisar la lista de cron para ver si se ha incorporado bien:

crontab -l

Esto es todo, espero que sea de utilidad.

Tags #ntp #ntpdate #ntpd

◄ Listado de noticias

◄◄ Inicio