¿Os suena GMT? ¿UTC, Z, CEST, CET? ¿cuando cambia la hora de verano a invierno, cambiamos de GMT+1 a GMT+2, pero no cambiamos de zona horaria? ¿rdate, ntpd, ntpate, stratum? ¿Qué significa todo eso? ¿Cómo dejamos bien la hora del sistema?
Cuando se habla de qué hora es, hay muchas siglas en medio que nos pueden confundir. Es importante tener la hora del sistema “a la hora”. Por ejemplo, si tenemos varios servidores con sus respectivos ficheros de log, necesitamos saber de forma precisa qué eventos sucedieron antes o después en cada servidor.
Ver como funcionan programas que sincronizan la hora es fácil, pero a veces tantas siglas y conceptos nos pierden y perdemos el mundo de vista.
En este artículos veremos los diferentes “conceptos” y una breve guia con la cual configurar el cliente ntp y poder mantener la hora de nuestro sistema correctamente.
Conceptos y acrónimos
Hay varios conceptos y acrónimos que necesitaremos para entender qué hacemos (hay más acrónimos…):
Es decir, en España (excepto Canarias) estamos en invierno a UTC+1 (CET) y en verano pasamos a UTC+2 (CEST). La hora UTC no cambia, sinó que cambia nuestra referencia a ella.
Cuando se habla de servidores, veremos que hay servidores “Stratum 1”, “Stratum 2”, etc. Eso es el nivel de precisión que tienen esos servidores. Los Stratum 1 se sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas). Los Stratum 2 se sincronizan con los Stratum 1, etc. Normalmente nos sincronizaremos con servidores Stratum 2 o Stratum 3 para no saturar aún más a los Stratum 1. Puede ser más preciso un Stratum 2 que tengamos “cerca” que un Stratum 1 más lejos.
Instalar y configurar ntp
Hay dos protocolos de sincronización. Uno es el rdate pero no ofrece una precisión tan ajustada como ntp. Sincronizaremos nuestra hora con el protocolo ntp. En primer lugar tendremos que instalar el paquete (o desde el código fuente). En Debian haríamos:
apt-get install ntp
(en otras distribuciones será algo parecido)
Y nos pedirá algunos servidores NTP. Podemos usar, p. ej.:
chronos.bulma.net ntp.obspm.fr ntp.cs.strath.ac.uk
En esta página podemos ver varios servidores públicos. Por cuestiones evidentes es conveniente que estén “cerca” de nosotros (como mínimo en cuestión de latencia de red).
Él mismo nos iniciará el demonio ntpd, que es el encargado de ir haciendo pequeños ajustes en nuestro reloj.
En algunos casos no genera bien el fichero /etc/ntp.conf y tendremos que volver a ejecutar dpkg-reconfigure ntp-simple para que nos ponga correctamente los servidores (o bien los ponemos a mano).
El fichero nos quedará de una forma parecida a la siguiente (los directorios pueden variar de una distribución a otra):
logfile /var/log/ntpd
driftfile /var/lib/ntp/ntp.drift
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
server chronos.bulma.net
server ntp.obspm.fr
server ntp.cs.strath.ac.uk
Varios ficheros de esos los puede usar ntp para “auto-regular” la frecuencia del reloj en base a los desajustes que suele llevar.
Por defecto, ntp sincronizará la hora en intervalos mínimos de 64 segundos y máximos de 1024 segundos, aunque se puede cambiar en el fichero de configuración pero normalmente no hace falta (es mediante minpoll y maxpoll). Como sincroniza cada cierto tiempo, e intenta no hacer saltos bruscos de hora es posble que estemos un rato con el ntpd ejecutandose y el sistema aún no haya sincronizado la hora (de hecho si son saltos pequeños intenta cambiar ligeramente la frecuencia del reloj del Kernel).
Verificación
El paquete ntp incorpora varios comandos, uno de los cuales es ntptrace. Si lo ejecutamos podemos tener esa salida:
pinux.info: stratum 3, offset 0.000012, synch distance 0.26268
nic.lth.se: stratum 2, offset -0.007485, synch distance 0.05026
swisstime.ee.ethz.ch: stratum 1, offset -0.139188,\
synch distance 0.00082, refid ‘DCFa’
Así podemos ver que realmente estamos sincronizando con los servidores. El offset es la diferencia estimada con el tiempo correcto y la distancia de sincronización es con una estimación de error aleatorio.
Varios
Recordar que ntpd nos habre el puerto 123 udp (a veces el tcp también, así que si lo queremos cerrar por cuestiones de seguridad podemos hacer:
iptables -I INPUT -p udp –destination-port 123 -j REJECT
iptables -I INPUT -p tcp –destination-port 123 -j REJECT
En caso que no tengamos siempre el sistema siempre encendido, o no queremos el demonio ntpd siempre corriendo, podemos usar el ntpdate. Se encuentra en el paquete ntpdate. Por defecto deja en /etc/init.d/ntpdate un script, que tan sólo se ejecuta (no deja ningún demonio cargado). Coge los servidores ntp donde sincronizarse de /etc/default/ntp-servers:
pinux:~# cat /etc/default/ntp-servers
NTPSERVERS=”hora.rediris.es ntp.obspm.fr ntp.cs.strath.ac.uk”
pinux:~#
Es importante seleccionar correctamente nuestra zona horaria para poder usar ntp (el servidor ntp puede estar en otra zona horaria, pero el protocolo ntp hará los ajustes necesarios). Para seleccionar nuestra zona horaria usaremos tzsetup o bien tzselect.
Al ejecutar el comando date debemos fijarnos que nos diga correctamente la zona en que nos encontremos situados.
Hay mucha información en la página de ntp con un fantástico apartado de documentación.
Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1778 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.