NTP (Network Time Protocol)
En toda infraestructura de red estable, un factor clave y a menudo subestimado es la precisión horaria. Todos los dispositivos —routers, switches o servidores— dependen de una gestión de tiempo precisa, esencial para el diagnóstico, la seguridad y la coherencia operativa.
Mantener una hora precisa es fundamental para generar logs consistentes y facilitar el troubleshooting. Tiempos desalineados dificultan rastrear eventos y detectar fallas.
Aquí entra en juego NTP, encargado de sincronizar automáticamente la hora en todos los dispositivos de la red.
Configuración de Hora Manual en Cisco IOS
Inicialmente, el tiempo en un dispositivo se gestiona manualmente o a través de su hardware interno.
-
Verificando la Hora Actual:
Puedes ver la hora configurada en tu dispositivo con el comando
show clock. Por defecto, la zona horaria suele ser UTC.R1#show clock *00:16:00.857 UTC Sat Dec 26 2020El asterisco
*indica que el tiempo no se considera autoritativo. -
Detalles del Reloj y Fuente:
Para obtener más detalles sobre la fuente del tiempo, utiliza
show clock detail.R1#show clock detail *00:19:49.411 UTC Sat Dec 26 2020 Time source is hardware calendarAquí se confirma que la fuente de tiempo por defecto es el calendario de hardware.
-
El Reloj de Hardware (Calendar):
El reloj de hardware (
calendar) rastrea la fecha y hora incluso si el dispositivo se reinicia o pierde energía. Al reiniciar el sistema, este reloj se usa para inicializar el reloj de software. Sin embargo, el reloj de hardware tiende a desviarse con el tiempo, lo que lo convierte en una fuente de tiempo poco ideal a largo plazo. -
Configurando Manualmente el Reloj de Software:
Se puede configurar la hora del reloj de software con el comando
clock set.R2#clock set hh:mm:ss {day|month} {month|day} year R2#clock set 14:30:00 27 Dec 2020Tras la configuración, la fuente de tiempo será “user configuration”.
-
Configurando el Reloj de Hardware (Calendar):
De manera similar, el calendario de hardware se configura con
calendar set.R2#calendar set hh:mm:ss {day|month} {month|day} year R2#calendar set 14:35:00 27 Dec 2020Es común sincronizar el reloj de software y el calendario de hardware usando
clock update-calendar(el reloj de software actualiza al calendario) yclock read-calendar(el calendario actualiza al reloj de software).
Configurando la Zona Horaria y Horario de Verano
NTP solo utiliza la zona horaria UTC. Por lo tanto, es crucial configurar la zona horaria apropiada y, si es necesario, el horario de verano en cada dispositivo para que los logs y la interfaz muestren la hora local correcta.
-
Configurar Zona Horaria:
R2(config)#clock timezone WORD hours-offset [minutes-offset] R2(config)#clock timezone JST 9Esto ajusta el offset desde UTC.
-
Configurar Horario de Verano (Summer Time):
El horario de verano se configura para que el reloj se ajuste automáticamente en fechas específicas.
R2(config)#clock summer-time recurring name start end [offset] R2(config)#clock summer-time EDT recurring 2 Sunday March 02:00 1 Sunday November 02:00Este comando se ingresa en modo de configuración global.
Network Time Protocol (NTP): La Solución Escalable
La configuración manual de la hora no es escalable y los relojes se desvían con el tiempo, llevando a una hora imprecisa. NTP es la solución estándar para la sincronización automática de la hora en una red.
- ¿Cómo Funciona NTP? Los clientes NTP solicitan la hora a los servidores NTP. Un dispositivo puede ser cliente y servidor NTP simultáneamente.
- Precisión: NTP permite una precisión de tiempo de aproximadamente 1 milisegundo en una LAN y hasta 50 milisegundos en una WAN o internet.
- UDP Puerto 123: NTP utiliza el puerto UDP 123 para la comunicación.
La Jerarquía NTP (Stratum)
La “distancia” de un servidor NTP del reloj de referencia original se llama stratum.
- Stratum 0: Relojes de referencia (atómicos, GPS).
- Stratum 1 (Servidores Primarios): Servidores NTP que obtienen su tiempo directamente de relojes de referencia.
- Stratum 2 (Servidores Secundarios): Servidores NTP que obtienen su tiempo de servidores Stratum 1. Operan en modo servidor y cliente al mismo tiempo.
- Stratum 3: Servidores NTP que obtienen su tiempo de servidores Stratum 2, y así sucesivamente.
- Stratum 15: Es el máximo stratum. Cualquier stratum superior se considera poco fiable.
Los dispositivos pueden “peer” (interactuar como pares) con dispositivos del mismo stratum para proporcionar una hora más precisa. Un cliente NTP puede sincronizarse con múltiples servidores NTP.
Configuración de Clientes NTP
Para configurar un dispositivo como cliente NTP, simplemente especificamos la dirección IP de los servidores NTP:
R1(config)#ntp server 216.239.35.0
Puedes verificar el estado de las asociaciones NTP con show ntp associations. Una ~ indica un servidor configurado y un * indica el servidor seleccionado para sincronizar.
El comando show ntp status proporciona un resumen completo del estado de sincronización.
Importante: Después de configurar NTP, es una buena práctica forzar la actualización del calendario de hardware con la hora NTP:
R1(config)#ntp update-calendar
Configurando un Dispositivo como Servidor NTP
Un dispositivo puede actuar como un servidor NTP para otros en la red. Si el dispositivo tiene múltiples interfaces, es útil especificar una interfaz de origen para los paquetes NTP.
R1(config)#interface loopback0
R1(config-if)#ip address 10.1.1.1 255.255.255.255
R1(config-if)#exit
R1(config)#ntp source loopback0
Luego, otros dispositivos pueden configurarse para usar este dispositivo como su servidor NTP. Por ejemplo, R2:
R2(config)#ntp server 10.1.1.1
Para convertir un dispositivo en un servidor NTP master (que no sincroniza con nadie más, sino que actúa como su propia fuente autoritativa de tiempo), usa el comando ntp master:
R1(config)#ntp master
El stratum por defecto para un maestro sin una fuente externa es 8.
Configurando NTP en Modo Simétrico Activo (Symmetric Active Mode)
Los dispositivos también pueden establecer una relación de “peer” NTP. En este modo, ambos dispositivos actúan como clientes y servidores entre sí, lo que puede proporcionar una mayor redundancia y precisión si ambos pueden alcanzar servidores de stratum superior.
R2(config)#ntp peer 10.0.23.2
Configuración de Autenticación NTP (Opcional pero Recomendado)
Aunque es opcional, la autenticación NTP es una medida de seguridad importante. Permite a los clientes NTP asegurarse de que solo se sincronicen con servidores de tiempo previstos, protegiendo contra la suplantación de identidad o ataques de manipulación de tiempo.
Los pasos para configurar la autenticación son:
-
Habilitar autenticación NTP:
ntp authenticate -
Crear una o más claves de autenticación NTP:
ntp authentication-key key-number md5 key(Ej:ntp authentication-key 1 md5 labit) -
Especificar las claves confiables:
ntp trusted-key key-number(Ej:ntp trusted-key 1) -
Especificar qué clave usar para el servidor:
Se añade el
key key-numberal final del comandontp serverontp peer.ntp server ip-address key key-number(Ej:ntp server 10.0.12.1 key 1)Este último comando no es necesario en el servidor NTP (R1) que actúa como fuente primaria, solo en los clientes que se conectan a él.
Ejemplos de Configuración de Autenticación:
En R1 (Servidor NTP):
R1(config)#ntp authenticate
R1(config)#ntp authentication-key 1 md5 labit
R1(config)#ntp trusted-key 1
En R2 (Cliente NTP):
R2(config)#ntp authenticate
R2(config)#ntp authentication-key 1 md5 labit
R2(config)#ntp trusted-key 1
R2(config)#ntp server 10.0.12.1 key 1
R2(config)#ntp peer 10.0.23.2 key 1
El ultimo comando habilita tener un peer de backup con un tercer router
Para mirar un resumen de todas las configuraciones referentes a NTP consultar Configuración NTP