Como poner un Servidor de tiempo NTP en Slackware
Gabriel Orozco
(basado en un excelente documento de hostingtech.com)
Mantener la hora exacta es primordial en muchos procesos. Obviamente es
indispensable en un cluster o en un site, donde es necesario tener la
hora correcta en todos y cada uno de los servidores, y poder desde alli
replicarla a las computadoras de nuestros usuarios, con lo cual no
tendrémos problemas de sincronización nunca.
Imagine la situación: un sistema de musica ambiental corriendo en
Linux, que controla las señales de finalización y arranque de cada
turno de trabajo en la empresa, y que poco a poco va desfasando los
avisos de la hora de entrada y salida, los de pase al comedor, etc.
para solucionar este tipo de problemas se creó un protocolo especial,
llamado Network Time Protocol (NTP), donde todo se maneja en niveles de
exactitud, y se clasifica en estratos dependiendo a partir de cual
servidor está el nuestro tomando la hora exacta.
No vamos a hablar demasiado del NTP, porque se ha ido haciendo complejo
en cuanto a su mecanismo de autenticación, para evitar ya viejos
ataques sobre este protocolo sino a mantenerlo sencillo. si desea saber
más del protocolo, revise los detalles del RFC 1305, en http://www.ietf.org/rfc/rfc1305.txt.
El protocolo NTP permite a los dispositivos conectados a la red el
sincronizar su reloj interno contra otro dispositivo. este puede ser un
dispositivo en tu misma red local, o un dispositivo en alguna parte de
la WAN. En general, NTP puede mantener los dispositivos de una red de
area local (LAN) sincronizados sus relojes en un rango de milisegundos
(ms), y a través de la WAN en un rango que ronda los 100 milisegundos
de diferencia entre un dispositivo y otro.
El NTP se basa en el tiempo universal de Greengwech, también llamado
Tiempo Universal Coordinado o UTC. el UTC se refiere a la escala de
tiempo que se mantiene en los relojes atómicos alrededor del mundo.
Esta hora exacta "universal" que es el UTC puede ser obtenida por
diferentes métodos: a través del Internet a partir de un servidor
público NTP, a través de ondas de radio, o utilizando GPS. Claro que
siempre se puede construir su propio relój atómico ud. mismo.
Que tan exacto es?
Los servidores NTP se designan como pertenecientes a estratos
definidos, o niveles; basados en el origen de donde toman su tiempo. el
nivel mayor, justo al lado de los mismisimos relojes atómicos (los
relojes atómicos son el estrato 0) es el estrato 1.
Los servidores del estrato 1 son relojes que están conectados a una
fuente confiable de tiempo universal UTC. Los servidores del estrato 2
obtienen su información de los del estrato 1, los servidores del
estrato 3 lo obtienen a su vez de los de estrato 2, y así sigue. Según
se avanza en los diferentes estratos existen costos de red asociados
que reducen la exactitud del servidor de tiempo en cuestión, respecto
del tiempo
UTC.
Un servidor de estrato 2 en la red puede tener de 1 a 30 milisegundos
de diferencia contra el tiempo exacto UTC, y cada estrato adicional se
piensa que debe tener al menos una diferencia de la misma magnitud
respecto de su predecesor.
Muchas empresas comienzan utilizando uno de los muchos servidores NTP públicos que se listan en la página del sistema de NTP
(http://www.ntp.org/) (NTPs públicos: en esta liga: http://www.eecis.udel.edu/~mills/ntp/servers.html, aunque yo prefiero mejor los que trae el nettime (proyecto para windows en sourceforge) mismos que he copiado aquí.)
Para hacer que todos sus equipos se actualizen contra el.
Desafortunadamente, hay algunos problemas en escoger ese método.
Primero, esos servidores tienden a estar sobrecargados, resultando en
que frecuentemente no responden y termina el sistema cerrando el
intento de conección y generando un timeout. Segundo, y quizas más
serio es que no hay seguridad de que todos los servidores en la red
están haciendo conecciones consistentes y confiables. Si se dan los
suficientes timeouts, puede haber una diferencia de horario sensible o
importante engtre los servidores de la misma red.
Cuando una empresa llega al punto de tener 10 o más equipos en una red,
es usualmente una excelente idea el dejar de hacerlos depender todos de
un servidor de tiempo externo, y poner un servidor interno a la red.
Es importante notar que cuando nos referimos a dispositivos de red nos
referimos a ruteadores, switches, firewalls, aparte de referirnos a los
servidores y a los clientes. Todos los dispositivos conectados a un
segmento de la red, deben estar sincronizados al mismo tiempo.
Saltos de tiempo:
Mientras que tener un servidor de tiempo ayuda a tener toda la red
sincronizada, es importante monitorear el dispositivo cuidadosamente
para evitar desviaciones de tiempo. ya que los relojes internos de cada
máquina no son exactos y se van desviando poco a poco del tiempo
universal. esto ocurre más en unos equipos que en otros. además, el
tiempo variable que toma un paquete en viajar por la red, añade
incertidumbre a los datos de tiempo que se reciben desde internet.
La solución obvia a este problema es el sincronizar nuestro servidor
NTP contra uno de los servidores NTP públicos que hay disponibles,
haciendolo un servidor de estrato 2. Los problemas inherentes a los
servidores de tiempo públicos siguen existiendo, pero ahora solamente
el servidor interno NTP se enfrentará a ellos, dejando al administrador
tener un mayor y mejor control sobre su propia red.
Hay dispositivos NTP disponibles en el mercado. Esos dispositivos se
sincronizan directamente con los satélites GPS, o tienen relojes
atómicos interconstruidos. Y hay ventajas obvias en tener un servidor
de estrato 1 dentro de la red. Por ejemplo, no hay nadie que pueda
estar moviendole al tiempo que obtiene su servidor NTP, tal como puede
pasar al intentar obtenerlo a través de internet. Con el aumento de
dispositivos de seguridad que utilizan la hora para permitir/denegar
accesos, esto se vuelve prudente.
Ahora si, entrando en materia:
Configurando un servidor NTP en la red usando Linux:
En casi todas las distribuciones de Linux encontrará el paquete xntp o
el paquete ntp. La versión más reciente del ntp siempre podrá
encontrarla en el sitio de la universidad de Delaware (http://www.ntp.org/software/).
Si el paquete de ntp no está ya incluido en su distro, bajelo de aquí,
y descompactelo en un directorio temporal. El programa viene con su
script de configuración, mismo que intentará adivinar los parámetros
correctos de su distribución. Sea cual sea su distribución, no olvide
tener la versión más reciente de las librerías libcap instalada (al
menos la 1.10).
Hay solamente 3 pasos para configurar el ntp, y son estos:
- ./configure
- make
- make install
Los dos primeros puntos los podemos cambiar por el siempre util
checkinstall de Izto. esto permitirá poder desinstalar algo que hemos
instalado desde los fuentes, además de ejarnos un paquete qué instalar
en caso de necesitarlo (Checkinstall).
Una vez la instalación del software se ha realizado, es hora de
configurarlo. Para ello se deberá editar el archivo /etc/ntp.conf. Una
configuración mínima se realiza simplemente cambiando el valor por
default listado en el archivo de ntp.conf, por uno de su elección.
para hacerlo, cambie la línea que dice:
server 127.127.1.0 # local clock
por una que diga, por ejemplo (tomando el ntp de la nasa para este ejemplo)
server 198.123.30.132 # ntp-nasa.arc.nasa.gov
Para aliviar el problema de que muchos servidores le darán timeout al
intentar sincronizar, puede ud. añadir muchas lineas con diferentes
servidores NTP públicos. los más cercanos (haciendo un ping a cada uno
lo puede validar. el que responda en menos milisegundos es el mejor)
deberían ir listados primero, luego los demás.
es conveniente comentar esta linea (mas sobre fudge en el RFC):
#fudge 127.127.1.0 stratum 10
y dejar el resto del archivo como está: todo como comentario nada más.
Una vez que guardó su archivo ntp.conf, añada una linea en el
/etc/rc.d/rc.local para llamarlo a ejecutarse cada que se inicia la
máquina:
echo Levanta el Servidor de Tiempo NTP...
/usr/sbin/ntpd
y ya está listo.
para saber que funciona, ejecute el programa ntpd, y luego busque mediante tail /var/log/messages, las siguientes lineas:
Apr 6 22:42:27 asterix ntpd[7217]: ntpd 4.1.1a@1.791 Tue Mar 4 18:00:29 PST 2003 (1)
Apr 6 22:42:27 asterix ntpd[7217]: precision = 25 usec
Apr 6 22:42:27 asterix ntpd[7217]: kernel time discipline status 0040
Apr 6 22:45:55 asterix ntpd[7217]: time set 3.885395 s
Mandele un correo al administrador del servidor NTP público indicando
que está ud. Sincronizando con ellos. No es necesario pero es un
gesto de cordialidad esperado en ellos. Yo me he topado con servidores
a los que al inicio no mandé correo, y luego de un tiempo ya no pude
conectarme más hacia su servidor.
Por otro lado, no recomiendo que abra el puerto del NTP (123) al
público en general, ya que ha sido blanco de muchos ataques en el
pasado, asi que es mejor que lo bloquee en su firewall.
Si desea protegerse más, hay todo un sistema de seguridad que permite
el uso de PKI para asegurar que el servidor de tiempo es quién dice
ser, y no otro mediante un ataque de "Man in the middle". Busque como
hacer eso en la sección de documentación de http://www.ntp.org.
ahora puede hacer que todos los demás dispositivos de su red local se sincronizen contra la ip de su servidor NTP.
Dudas o comentarios, por favor lea el RFC
Redimido.
17/04/2004, 17:09:27 horas.
|
|