Cambiar el servidor NTP según las conexiones disponibles

Cambiar el servidor NTP según las conexiones disponibles

Consulte la ilustración.

Tengo dos máquinas en una LAN, solo una de ellas tiene conexión a Internet (a través de una interfaz diferente). El servidor 1 tiene un reloj de hardware basura. El servidor 2 tiene un buen RTC de hardware.

Desafortunadamente, el Servidor 1 generalmente tiene una conexión a Internet, mientras que el que tiene el buen hardware RTC no la tiene, por lo que dependiendo del estado de la conexión a Internet, el Servidor 1 es el más preciso o el más poco confiable.

Es fundamental que ambas máquinas se mantengan estrechamente sincronizadas entre sí.

¿Es posible que el sistema falle automáticamente del Escenario 1 al Escenario 2, tal vez mediante ajustes automáticos en el estrato de cada máquina?

Escenario 1 frente a Escenario 2

Respuesta1

En primer lugar, es muy poco probable que se le permita acceder a un estrato.1servidor, a menos que los administradores del servidor Stratum 1 lo conozcan y le hayan dado permiso explícito para hacerlo. Dicho esto, cuál sea el estrato de ese servidor no importa para esta respuesta, por lo que me referiré a esa máquina como el servidor de "estrato bajo" para mayor claridad.

Debe configurarlo server2para obtener su hora del servidor de estrato bajo, no de server1. Esto requerirá que sea capaz (al menos para NTP) de acceder al enlace de Internet en server1. Si server2no tiene un enlace a Internet con el que pueda acceder al servidor de bajo estrato, puede permitirle que lo haga ejecutando los siguientes comandos server1(como root):

iptables -A FORWARD -s server2 -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -s server2 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

Las dos primeras líneas permiten el tráfico NTP desde el host.server2 solo. Nota: No estoy 100% seguro de que se requieran conexiones TCP, pero no debería doler. Es posible que también desee agregar -d lowstratumserveresas dos líneas, para que esta máquina no pueda acceder a ningún otro servidor (solo al de estrato bajo). La siguiente línea permite el tráfico de retorno de las conexiones que estén establecidas. La cuarta línea permite la traducción de direcciones de red. La última línea permite el reenvío de paquetes IP. Con esto, server1ahora es un enrutador (mínimo).

Si server2no tiene server1como enrutador predeterminado, también deberá agregar una ruta explícita para el servidor de estrato bajo:

ip route add lowstratumserver via server1

Con eso, server2lo utilizará server1como enrutador para la conectividad de red lowstratumservery como enrutador habitual para todo lo demás.

Luego, configúrelo server2para usar el servidor de nivel bajo en Internet como fuente NTP, no server1.

Finalmente, configúrelo server1para que se conecte a server2, no al servidor Stratum 1 en Internet.

Ahora server2se sincroniza con el servidor de bajo estrato en Internet, no con server1; y server1se sincronizará server2siempre, eliminando la necesidad de agregar una configuración de conmutación por error (que, en el mejor de los casos, será frágil).

Esto le hará perder una ligera cantidad de precisión debido al salto adicional, pero siempre es mejor sincronizar las máquinas en su red local con una máquina con un buen RTC de hardware, en lugar de con una máquina con uno de baja calidad.

información relacionada