💾 Archived View for moribundo.flounder.online › blog › 026_ntp_ntpdate.gmi captured on 2024-03-21 at 15:27:06. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-05-24)
-=-=-=-=-=-=-
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
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.
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:
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)
El acceso al servidor puede controlarse mediante restricción de acciones de los clientes. Existen varias opciones:
Existen dos archivos de monitorización de 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:
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 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