Tabla de Contenidos
Intro
Finalmente no me alcanza con las recetas de cocina que pululan por internet (o en este mismo wiki) y me voy a poner a tratar de entender seriamente la documentación oficial de NTP.
Uso este espacio como machete en línea y eventualmente luego podré mejorar mi propia receta o hacer otro documento que le sirva al resto de la gente...
Por ahora no me preocupo por compilar el software ya que la mayoría de los linux traen una versión razonablemente actualizada.
Navegando la web
La página oficial del Network Time Project es www.ntp.org. Aquí hay links para bajar el software, un wiki con documentación mantenida por la comunidad y al pool de servidores NTP comunitarios. A esto podríamos llamarlo el Proyecto Operativo.
Sin embargo, EL PROYECTO posta es el Proyecto de I+D, llamado Network Time Syncronization Research Project cuya página oficial es www.eecis.udel.edu/~mills/ntp.html, que contiene la documentación oficial que vamos a analizar.
Aquí vamos a navegar desde el mapa del sitio.
Hay un Resumen Ejecutivo que explica someramente los principios y el algoritmo utilizados por NTP.
El problema con esta documentación (me doy cuenta después de revisar y probar algunas cosas) es que es para la versión que está en desarrollo (a medidados de 2009, la 4.2.6). Sin embargo, la versión estable que se distribuye con la mayoría de los linux es la 4.2.4 cuya documentación está en doc.ntp.org/4.2.4/
Configuración
Normalmente la configuración del daemon ntpd va en /etc/ntp.conf. Este es un daemon del sistema operativo que sincroniza el reloj del sistema con servidores NTP remotos utilizando el protocolo NTP.
flying low
La configuración mínima de un cliente lo único que contiene es la dirección de uno o más servidores con los cuales sincronizarse:
server pool.ntp.org
Cuando el daemon está funcionando, el mismo mide el error entre el reloj del sistema y los servidores y lo va corrigiendo. Es conveniente configurar también un archivo (llamado drift file) donde el daemon pueda grabar esta información para utilizarla a posteriori (e.g. cuando arranca)... con lo cual podemos extender nuestra configuración minimalista de un cliente a:
server pool.ntp.org driftfile /var/lib/ntp/ntp.drift
Hay que asegurarse que los filtros del firewall dejen pasar tráfico UDP entre los ports 123 (el puerto oficial de NTP). Normalmente NTP utiliza ese port como FUENTE y DESTINO (es decir, MANDA desde ese puerto y RECIBE en ese mismo puerto).
associations
Las relaciones entre hosts con NTP se llaman asociaciones. Es importante leer acerca del Manejo de Asociaciones para entender los distintos tipos de asociaciones:
Modo cliente/servidor: los servidores son stateless y los clientes statefull. Los clientes solicitan una referencia al servidor, el servidor contesta a ciegas (también se lo conoce como modo pull). El cliente se configura con el comando server.
Modo simétrico activo/pasivo: normalmente utilizando entre servidores que tienen una referencia temporal válida (ya sea un reloj externo o un conjunto de servidores de stratum bajo confiables). En este modo los servidores se comunican como pares. Para evitar problemas, estas asociaciones deberían estar validadas criptográficamente. Los hosts se configuran con el comando peer.
Modos broadcast y multicast: utilizados para facilitar la configuración de muchos clientes para que descubran automáticamente servidores relativamente locales.
Modo manycast: también permite el descubirimento automático de servidores pero provee un mecanismo más dinámico de búsqueda ante la necesidad.
Modos ráfaga (burst): Hay dos modos de ráfaga que envían 8 paquetes con una separación de 2 segundos entre cada uno (en lugar de enviar 1 solo paquete). iburst se usa para enviar la ráfaga cuando un server no es alcanzable. La opción es recomendable con el comando server y es práctica especialmente cuando levanta el cliente para minimizar el tiempo inicial de convergencia. burst se usa para enviar la ráfaga cuando un server sí es alcanzable y sólo se recomienda cuandola red tiene mucho jitter. Hay que tratar de evitarlo porque genera un excesivo tráfico de red. Ambos módos de ráfaga sólo son válidos con el comando server.
configurar un cliente básico
Más allá del minimum minimorum mostrado más arriba, un cliente conectado a internet puede configurarse del siguiente modo:
# utilizo servidores públicos en Argentina y Brasil server ar.pool.ntp.org iburst server br.pool.ntp.org iburst # guardo la información sobre desviaciones del reloj local en un archivo driftfile /var/lib/ntp/ntp.drift # logging logfile /var/log/ntp.log logconfig +allsys +allsync +allclock +allpeer # statistics logging statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable
referencias
Como las páginas tienen una organización algo caótica y de difícil búsqueda, anoto aquí dónde está la documentación específica de cada opción utilizada:
server (y su opción iburst) está en Configuration Options
driftfile, logfile y logconfig están en Miscellaneous Options
statistics, statsdir y filegen están en Monitoring Options
.