Sincronizando relojes con NTP
Intro:
Tener los relojes de nuestras máquinas en hora es vital para que los ficheros de registro tengan alguna utilidad. Y cuando queramos, podamos averiguar en qué momento y orden sucedieron las cosas.
Como los relojes de tiempo real de los PCs no son demasiado precisos necesitan de continuos ajustes. Ahí es donde entra en escena NTP
(Network Time Protocol), el servicio que va a mantener nuestras máquinas sincronizadas con la fecha y hora correctas.
Pasos:
Necesitamos instalar el paquete NTP, si estamos en Mandrake podemos escribir:
urmpi ntp
Después tenemos que editar el fichero de configuración /etc/ntp.conf
para que incluya la lista de servidores horarios que vamos a consultar. Por ejemplo:
server es.pool.ntp.org
server europe.pool.ntp.org
server pool.ntp.org
server chronos.bulma.net
server ntp.obspm.fr
server ntp.cs.strath.ac.uk
A partir de ahora el demonio ntpd
se encargará de ir ajustando periódicamente la hora de nuestro sistema. Siempre y cuando la hora actual no esté demasiado mal (un error de hasta 1000 segundos), si el error es mayor, tendremos que ajustar la primera vez de forma manual (por ejemplo con drakconf
) la hora.
Una vez que nuestra máquina está ejecutando ntpd
, puede actuar como servidor horário para el resto de máquinas de nuestra red. De modo que en una LAN sólo tendremos una máquina que sincroniza la hora con el exterior.
A continuación se muestra un fragmento de la salida de netstat -patu
en un servidor de la XEiLL que ejecuta ntpd
udp 0 0 NTP.MCAST.NET:ntp *:* 4546/ntpd
udp 0 0 172.16.107.1:ntp *:* 4546/ntpd
udp 0 0 raca:ntp *:* 4546/ntpd
udp 0 0 raca:ntp *:* 4546/ntpd
udp 0 0 localhost:ntp *:* 4546/ntpd
udp 0 0 *:ntp *:* 4546/ntpd
Con el paquete NTP
se instalan un conjunto de aplicaciones (puede escribir ntp y pulsar dos veces tabulador en la cónsola para ver sus nombres) interesantes. Por ejemplo con ntptrace
se nos mostrará el stratum de nuestra máquina, y de qué otras máquinas cuelga en la cadena de sincronización. Con ntpq
se carga un programa que permite ver los parámetros de funcionamiento de nuestro cliente (escribir help para ver la lista de comandos). Y con ntpdate -u servidor.horario.quesea
se pide a nuestra máquina que sincronice la hora con la del servidor indicado.
Cuándo se debe sincronizar la hora ?
Básicamente hay dos posibilidades:
- Se utiliza una tarea periódica (con cron, o en cada arranque...) que ejecuta
ntpdate
ordate
(otro protocolo) - Se ejecuta el demonio
NTP
La primera opción plantea algunos inconvenientes. El primero es la precisión. Si se utiliza un cliente para sincronizar la hora una vez al día (o cada hora) no se consigue la misma precisión que si se ejecuta ntpd
y continuamente se corrige la hora. El otro inconveniente es que pueden producirse saltos horarios relativamente grandes, lo que puede crear infinidad de problemas en el resto de servicios que ejecuta la máquina.
Así siempre que se pueda se deberá ejecutar el servicio NTP
que ajusta continuamente la desviación de nuestro reloj de tiempo real (RTC), consigue una gran precisión, evita que la hora de nuestro sistema tenga saltos y permite que otras máquinas sincronicen su hora a partir de la nuestra.
Referencias: