0% encontró este documento útil (0 votos)
10 vistas7 páginas

Qué es el NTP y su funcionamiento

El Network Time Protocol (NTP) es un protocolo diseñado para sincronizar relojes en sistemas informáticos con una precisión de nanosegundos, utilizando el Tiempo Universal Coordinado (UTC) y operando sobre el protocolo UDP. NTP permite la sincronización jerárquica entre servidores y clientes, siendo tolerante a fallos y capaz de seleccionar las mejores fuentes de tiempo. Existen alternativas más seguras al NTP, como tlsdate y NTPsec, y el proyecto pool.ntp.org proporciona un clúster de servidores NTP accesibles globalmente.

Cargado por

Obdulio Santana
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas7 páginas

Qué es el NTP y su funcionamiento

El Network Time Protocol (NTP) es un protocolo diseñado para sincronizar relojes en sistemas informáticos con una precisión de nanosegundos, utilizando el Tiempo Universal Coordinado (UTC) y operando sobre el protocolo UDP. NTP permite la sincronización jerárquica entre servidores y clientes, siendo tolerante a fallos y capaz de seleccionar las mejores fuentes de tiempo. Existen alternativas más seguras al NTP, como tlsdate y NTPsec, y el proyecto pool.ntp.org proporciona un clúster de servidores NTP accesibles globalmente.

Cargado por

Obdulio Santana
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

NTP: el protocolo de sincronización para

sistemas de TI
Los relojes de los sistemas informáticos suponen una valiosa ayuda a cualquiera que
necesite saber qué hora es y no tenga ni un reloj de pulsera ni un smartphone a mano.
Sin embargo, muy pocas personas saben que la hora que marca el sistema no solo es
relevante para el usuario, sino también para los propios ordenadores. Durante un
intercambio de información entre dos o más sistemas y, concretamente, para el
correcto funcionamiento de procesos dependientes de la red, los sellos de tiempo
desempeñan un papel central. Con el objetivo de prevenir complicaciones del sistema
debido a la existencia de tiempos asíncronos, en 1985 se publicó el llamado Network
Time Protocol (NTP).

Índice

1. ¿Qué es el NTP?
2. ¿Cómo funciona el protocolo de tiempo de red?
3. Qué distingue a NTP
4. ¿Qué sistemas operativos soportan NTP?
5. ¿Cuáles son las alternativas al Network Time Protocol?
6. [Link]: el clúster de Internet de miles de servidores NTP

¿Qué es el NTP?
El protocolo de tiempo de red o NTP es el resultado del trabajo de desarrollo realizado
por David L. Mills, profesor de la Universidad de Delaware (Estados Unidos). La
primera especificación oficial del protocolo, que forma parte de la familia de protocolos
de Internet, se publicó en septiembre de 1985 en la RFC 985. El NTP se describe en este
documento como un protocolo para sincronizar varios relojes de red usando un
conjunto de clientes y servidores repartidos. Como predecesores, se hace mención al
mensaje ICMP Timestamp y al Time Protocol, ya que sus funciones fueron incluidas en
el Network Time Protocol. El NTP se basa en el protocolo de datagramas de usuario
(User Datagram Protocol o UDP), que permite enviar datagramas sin que se haya
establecido previamente una conexión. Es decir, utiliza UDP como capa de transporte
usando el puerto 123.

El NTP proporciona los mecanismos de protocolo básicos necesarios para sincronizar


los relojes de los diferentes sistemas con una precisión del orden de nanosegundos.
Además, contiene indicaciones para especificar la precisión y las posibles fuentes de
error del reloj del sistema local, así como las propiedades del reloj de referencia. No
obstante, este protocolo se limita a especificar la arquitectura de la representación de
datos y los formatos de mensaje, sin que por sí mismo lleve a cabo la sincronización y
el algoritmo de filtrado.

Definición

El Network Time Protocol (NTP) es un protocolo descrito en la RFC 958 para la


sincronización de relojes en sistemas informáticos. Se basa en el protocolo UDP sin
conexión (puerto 123) y pertenece a la familia de protocolos de Internet. En el proceso
de sincronización, el NTP utiliza el tiempo universal coordinado (UTC), que obtienen
los clientes y los servidores según un sistema jerárquico.

¿Cómo funciona el protocolo de tiempo de red?


Para sincronizar los relojes de los ordenadores con una precisión de nanosegundos, el
Network Time Protocol utiliza el estándar Tiempo universal coordinado (UTC), que
fija la hora universal válida y unitaria desde 1972. Esto se determina utilizando varios
métodos, incluyendo sistemas de radio y satélite. Algunos servicios importantes como el
Sistema de Posicionamiento Global (GPS) están equipados con receptores especiales
para recibir lasseñales. Dado que no sería rentable ni factible equipar a cada uno de los
ordenadores con estos receptores, existen también los denominados servidores de
tiempo primarios (Primary Time Servers), que también están equipados con un
receptor UTC. Utilizando protocolos como NTP, estos servidores sincronizan los
relojes de los ordenadores de su red.

En este proceso de sincronización interviene un sistema estructurado de forma


jerárquica conectado a la fuente UTC con diferentes niveles de distancia, también
conocidos como estratos de reloj. Todos los dispositivos técnicos que obtienen la hora
de un servidor de tiempo primario o de un sistema de navegación por satélite se
clasifican en la categoría estrato 0. Como ejemplos podemos destacar los relojes
atómicos o los relojes de radio. Un ordenador que obtiene el UTC de un reloj atómico o
de un reloj de radio corresponderá al estrato 1 y así consecutivamente. Cada sistema es
al mismo tiempo cliente del estrato precedente y servidor para los sistemas del estrato
siguiente (al menos en potencia).

Nota

En la sincronización NTP existen varios algoritmos que sirven para solucionar las
derivas de reloj relativas a circunstancias de tiempo y espacio: así, por ejemplo, los
procedimientos que miden el tiempo de respuesta de los paquetes (tiempo que un
paquete tarda desde la fuente hasta el destino y viceversa) compensan las variaciones
locales de reloj con el algoritmo de Berkeley. El algoritmo de Marzullo se utiliza
para la resolución de problemas en el entorno de procesador.

Qué distingue a NTP


Las características principales del Network Time Protocol, que ya está disponible en su
cuarta versión (NTPv4), pueden resumirse de la siguiente manera:

 NTP utiliza un reloj de referencia que actúa como punto fijo para todos los
procesos de sincronización. Por lo tanto, todos los relojes están sincronizados
respecto a ese reloj de referencia. Desde el principio se utilizó el estándar de
Tiempo universal coordinado (UTC), por el cual el mundo regula los relojes y
el tiempo.
 NTP es un protocolo tolerante a fallos que busca automáticamente las mejores
fuentes de tiempo para realizar la sincronización. Para minimizar los fallos
acumulados, es capaz de seleccionar y combinar varias fuentes. Cuando es
posible, el protocolo de tiempo de red detecta e ignora las fuentes de tiempo que
proporcionan valores desviados de manera temporal o permanente.
 Es un protocolo altamente escalable: en cada red de sincronización es posible
encontrar varios relojes de referencia. Además, cada nodo de la red es capaz de
transmitir información horaria en una estructura jerárquica bidireccional (punto
a punto) o unidireccional (en una dirección).
 Es muy preciso. Gracias a que puede seleccionar la mejor fuente para realizar la
sincronización, presenta una resolución teórica en un rango de nanosegundos
de 2−32 segundos (es decir, 0,233 nanosegundos)
 Puede solucionar los problemas temporales de conexión de red. Para ello, el
protocolo utiliza la información almacenada para determinar la hora actual o las
desviaciones.

¿Qué sistemas operativos soportan NTP?


En su origen, el protocolo de tiempo de red fue desarrollado concretamente para
sistemas UNIX en los que el protocolo, hasta día de hoy, está implementado en forma
de proceso que se ejecuta en segundo plano (daemons) ntpd. Es posible utilizarlo como
cliente para sincronizar el sistema local y como servidor NTP para sincronizar otros
sistemas. Durante mucho tiempo, se mantuvo como la solución más extendida a la hora
de implementar NTP en distribuciones Linux. Las versiones más actuales se decantan
cada vez más a menudo por la aplicación cliente timesyncd, que forma parte del
sistema de gestión systemd, para la sincronización de los relojes. También los sistemas
operativos macOS y Windows utilizan actualmente el Network time protocol para
obtener el UTC mediante procesos de sistema simples que funcionan vía internet y no
necesitan software adicional.

¿Cuáles son las alternativas al Network Time


Protocol?
Aunque el protocolo NTP es considerado en todo el mundo como el estándar de
sincronización horaria, eso no significa que sea infalible, especialmente si hablamos de
seguridad. Dado que se basa en el protocolo sin conexión UDP, podría permitir a un
atacante enviar paquetes a un servidor NTP con una dirección de remitente falsa
mediante IP spoofing. La dirección del remitente es la dirección del sistema que hay que
atacar. El servidor envía su respuesta, que es mucho más larga que la petición enviada
por el atacante, de vuelta al supuesto remitente, que es el sistema víctima. Imagina que
el atacante comenzara a enviar a gran escala un gran número de esas peticiones
manipuladas. En ese caso, podría sobrecargar el sistema de destino –no te pierdas
nuestro artículo DoS y DDoS: resumen rápido de patrones de ataque.

En consecuencia, existen varios proyectos consagrados al desarrollo de soluciones


alternativas y más seguras que puedan utilizarse como sustitutas de las soluciones
habituales de cliente y servidor NTP:

 tlsdate: tlsdate fue desarrollado en 2012 por Jacob Appelbaum y publicado en


GitHub. En lugar de UDP, tlsdate utiliza el protocolo TCP para el transporte de
datos. El servicio cifra la configuración de la conexión mediante TLS para
evitar la manipulación de los paquetes de datos. Además, tlsdate utiliza las
funciones TLS “ServerHello” y “ClientHello” para sincronizar los relojes. Sin
embargo, esta alternativa a NTP solo funciona con TLS 1.1 y 1.2.
 Ntimed: Ntimed es una implementación de NTP que se centra específicamente
en la seguridad y el rendimiento. Para ello, el código del programa de ntpd, en el
que se basa Ntimed, fue “purificado” y optimizado. Este paquete de software,
que consta de cliente, servidor y archivo maestro, está disponible
gratuitamente en el directorio oficial de Ntimed-GitHub.
 NTPsec: NPTsec es también una variante del servicio clásico de ntpd. Sin
embargo, ahorra más de 175 000 líneas de código en comparación con el
original. Además, el equipo de desarrollo ha sustituido una serie de funciones
stringque no eran seguras como “strcpy”, “sprintf” o “gets” por sustitutos
seguros. Es posible consultar detalladamente estas y otras diferencias en la
página web oficial del proyecto Open Source.

Además de las alternativas basadas en software, existe también el protocolo Precision


Time Protocol(PTP). A diferencia del Network Time Protocol, este protocolo de red
para sistemas Linux se centra explícitamente en una precisión de sincronización
especialmente alta. En el protocolo PTP estamos hablando de una precisión de
microsegundos, es decir, mayor aún que en el protocolo NTP. Además, el protocolo
funciona con un rendimiento del procesador y del ancho de banda mínimo, por lo que es
una opción perfecta para dispositivos sencillos de bajo precio.

Nota

Aunque existe cierta libertad a la hora de elegir entre los diferentes protocolos o
servicios de sincronización, la sincronización en sí misma es un proceso absolutamente
necesariopara la funcionalidad de varias aplicaciones de red (especialmente en
Internet). Las transacciones de bases de datos o la comunicación por correo electrónico,
por ejemplo, presentan fallos rápidamente si el cliente y el servidor no están en la
misma longitud de onda en términos de tiempo. Un papel aún más importante es el de la
hora exacta del sistema en el control del tráfico aéreo, donde es esencial que los valores
sean exactos en términos de microsegundos para que no haya problemas en el
funcionamiento.

[Link]: el clúster de Internet de miles de


servidores NTP
El proyecto [Link], iniciado por Adrian von Bider y mantenido y desarrollado por
Ask Bjørn Hansen desde julio de 2005, es un enorme clúster virtual con más de 4000
servidores de tiempo NTP. La mayoría de los servidores distribuidos por todo el
mundo y utilizados por varios millones de sistemas se encuentran en Europa. El
repositorio NTP Pool ha crecido a lo largo del tiempo de forma constante gracias a la
comunidad de este exitoso proyecto: cualquier persona que disponga de un servidor
con dirección IP estática que esté permanentemente conectado a Internet puede ser
incluido en el clúster. A pesar de la creciente demanda, el servicio puede utilizarse
gratuitamente y sin restricciones.

El repositorio NTP Pool para usuarios de UNIX / Linux


Si quieres utilizar el NTP Server Pool para sincronizar la hora del sistema de tus
dispositivos, puedes hacerlo desde UNIX o Linux utilizando el servicio ntpd. Lo único
que tienes que hacer es implementar la siguiente configuración en el NTP drift file:

driftfile /var/lib/ntp/[Link]
server [Link]
server [Link]
server [Link]
server [Link]

La condición previa es que la hora del sistema esté fijada al menos de forma
aproximada. Para verificar el estado del servicio ntpd, introduce, pasados unos
minutos, el siguiente comando de consulta:

ntpq -pn

El cliente NTP presenta una lista con las direcciones IP de los servidores de tiempo del
Pool utilizados aleatoriamente. Si alguno de esos servidores está marcado con un
asterisco (*), la hora del sistema podrá sincronizarse como queramos.

Establecer [Link] como fuente de tiempo en Windows

Como Windows soporta automáticamente el protocolo, el repositorio NTP Pool también


está disponible para los usuarios de sistemas Microsoft que deseen utilizarlo. Solo es
necesario introducir una dirección adecuada de [Link] en la configuración de la
hora de Internet (por ejemplo, “[Link]” en España). Para ello, abre el panel de
control y selecciona “Fecha y hora”:
El menú “Fecha y hora” no solo permite ajustar manualmente la hora del sistema, sino
también seleccionar un servidor de hora para la sincronización automática a través de
internet.

En la pestaña “Hora de Internet” se accede al menú del servidor de hora, donde se


puede introducir la dirección del servidor NTP favorito desde el [Link]:
Si no se puede
acceder al servidor de hora NTP deseado, los usuarios pueden seleccionar una dirección
diferente.

Cuando los cambios se producen con éxito, Windows ajusta la hora del sistema en la
próxima sincronización:

Si se selecciona
un nuevo servidor de hora, Windows tarda un tiempo en sincronizar la hora del sistema.
En la configuración de la hora de Internet, el sistema informa del éxito (o fracaso) del
proceso de sincronización.

Common questions

Con tecnología de IA

Tlsdate y NTPsec son alternativas al protocolo NTP que abordan sus vulnerabilidades relacionadas con la seguridad. Mientras que NTP utiliza UDP, lo que puede exponerlo a ataques de suplantación IP, tlsdate utiliza el protocolo TCP y cifra la conexión mediante TLS, mejorando así la protección contra manipulaciones en la transmisión de datos. NTPsec, por otro lado, es una versión optimizada y segura del clásico NTPd, que ha eliminado una gran cantidad de líneas de código inseguro como 'strcpy', 'sprintf', y 'gets', sustituyéndolas por métodos más seguros. Estas alternativas ofrecen soluciones más robustas y seguras que pueden ser seleccionadas en función de las necesidades específicas de precisión y seguridad del contexto de implementación.

El Network Time Protocol es tolerante a fallos y tiene la capacidad de elegir automáticamente las mejores fuentes de tiempo disponibles para garantizar una sincronización precisa. Para minimizar los errores acumulativos, NTP evalúa múltiples fuentes y selecciona las más precisas, mientras detecta e ignora automáticamente aquellas fuentes que presentan desviaciones temporales o permanentes. Gracias a esta elección de las fuentes óptimas, el protocolo puede mantener una alta precisión en la sincronización de relojes de red, alcanzando resoluciones de nanosegundos.

La sincronización horaria es crítica en aplicaciones de red como transacciones de bases de datos y control del tráfico aéreo debido a la necesidad de que todas las partes implicadas operen en un mismo marco temporal preciso. En las transacciones de bases de datos, cualquier diferencia en el tiempo entre los clientes y servidores puede resultar en fallos de consistencia o en retrasos significativos. En el control del tráfico aéreo, la precisión temporal a nivel de microsegundos es esencial para garantizar la exactitud de los valores de tiempo utilizados, necesarios para la seguridad y eficiencia del sistema. Sin una sincronización precisa, tanto la comunicación como el procesamiento de datos podrían experimentar discrepancias severas, causando potencialmente malas interpretaciones de operaciones o brechas de seguridad.

El algoritmo de Marzullo es utilizado en el entorno de procesador dentro del contexto de NTP para resolver problemas relacionados con la incertidumbre en la recepción de tiempos. Este algoritmo prioriza la selección de los mejores intervalos de tiempo recibidos de las fuentes, identificando áreas donde se superponen múltiples mediciones de tiempo, lo que permite una interpretación más precisa y confiable del tiempo verdadero. Es esencial en mitigar las variaciones de tiempo debidas a las condiciones de red inconstantes, afinando aún más la precisión que puede ser lograda con NTP en situaciones de configuración complejas.

Para implementar efectivamente las configuraciones de NTP Pool en sistemas Linux y optimizar la sincronización de tiempo, primero es necesario establecer una configuración de archivo de deriva de NTP para monitorizar y compensar cualquier deriva en el reloj del sistema. Luego, se deben definir varios servidores del Pool NTP, p.ej., 'server 0.pool.ntp.org', en el archivo de configuración NTP, asegurando diversidad y fiabilidad de fuentes de tiempo. Después de configurar los servidores, se puede verificar su estado de sincronización y efectividad utilizando el comando 'ntpq -pn'. En este proceso, la configuración robusta de NTP y la capacidad para reconfigurar fácilmente los servidores aseguran que el sistema Linux pueda beneficiarse de una sincronización de tiempo precisa y confiable.

La integración de TLS en tlsdate mejora significativamente la seguridad al encriptar las conexiones de datos, lo que protege contra la manipulación y suplantación de identidad, un desafío frecuente en NTP clásico que emplea UDP. TLS proporciona un nivel de seguridad adicional mediante cifrado y autenticación, haciendo que la comunicación sea menos susceptible a ataques de tipo spoofing o de intermediarios ('man-in-the-middle'). Esto proporciona una capa robusta de protección que el clásico NTP no ofrece debido a su arquitectura de protocolo sin conexión, enfocada más en la eficiencia que en la seguridad.

El algoritmo de Berkeley es crucial para la corrección de derivas de reloj en el esquema NTP, ya que ajusta el tiempo medido en base a la latencia de red y las respuestas de varios relojes en el entorno. Este algoritmo considera tanto el tiempo de ida y vuelta de los paquetes como la dispersión de tiempo entre múltiples respuestas al calcular un promedio ponderado del tiempo. Esto permite compensar las variaciones locales de reloj derivadas de condiciones ambientales o de red, mejorando significativamente la precisión de la sincronización que NTP puede ofrecer en redes con fluctuaciones de tráfico.

Los servidores de tiempo primarios (Primary Time Servers) están equipados con receptores UTC y son fundamentales para la sincronización de relojes en una red. Estos servidores están en contacto directo con reloj atómicos o fuentes de UTC de precisión, y sirven como fuentes de tiempo para otros dispositivos en la red. Estos dispositivos técnicos clasificados en la categoría estrato 0 son considerados la referencia base de tiempo. Un ordenador que obtiene el UTC de un reloj atómico o de un servidor de tiempo primario se clasifica como estrato 1, y actúa como servidor para dispositivos de estrato superior (estrato 2, 3, etc.). Este enfoque jerárquico permite sincronizar progresivamente los relojes, garantizando que todos los dispositivos están alineados con respecto al tiempo.

El Protocolo de Tiempo de Red es altamente escalable porque permite múltiples relojes de referencia y nodos en una estructura jerárquica, donde cada nodo puede transmitir información horaria tanto de manera bidireccional como unidireccional. Esta capacidad para manejar diversas fuentes dentro de una red de sincronización facilita el aumento de dispositivos sin pérdida de precisión o fiabilidad. Además, por su diseño tolerante a fallos, puede gestionar diversos servidores de referencia, permitiendo que una red pueda expandirse con facilidad al integrar nuevos nodos sin necesidad de cambios considerables en la infraestructura.

El sistema pool.ntp.org proporciona un gran clúster de servidores distribuidos globalmente que facilita la sincronización de tiempo precisa y escalable para diversos sistemas operativos. Una de sus principales ventajas es que cualquier servidor disponible con una dirección IP estática y conexión constante a internet puede formar parte de este sistema, permitiendo una gran disponibilidad y redundancia. Esto asegura que incluso con una demanda creciente, los servicios de sincronización de tiempo permanezcan gratuitos y sin restricciones. Además, tanto sistemas UNIX, Linux como macOS y Windows pueden configurar fácilmente sus sistemas para utilizar esta fuente de tiempo, asegurando que múltiples plataformas puedan beneficiarse de la fiabilidad y precisión que ofrece.

También podría gustarte