NTP, ¡sincronizar relojes! del sistema…
NTP(Network Time Protocol) es un protocolo de Internet que permite sincronizar el reloj del sistema a través de la red. Utiliza el puerto 123 UDP por defecto y sigue el modelo de cliente-servidor. El funcionamiento de NTP sigue una estructura donde la capa superior (Stratum 0) suele tratarse de un reloj átomico o receptor de radio. Los sistemas que se conectan a éste reloj ( Stratum 1) sincronizan sus horas y, al mismo tiempo, actúan como servidor de los sistemas conectados a ellos (Stratum 2). De este modo es posible encontrar hasta 16 niveles donde los sistemas actúan de clientes y servidores al mismo tiempo.
En Linux disponemos de numerosas implementaciones del protocolo, siendo una de ellas el programa NTP, que facilita un demonio ( ntpd ) que actúa al mismo tiempo como cliente, sincronizando su hora con otros sistemas y como servidor, atendiendo las peticiones de sincronización de otros sistemas.
Configuración del servidor NTP
En primer lugar realizaremos la instalación del programa ntp, en caso de que no se encuentre en nuestro equipo ( apt-get install ntp). Una vez instalado podemos comprobar que se encuentra corriendo en nuestro sistema realizando una sencilla consulta con el comando ps o a través de «/etc/init.d/ntp status».
El fichero de configuración que define las opciones del programa se encuentra en la ruta /etc/ntp.conf, que muestra los servidores definidos que el sistema tomará para sincronizarse. Si comprobamos la configuración por defecto, las líneas más relevantes son:
You do need to talk to an NTP server or two (or three).
server 0.debian.pool.ntp.org iburst dynamic server 1.debian.pool.ntp.org iburst dynamic server 2.debian.pool.ntp.org iburst dynamic server 3.debian.pool.ntp.org iburst dynamic
En este caso, hemos elegido como servidores NTP una lista de alias que hacen referencia a servidores nacionales. Además de estos servidores, podemos añadir alguno más, que podemos conseguir en la página de servidores NTP públicos ( http://www.pool.ntp.org/ ).
Una vez que hayamos finalizado la modificación de la configuración según nuestras necesidades, procederemos a reiniciar el demonio NTP:
root@desktop:/etc/init.d# ./ntp restart
* Stopping NTP server ntpd [ OK ] * Starting NTP server ntpd [ OK ] root@desktop:/etc/init.d#
Ya tenemos nuestro servidor NTP configurado y corriendo en nuestro equipo. Ahora solo queda comprobar que sincroniza correctamente, mediante algunos comandos que nos pueden ser de ayuda para ello. Para empezar, verificamos que el servidor ha sincronizado con algún NTP público, de la siguiente forma:
root@desktop:/etc/init.d# ntpq -p
remote refid st t when poll reach delay offset jitter ============================================================================== *guti.uc3m.es 150.214.5.121 2 u 26 64 1 40.798 1.588 48.458 +casal.upc.edu 212.36.75.245 3 u 25 64 1 58.628 -7.295 26.557 +dnscache-madrid 145.238.203.14 2 u 24 64 1 40.866 -12.416 47.028 +ntp1.interdomin 10.0.1.100 3 u 23 64 1 43.578 -10.450 31.468 root@desktop:/etc/init.d#
Si observamos la salida anterior, podemos ver varios símbolos a la izquierda de los servidores; el asterisco (*) nos indica que estamos sincronizados con ese servidor, el símbolo + señala a los servidores con horas adecuadas, y el – a servidores descartados por algún motivo.
También podemos utilizar el comando ntptrace, que comprueba la sincronización de nuestro equipo con un servidor ntp. Al ejecutarlo, deberíamos visualizar una salida como la siguiente:
root@desktop:/etc/init.d# ntptrace localhost.localdomain: stratum 2, offset 0.002562, synch distance 0.107305 hora.roa.es: stratum 1, offset 0.000000, synch distance 0.000406, refid 'GPS' root@desktop:/etc/init.d#
La salida anterior nos indica que estamos correctamente sincronizados con el servidor hora.roa.es. Debemos tener en cuenta que tras el reinicio del demonio ntp es posible que debamos esperar 10-15min hasta ver la sincronización correcta. En caso de que, trasncurrido este periodo, veamos algo parecido a la siguiente salida, será necesario que comprobemos cúal puede ser la causa del error:
root@desktop:/etc/init.d#ntptrace
localhost: stratum 16, offset 0.000025, synch distance 0.00002 0.0.0.0: *Not Synchronized* root@desktop:/etc/init.d#
Así mismo, si configuramos un servidor NTP teniendo un cortafuegos configurado, debemos cerciorarnos de tener el puerto UDP 123 habilitado.
Configuración del cliente NTP
En algunos casos, es posible que solo queramos sincronizar nuestro reloj del sistema sin atender peticiones externas de otros equipos, por lo que debemos modificar el fichero de configuración con el objetivo de denegar dichas peticiones. Para ello, bastará con indicar la siguiente línea en ntp.conf:
restrict default ignore
Deja un comentario