-- Leo's gemini proxy

-- Connecting to moribundo.flounder.online:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; charset=utf-8

- 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:


burst: Si el servidor esta disponible se envían 8 paquetes en lugar de 1, dejando 16 segundos entre el primer y segundo paquete y 2 segundos entre el resto de paquetes.

iburst: Es igual que el anterior pero solo si el servidor no esta disponible.



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:


minpoll 12 (2^12): 4.096 segundos 1,13 horas

maxpoll 14 (2^14): 16.384 segundos 4,5 horas


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:


ignore: Ignorar todos los paquetes provenientes de una dirección IP específica.

kod: Si se deniega el acceso se envía un paquete del tipo “beso de la muerte”.

limited: Deniega el servicio si los paquetes sobrepasan los limites establecidos con el comando discard.

lowpriotrap: Declara los mensajes atrapados de baja prioridad.

nomodify: Ignorar todos los paquetes de esa dirección IP que intenten modificar el servidor excepto las respuestas a las consultas realizadas, que obviamente modifican la hora del servidor.

noquery: Ignorar todos provenientes de esa dirección IP que soliciten consultas de información o configuración.

nopeer: Proporcionar servicio a esa IP solo si ya se estaba proporcionando servicio a la misma.

noserve: Ignorar los paquetes que no consultan o modifican el estado del servidor, esto es, consultas de sincronización de relojes.

notrap: No proveer el servicio de atrapar mensajes de control de paquetes de consulta del estado del servidor.

notrust: No utilizar esta IP como fuente de incronización.

ntpport: Aplicar la restricción solo si el puerto origen del paquete es el de NTP (UDP 123).

non-ntport: Aplicar la restricción si el puerto origen del paquete no es el de NTP (UDP 123).

version: Ignorar el ordenador si no soporta la versión de NTP indicada


Ficheros log


Existen dos archivos de monitorización de NTP:


driftfile: Donde almacenar la diferencia del reloj local, normalmente en /var/lib/ntp/drif

logfile: Log de funcionamiento, normalmente en /var/log/ntp.log



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
*linnaeus.inf.ed  129.215.64.241  2 u 432  1024  377   44.179   0.439   0.370

remote: IP o nombre de host

refid: Consulta la dirección de host ntp anterior

st: Estrato

when: Cuántos segundos se sincronizó la hora

poll: Cuántos segundos después de la próxima actualización

reach: Número de veces que el servidor ntp superior ha solicitado una actualización

delay: Retraso de la red

offset: Compensación de tiempo

jitter: Tiempo del sistema y diferencia de tiempo de BIOS


Los valores son:


*:	 El servidor es el elegido actualmente como servidor de referencia.
+:	 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

-- Response ended

-- Page fetched on Sat May 18 03:52:09 2024