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


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



/blog/