Introducción
El mantenimiento preciso del tiempo es crítico para casi cualquier servicio o software. Los correos electrónicos, los registradores, los sistemas y planificadores de eventos, los mecanismos de autenticación de usuarios y los servicios que se ejecutan en plataformas distribuidas necesitan marcas de tiempo precisas para registrar los eventos en orden cronológico. Estos servicios utilizan el Protocolo de Tiempo de red, o NTP, para sincronizar el reloj del sistema con una fuente externa de confianza. Esta fuente puede ser un reloj atómico, un receptor GPS u otro servidor de tiempo que ya use NTP.
Aquí es donde entra en juego el proyecto NTP Pool Project. Es un enorme grupo mundial de servidores de tiempo que proporciona un fácil acceso al «buen tiempo» conocido para decenas de millones de clientes en todo el mundo. Es el servidor de tiempo predeterminado para Ubuntu y la mayoría de las otras distribuciones principales de Linux, así como muchos dispositivos en red y aplicaciones de software.
En esta guía, configurará NTP en su servidor y lo configurará para que forme parte del Proyecto de grupo NTP, para que proporcione una hora precisa a otros usuarios del Proyecto de grupo NTP. Proporcionar ciclos de CPU de repuesto y ancho de banda no utilizado es una forma perfecta de devolver algo a la comunidad.
El ancho de banda requerido es relativamente bajo y se puede ajustar según la cantidad que pueda proporcionar y dónde reside su servidor. Cada cliente solo enviará un par de paquetes UDP cada 20 minutos, por lo que la mayoría de los servidores solo reciben alrededor de una docena de paquetes NTP por segundo, con picos un par de veces al día de hasta cien paquetes por segundo. Esto se traduce en un uso de ancho de banda de 10 a 15 Kb/seg con picos de 50 a 120 Kb/seg.
Hay tres requisitos básicos que debe satisfacer antes de unirse al proyecto de piscina NTP:
- Su servidor debe tener una dirección IP estática.
- Su servidor debe tener una conexión a Internet permanente y estable.
- La mayoría de las veces, su dirección IP no cambia, o solo cambia con poca frecuencia (una vez al año o menos).
Para la mayoría de los servidores basados en la nube, los dos primeros requisitos generalmente se cumplen automáticamente. El tercer requisito hace hincapié en que unirse al Proyecto de grupo NTP constituye un compromiso a largo plazo. Por supuesto, si sus circunstancias cambian, está bien sacar un servidor del grupo, pero tomará mucho tiempo (principalmente semanas, pero a veces meses o incluso años) antes de que el tráfico desaparezca por completo.
Requisitos previos
Para completar este tutorial, necesitará:
- Un servidor Centos 7 con red IPv6 configurada. Si necesita configurar redes IPv6 en una gota exising, puede seguir este tutorial.
- Un usuario no root de sudo y un cortafuegos, que puede configurar siguiendo el tutorial Configuración Inicial del servidor con CentOS 7 y la sección «Configuración de un Cortafuegos básico» en el tutorial Pasos Recomendados Adicionales para Nuevos Servidores CentOS 7.
Paso 1-Instalación de NTP
El paquete NTP no está instalado de forma predeterminada, por lo que usará el administrador de paquetes para instalarlo. Primero, actualice sus paquetes:
- sudo yum update
A continuación, instale NTP:
- sudo yum install ntp
Una vez finalizada la instalación, inicie el servicio y configúrelo para que se inicie automáticamente cada vez que se inicie el servidor:
- sudo systemctl start ntpd
- sudo systemctl enable ntpd
Si ha configurado el firewall como se especifica en los requisitos previos, debe permitir el tráfico UDP para el servicio NTP para comunicarse con el grupo NTP:
- sudo firewall-cmd --permanent --add-service=ntp
- sudo firewall-cmd --reload
Para obtener más información sobre FirewallD, consulte Cómo Configurar un Firewall Utilizando FirewallD en CentOS 7.
NTP ahora está instalado, pero está configurado para usar los servidores de tiempo de grupo NTP predeterminados. Vamos a elegir algunos servidores de tiempo específicos en su lugar.
Paso 2: Elegir un servidor Ascendente adecuado
El proyecto de grupo NTP pide a los operadores que desean unirse al grupo que elijan buenos servidores de hora local de red en lugar de usar los servidores predeterminados pool.ntp.org
. Esto garantiza que el proyecto de piscina NTP siga siendo confiable, rápido y saludable. Al elegir su fuente de tiempo, querrá una conexión de red estable sin pérdida de paquetes y el menor número de saltos posible entre los servidores.
El protocolo NTP jerárquico y de varios niveles separa a las partes involucradas en servidores primarios, servidores secundarios y clientes. Los servidores primarios se llaman Estrato 1 y están conectados directamente a la fuente de tiempo, que se llama Estrato 0. Esta fuente puede ser un reloj atómico, un receptor GPS o un sistema de navegación por radio. Los servidores secundarios de la cadena se llaman Estrato 2, Estrato 3, etc.
Cada servidor es también un cliente. Un cliente de Estrato 2 recibe tiempo de un servidor de Estrato 1 ascendente y proporciona tiempo a servidores de Estrato 3 descendentes u otros clientes. Para que los miembros del proyecto NTP Pool funcionen correctamente, el demonio NTP necesita al menos tres servidores configurados. El proyecto recomienda un mínimo de cuatro y no más de siete fuentes.
El proyecto NTP Pool proporciona una lista de servidores de tiempo públicos de Estrato 1 y Startum 2. Las listas designan los servidores de tiempo NTP disponibles para el acceso público bajo las restricciones establecidas. Encontrarás tres tipos:
- OpenAccess: Este servidor de tiempo está abierto a cualquier cliente que cumpla con las recomendaciones de uso del grupo NTP.
- Acceso restringido: Este servidor de tiempo tiene algunas restricciones de acceso además de las recomendaciones de uso del grupo NTP.
- Acceso cerrado: Este servidor de hora está cerrado o requiere un acuerdo previo.
Advertencia: No use servidores que no estén listados como OpenAccess a menos que haya recibido la aprobación para hacerlo.
Visite la lista de servidores de tiempo de Estrato 1. Verás una lista como la siguiente:
Ordene la lista por la columna código ISO y busque uno o dos servidores que estén geográficamente cerca del centro de datos de su servidor. Cuando la columna Directiva de acceso del servidor indica OpenAccess, puede usarlo sin problemas. Si dice «Acceso restringido», haga clic para abrir la entrada y leer las instrucciones indicadas en el campo Detalles de acceso. A menudo, encontrará que NotificationMessage está configurado en Sí, lo que significa que debe elaborar un correo electrónico informal dirigido a la dirección proporcionada en ServerContact, informando al operador del servidor sobre su deseo de usar este servidor de tiempo como fuente de tiempo para su miembro del proyecto NTP Pool.
Una vez que haya identificado los servidores que desea usar, haga clic en el enlace de cada servidor en la columna ISO y copie su nombre de host o dirección IP. Usarás estas direcciones en el Paso 3.
A continuación, seleccione tres o cuatro servidores de la lista Estrato 2, siguiendo el mismo proceso.
Una vez que haya seleccionado sus servidores de tiempo, es hora de configurar su cliente NTP para usarlos.
Paso 3-Configuración de NTP para unirse al Grupo
Para usar su servidor con el grupo NTP y configurar sus nuevos servidores de tiempo, deberá realizar algunas modificaciones en la configuración de su demonio NTP. Para hacerlo, edite el archivo /etc/ntp.conf
:
- sudo vi /etc/ntp.conf
En primer lugar, asegúrese de que está configurado un archivo de derivación. Un archivo de derivación almacena el desplazamiento de frecuencia entre el reloj del sistema que se ejecuta a su frecuencia nominal y la frecuencia requerida para permanecer en sincronización con la hora correcta. Ayuda a lograr un tiempo estable y preciso. Debería encontrar esto en la parte superior de su archivo de configuración en una instalación predeterminada:
# For more information about this file, see the man pages# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift...
A continuación, elimine las entradas de origen de tiempo predeterminadas de la configuración. Estás buscando todas las líneas que sean del patrón server 0.centos.pool.ntp.org iburst
. Si está utilizando una configuración predeterminada, elimine las líneas resaltadas como se muestra en el siguiente ejemplo:
...# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
Reemplace las líneas que eliminó con los servidores seleccionados a mano que seleccionó en el paso anterior.
...server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst...
Utilizamos la opción iburst
para cada servidor, según las recomendaciones del grupo NTP. De esta manera, si el servidor es inalcanzable, esto enviará una ráfaga de ocho paquetes en lugar del paquete habitual. Usar la opción burst
en el proyecto NTP Pool se considera abuso, ya que enviará esos ocho paquetes en cada intervalo de sondeo, mientras que iburst
envía los ocho paquetes solo la primera vez.
A continuación, asegúrese de que la configuración predeterminada no permite consultas de administración. Si no lo hace, su servidor podría usarse en ataques de reflexión NTP, o podría ser vulnerable a consultas ntpq
y ntpdc
que intenten modificar el estado del servidor. Compruebe que la opción noquery
se agrega a las líneas predeterminadas restrict
. También asegúrese de agregar las opciones kod
y limited
, ya que restringen demasiado las solicitudes de clientes y aplican la limitación de tasas.
...# Permit time synchronization with our time source, but do not# permit the source to query or modify the service on this system.restrict default nomodify notrap nopeer noquery kod limited# Permit all access over the loopback interface. This could# be tightened as well, but to do so would effect some of# the administrative functions.restrict 127.0.0.1restrict ::1
Puede encontrar más información sobre las otras opciones en la documentación oficial.
Su archivo de configuración del demonio NTP ahora debería tener el siguiente aspecto, aunque su archivo puede tener comentarios adicionales, que puede ignorar de forma segura:
driftfile /var/lib/ntp/ntp.driftrestrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1restrict ::1server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst
Guarde el archivo y salga del editor.
Ahora reinicie el servicio NTP y deje que su servidor de hora sincronice su reloj con los servidores ascendentes.
- sudo systemctl restart ntpd
Después de unos minutos, compruebe el estado de su servidor horario con el comando ntpq
:
- ntpq -p
La salida debería ser similar a esta:
Output remote refid st t when poll reach delay offset jitter============================================================================== mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492+nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247*ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853+ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669
La columna remota le indica el nombre de host de los servidores que el demonio NTP está utilizando, y la columna refid le indica el origen que están utilizando los servidores. Por lo tanto, para los servidores de Estrato 1, el campo refid debe mostrar GPS, PPS, ACTS o PTB, y los servidores de Estrato 2 y superiores mostrarán la dirección IP del servidor ascendente. La columna st muestra el estrato, y delay, offset y jitter le informan sobre la calidad de la fuente de tiempo. Los valores más bajos son mejores para estos tres campos.
Su servidor de tiempo ahora puede servir el tiempo al público. Puede verificar esto llamando a ntpdate
desde otro host:
- ntpdate -q your_server_ip
La salida debe ser similar a esta y le indica que ajustó el servidor de tiempo y el desplazamiento:
Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate: adjust time server your_server_ip offset 0.001172 sec
Ahora está listo para registrar su servidor NTP con el proyecto NTP Pool para que otros puedan usarlo.
Paso 4: Agregar el servidor al grupo NTP
Para agregar su servidor para que otros puedan usarlo, visite manage.ntppool.org y regístrate para obtener una cuenta. Recibirá un correo electrónico de NTP Pool [email protected] solicitar que verifiques tu cuenta. Confirme su cuenta siguiendo las instrucciones del correo electrónico y, a continuación, inicie sesión en manage.ntppool.org.
Una vez que haya iniciado sesión, verá la interfaz sencilla para agregar servidores:
Ingrese la dirección IP de su servidor y haga clic en Enviar.
La siguiente pantalla le pide que verifique que identificó la región de su servidor. Si muestra su servidor en una región diferente de la que espera, use el cuadro de comentarios para informarles.
Si está satisfecho, confirme la entrada haciendo clic en Sí, este es mi servidor, ¡agréguelo!
Su servidor ahora es parte del proyecto NTP Pool. Visite http://www.pool.ntp.org/scores/your_server_ip
para ver la información que el sistema de monitoreo del grupo NTP ha recopilado sobre su servidor. Comprueba su servidor varias veces por hora y muestra los datos de desplazamiento, junto con la puntuación de su sistema. Siempre y cuando su servidor esté a tiempo y sea accesible, la puntuación aumentará hasta que alcance los 20 puntos. Solo se utilizan servidores con una puntuación superior a 10 en el grupo.
Solución de problemas de conectividad
Si tiene problemas para sincronizar su servidor, es posible que tenga un firewall de paquetes instalado para dejar los paquetes salientes en el puerto 123
. Eche un vistazo a Cómo Configurar un Firewall Utilizando FirewallD en CentOS 7 para aprender a verificar el estado del firewall.
Si la estación de monitoreo del proyecto del grupo NTP no puede llegar a su servidor NTP y la puntuación de su servidor está bajando, o no puede usar su servidor para sincronizar otro reloj, es posible que tenga un firewall de paquetes en su lugar que deja caer su tráfico entrante en el puerto 123
. Compruebe el estado de su cortafuegos.
Si está seguro de que no tiene un firewall instalado o de que ha abierto el puerto 123
para el tráfico entrante y saliente, es posible que su proveedor de servidor u otro proveedor de tránsito esté soltando sus paquetes en el camino. Si no tiene el conocimiento para resolver esos problemas por su cuenta, es mejor dirigirse a la comunidad y buscar ayuda. El foro de Proyectos de Piscina NTP es un buen lugar para comenzar. También puede unirse a la lista de correo o enviar un emaill al operador del proyecto NTP Pool. Solo asegúrese de que puede mostrar todos los pasos que ya ha intentado resolver el problema antes de pedir ayuda.
Conclusión
En este tutorial, configuró con éxito su propio servidor de tiempo y lo convirtió en miembro del proyecto NTP Pool, sirviendo tiempo a la comunidad. Para mantenerse en contacto con la comunidad que mantiene el tiempo. únase al foro de Proyectos de Grupos NTP o a la lista de correo. Asegúrese de monitorear la puntuación de su servidor y hacer los ajustes necesarios.