El protocolo Network Time Protocol (NTP) se utiliza para sincronizar la hora de diferentes equipos informáticos a través de una red. Todos los hosts (dispositivos) pueden sincronizar su hora con un servidor central llamado Servidor NTP. Este servidor puede ser un único equipo, varios equipos ó un pool de servidores NTP. Un servidor NTP, a su vez, puede sincronizar su hora con otro servidor NTP creando un sistema en cascada entre servidores NTP. El protocolo NTP es capaz de sincronizar la hora de los equipos con una precisión de milisegundos.
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
En este tutorial os enseñaré como instalar y configurar un servidor de NTP en GNU/Linux Ubuntu y que podáis usarlo como servidor de hora en vuestra red interna en caso de que necesitéis sincronizar equipos que no tengan acceso a Internet por políticas de seguridad.
Ejemplo de arquitectura NTP
1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL
- [Servidor NTP] - GNU/Linux Ubuntu Server 16.04
- [Cliente NTP] - GNU/Linux Debian 8.0
- [Cliente NTP] - Windows 7
2.- INSTALACIÓN DEL SERVIDOR NTP
Vamos a proceder a instalar nuestro servidor de NTP en GNU/Linux Ubuntu Server.
Instalaremos todos los paquetes necesarios a la vez con usuario root o con sudo. Para ello -como siempre- actualizaremos nuestros repositorios de paquetes y luego instalaremos los paquetes necesarios que usaremos en nuestro servidor NTP:
# apt-get update
# apt-get install ntp ntpdate
3.- CONFIGURACIÓN DEL SERVIDOR NTP
Debemos asegurarnos antes de nada que la zona horaria a la que pertenece nuestro servidor está correctamente configurada. En mi caso, la zona horaria debe corresponder a Europa/Madrid. Con el comando timedatectl podemos ver cual es la zona horaria que está configurada en nuestro equipo servidor NTP.
# timedatectl
La salida del comando anterior nos mostrará un resultado similar al siguiente, donde podemos ver que la zona horaria o "Time Zone" corresponde a America/Los_Angeles:
Zona horaria errónea
Para cambiar la zona horaria, primero debemos saber el nombre de la región a la que querems cambiar, para elo haremos un "list timezones" y con grep buscaremos nuestra ciudad de referencia. Una vez que sabemos el nombre de la zona horaria, la cambiaremos con timedatectl:
# timedatectl list-timezones | grep -i Madrid
# timedatectl set-timezone Europe/Madrid
Tras el cambio de región, volvemos a comprobar la región horaria y veremos que ahora es acorde a la configuración que necesitamos:
Zona horaria correcta
El fichero de configuración principal de NTP es /etc/ntp.conf y básicamente tendremos que editar y/ó añadir los servidores NTP de Internet de los cuales queremos recoger la hora para que luego nuestro servidor pueda ponerla a disposición de sus hosts clientes. Los servidores activos podemos verlos en la Web Oficial de NTP http://www.pool.ntp.org/es/ y se recomienda seleccionar los Pool del mismo continente.
Servidores NTP Activos 23-Mayo-2016
En nuestro caso, deberemos seleccionar los pools de Europa y ponerlos en el fichero /etc/ntp.conf. Sustituiremos los antiguos servidores por los nuevos:
pool server 0.europe.pool.ntp.org
pool server 1.europe.pool.ntp.org
pool server 2.europe.pool.ntp.org
pool server 3.europe.pool.ntp.org
Una vez hechos los cambios en el fichero /etc/ntp.conf, reiniciaremos el servicio:
# /etc/init.d/ntp restart
4.- VERIFICAR LA SINCRONIZACIÓN DEL SERVIDOR
Para verificar si tras el reinicicio del proceso ntp nuestro servidor NTP está sincronizando su hora local con el pool de servidores NTP de Internet, ejecutaremos el siguiente comando:
# ntpq -p
Verificando la sincronización local NTP
Las columnas indican lo siguiente:
- remote - Indica los servidores de ntp definidos en el fichero ntp.conf. '*' indica que es el servidor actual y el mejor origen de sincronización; '+' indica que son servidores disponibles de NTP. Los orígenes con - son considerados como no usables.
- refid - La dirección IP del servidor NTP del cual se obtiene la hora.
- st - Stratum
- t - Tipo. 'u' para unicast. Existen otros valores como por ejemplo local, multicast, broadcast...
- when - Tiempo transcurrido (en segundos) desde el último contacto con el servidor NTP.
- poll - Frecuencia de sondeo con el servidor en segundos.
- reach - Un valor en octal que indica cuando hay algún tipo de error en la comunicación con el servidor. El valor 377 indica 100% de éxitos.
- delay - El 'round trip' entre nuestro servidor y el servidor remoto.
- offset - La diferencia de tiempo entre nuestro equipo local y el equipo remoto en milisegundos.
- jitter - La media de tiempos en milisegundos entre dos muestras.
5.- CONTROLANDO EL ACCESO AL SERVIDOR NTP
Si queremos restringir el acceso al puerto UDP 123 de nuestro equipo servidor NTP, podemos usar el tan famoso firewall de GNU/Linux llamado iptables. Para ello ejecutaremos, como root o sudo:
# iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
También podemos hacerlo en el propio fichero de configuración de /etc/ntp.conf añadiendo una línea como la siguiente y reiniciando el servicio de ntp:
restrict 192.168.1.0 netmask 255.255.255.0 notrap nomodify
6.- CONFIGURACIÓN NTP EN CLIENTES GNU/LINUX
Para configurar NTP en modo cliente en los equipos con GNU/Linux debemos editar el fichero /etc/ntp.conf y añadir uno o varios servidores de la siguiente forma:
server 192.168.0.199 prefer # Servidor Preferido
server hora.rediris.es
Podemos forzar la sincronización con el comando:
# ntpdate 192.168.0.199
Ntpdate
Para lanzar el comando anterior debe estar parado primero el servicio de ntp, por tanto:
# /etc/init.d/ntp stop
date 192.168.0.199
# ntp
# /etc/init.d/ntp start
7.- CONFIGURACIÓN NTP EN CLIENTES WINDOWS
Para configurar un equipo con Windows como cliente de NTP, debemos hacer click con el botón derecho encima de la Hora del sistema y en "Ajustar fecha y hora". A continuación, en la tercera pestaña "Hora de Internet" podremos ver si el equipo está configurado para usar un servidor de NTP, cuando realizó la última sincronización y cuando se ejecutará la siguiente sincronización:
Hora de Internet
Para cambiar el servidor de NTP haremos click en "Cambiar la configuración", activaremos "Sincronizar con un servidor horario de Internet" e introduciremos el nombre de nuestro servidor ó su dirección IP (192.168.0.199). Para forzar la sincronización ejecutaremos "Actualizar ahora":
Servidor NTP desde Windows
En la siguiente imagen se puede ver como nuestro equipo Windows 7 se ha sincronizado con el servidor local NTP 192.168.0.199 y este, a su vez, con los servidores de Internet:
Sincronización correcta en Windows 7
ENJOY!