Ändern des NTP-Servers basierend auf verfügbaren Verbindungen

Ändern des NTP-Servers basierend auf verfügbaren Verbindungen

Bitte beachten Sie die Abbildung.

Ich habe zwei Maschinen in einem LAN, nur eine davon hat eine Internetverbindung (über eine andere Schnittstelle). Server 1 hat eine minderwertige Hardware-Uhr. Server 2 hat eine gute Hardware-RTC.

Leider verfügt Server 1 normalerweise über eine Internetverbindung, während dies bei dem Server mit der guten Hardware-RTC nicht der Fall ist. Daher ist Server 1 je nach Status der Internetverbindung entweder der genaueste oder höchst unzuverlässig.

Es ist von entscheidender Bedeutung, dass beide Maschinen eng miteinander synchronisiert bleiben.

Ist es möglich, einen automatischen Systemwechsel von Szenario 1 zu Szenario 2 herbeizuführen, etwa durch automatische Anpassungen des Stratums jeder einzelnen Maschine?

Szenario 1 vs. Szenario 2

Antwort1

Erstens ist es sehr unwahrscheinlich, dass Sie Zugang zu einem Stratum erhalten1Server, es sei denn, Sie sind den Stratum 1-Serveradministratoren bekannt und diese haben Ihnen ausdrücklich die Erlaubnis dazu erteilt. Allerdings ist das Stratum dieses Servers für diese Antwort nicht von Bedeutung, daher werde ich diese Maschine der Übersichtlichkeit halber als „Low-Stratum“-Server bezeichnen.

Sie sollten die Konfiguration so konfigurieren server2, dass die Zeit vom Low-Stratum-Server bezogen wird, nicht von server1. Dies erfordert, dass (zumindest für NTP) auf die Internetverbindung von zugegriffen werden kann server1. Wenn server2keine Internetverbindung besteht, mit der auf den Low-Stratum-Server zugegriffen werden könnte, können Sie dies zulassen, indem Sie die folgenden Befehle auf server1(als Root) ausführen:

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

Die ersten beiden Zeilen erlauben NTP-Verkehr vom Hostserver2 nur. Hinweis: Ich bin nicht 100 % sicher, ob TCP-Verbindungen erforderlich sind, aber es kann nicht schaden. Sie können -d lowstratumserverdiese beiden Zeilen auch ergänzen, damit dieser Rechner nicht auf andere Server zugreifen kann (nur auf den Low-Stratum-Server). Die nächste Zeile erlaubt den Rückverkehr von hergestellten Verbindungen. Die vierte Zeile aktiviert die Netzwerkadressübersetzung. Die letzte Zeile aktiviert die IP-Paketweiterleitung. Damit server1ist es jetzt ein (minimaler) Router.

Wenn server2nicht server1der Standardrouter ist, müssen Sie auch eine explizite Route für den Low-Stratum-Server hinzufügen:

ip route add lowstratumserver via server1

Damit wird es als Router für die Netzwerkverbindung zu server2verwendet und als normaler Router für alles andere.server1lowstratumserver

Konfigurieren Sie dann server2die Verwendung des Low-Stratum-Servers im Internet als NTP-Quelle, nicht server1.

Konfigurieren Sie es abschließend server1so, dass die Verbindung zu server2und nicht zum Stratum 1-Server im Internet hergestellt wird.

Synchronisiert jetzt server2mit dem Low-Stratum-Server im Internet, nicht mit server1; ​​und server1synchronisiert server2immer mit , wodurch die Notwendigkeit entfällt, ein Failover-Setup hinzuzufügen (das im besten Fall fehleranfällig wäre).

Dadurch geht aufgrund des zusätzlichen Hops etwas Genauigkeit verloren, es ist jedoch immer besser, die Maschinen in Ihrem lokalen Netzwerk mit einer Maschine mit einer guten Hardware-RTC zu synchronisieren, als mit einer Maschine mit einer minderwertigen.

verwandte Informationen