it-swarm.com.de

Lokaler NTP Server, der nicht von Clients verwendet wird. Setup-Problem

Ich habe ein lokales Netz ohne Internet und möchte, dass alle Computer dort zeitlich synchronisiert sind. Die absolute Zeit ist mir egal, sie sollte für alle gleich sein.

Ich habe mehrere Posts dazu gefunden. Die nützlichsten waren:

Server

Ich habe den Server mit der IP 192.168.1.123 eingerichtet und es scheint in Ordnung zu sein: Der Deamon "ntpd" läuft und ich habe die Zeilen in etc/ntp.conf hinzugefügt

# this sets the source to local time
server 127.127.1.0
fudge 127.127.1.0 stratum 8

# this makes the ntpd deamon to send out its time on the local net.
broadcast 192.168.255.255 

Ich habe es mit dem Befehl ntpq überprüft:

 ntpq -c lpeer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
192.168.255.255       .BCST.     16 B    -   64      0  0.000    0.000   0.000

"BCST" sagt, es wird mehr gesendet und die IP zeigt die Übertragung an alle Computer im lokalen Netz (ein Netzwerk der Klasse B, also 2x 255).

Client

Auf der Clientseite habe ich auch ntp installiert, die Standarddatei /etc/ntp.conf verwendet und die Zeilen hinzugefügt

server 192.168.1.123 iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 8

dabei ist 192.168.1.123 die lokale IP des Server-Broadcasts und die andere Leitung sollte den Client (einen Laptop) anweisen, seine eigene Uhr zu verwenden, wenn die Netzwerkverbindung unterbrochen ist. Ich habe den Dienst auf dem Client neu gestartet und ntpq ausgeführt, um die Verbindung zu überprüfen

ntpq -c lpeer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
192.168.1.123        .INIT.     16 u     1   64     0   0.000    0.000   0.000
LOCAL(0)             .LOCL.     8 l      6   64     1   0.000    0.000   0.000

Wenn ich diesen Befehl wiederhole, sehe ich die "when" -Spalte, die beide hochzählt und bei Erreichen von 64 Sekunden wieder mit 0 beginnt. Ich hatte erwartet, dass sich dies nach den 64 Sekunden ändern würde:

ntpq -c lpeer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.123        .INIT.     16 u     1   64     0   0.000    0.000   0.000
LOCAL(0)              .LOCL.     8 l      6   64     1   0.000    0.000   0.000

Beachten Sie das "*" vor der Server-IP. Aber es hat nicht . Was ich nach ungefähr 1 Stunde bekam, war

ntpq -c lpeer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
192.168.1.123        .INIT.     16 u     1   64     0   0.000    0.000   0.000
*LOCAL(0)            .LOCL.     8 l     63   64   377   0.000    0.000   0.000

Ich denke, dies sagt mir, dass es 2 Quellen für NTP gibt, aber da die Remote-Quelle nicht funktioniert/nicht verfügbar ist/was auch immer nicht verwendet wird und die lokale Fallback-Uhr verwendet wird, bin ich es nicht sicher, ob diese Interpretation korrekt ist.

was ich versucht habe

Ich habe mehr als 1 Stunde gewartet, ich habe die ntpd mehrere Male mit Sudo /etc/init.d/ntp restart neu gestartet und ich habe auch neu gestartet. Weiterhin habe ich die lokale Section Clock auskommentiert, so dass der einzige Server server 192.168.1.123 war. Ich konnte das "*" nicht anzeigen lassen. Außerdem habe ich einen Abschnitt in der ntp.conf gesehen, in dem es heißt

#if you want to listen to time broadcasts on you local subnet, 
#de-comment the next lines. Please do this only if you trust 
#everybody on the network!
#disable auth
#broadcastclient

Ich habe versucht, den Dienst zu entkommentieren und neu zu starten, aber dieser Stern ist immer noch nicht aufgetaucht. Ich wundere mich über den letzten Abschnitt, da dieser Abschnitt in jedem anderen Post- oder Internet-Ergebnis auftauchte, das ich in der ntp-Konfiguration gesehen habe. Es gibt mehrere lokale Setups, und die meisten scheinen nur mit der Serveradresse gefunden zu werden. Ping vom Client zum Server ist in Ordnung. Es gibt keine Firewall etc.

Frage

Ich habe keine Ideen mehr. Ich denke, ich habe einen Server mit voll funktionsfähigem NTP-Server, der die Zeit aussendet. Ich habe jedoch einen Client, der die Zeitinformationen nicht vom Server empfängt.

Was kann ich tun, um den Client zum Laufen zu bringen?

3
CatMan

Das Problem wurde behoben, das System funktioniert jetzt. Ich führe diese Zusammenfassung für mich und alle anderen durch, die (erneut) einen Offline-NTP -Server einrichten müssen. Das eigentliche Problem schien zu sein, dass das Experimentieren mit dem Broadcast-Modus den ntpd auf dem Server brach, es funktionierte wieder bei einem Neustart eines anderen Servers. Warum es nicht geklappt hat, als ich den oben angegebenen Beiträgen gefolgt bin, weiß ich nicht so genau.

Backgound

Ein Teil des Problems war, dass ich nicht verstand, wie NTP funktioniert und was ich tat. Weder die Manpage noch das Serverhandbuch 16.04 gaben einen vereinfachten Überblick über die Zusammenarbeit der verschiedenen Computer. Erstens sind NTP Client und Server irreführend. Es ist immer das gleiche Programm, das NTP -Deamon "ntpd". Es muss auf jedem Computer im lokalen Netzwerk installiert sein, damit die Zeitsynchronisierung funktioniert. Ich habe die Windows-Clients noch nicht überprüft, aber ich bin mir sicher, dass es auch irgendwo eine Version für sie gibt (bitte kommentieren Sie, wenn Sie Informationen dazu haben - eingebaute Funktionen wären vorzuziehen). Das Offline-System funktioniert nur mit Systemuhren. Es ist vorteilhaft, mehrere Systemuhren zu verwenden, nicht nur den Hauptserver, da jede Uhr dazu beiträgt, die Zeitverschiebung zu verringern. Mit anderen Worten, eine Uhr würde alle Computer synchronisieren, aber die absolute Zeit wird stabiler und präziser, wenn mehr Uhren berücksichtigt werden. Nach dem, was ich gelesen habe, sollte 4 eine gute Zahl sein. NTP kann gleichzeitig als Server und als Client fungieren. Die Standardkonfigurationsdatei verfügt nicht wirklich über einen Konfigurationsabschnitt für die Serverrolle. Als einfaches Modell ist jede ntpd -Instanz ein Client, der durch regelmäßiges Abfragen Zeitinformationen von irgendwoher erhält. Entweder ein anderes ntpd abrufen oder die lokale Borduhr abrufen. Es wird ein Server, wenn Umfragen von anderen beantwortet werden. Zum Beispiel ein Netzwerk, das über einen Proxy-Server mit dem Internet verbunden ist. Dieser Proxy-Server würde ntpd ausführen, um mehrere Internet-Server NTP abzufragen und so seine eigene Zeit mit ihnen zu verbringen. Wenn alle lokalen Clients diesen Proxy-Server nach seiner (synchronisierten) Zeit abfragen und mit der Beantwortung der Abfragen beginnen, wird er selbst zum NTP-Server. Unser Offline-Fall ist genau das, außer dass die Onlineserver durch die Borduhr ersetzt werden.

Konfiguration Für das Setup muss die Datei /etc/ntp.conf bearbeitet werden. Die Standardeinstellung ist ziemlich voll. Ich habe alle gelöscht, außer:

   # this is the IP or name of the local networks NTP server. This line
   # should be commented out on the server 
   server 192.168.1.111

   # this enables checking the local clock. Do not change that IP values!
   server 127.127.1.0
   fudge 127.127.1.0 stratum 10

   # this lines are required to run the ntpq -p command to verify the  
   # function of the system

   restrict 127.0.0.1
   restrict ::1

Der Server in diesem Beispiel hat die IP 192.168.1.111. Diese Konfiguration kann für alle PCs im Netzwerk gleich sein. Kommentieren Sie die lokale Uhr nur auf Clients aus, die keine Laptops sind. Die Leitung sollte auf Laptops und anderen Geräten gehalten werden, die möglicherweise einige Zeit außerhalb des Netzes betrieben werden. Der erste Serverabschnitt sollte auf dem Server auskommentiert werden.

Starten Sie nach der Bearbeitung den Dienst mit dem Start/Stopp-Skript neu

Sudo /etc/init.d/ntp restart

Zur Überprüfung ausführen

ntpd -p

es ist ein bisschen kürzer als die Version in der Frage und gibt die gleiche Ausgabe. Vor der Taktzeile befindet sich ein *, um anzuzeigen, dass sie verwendet wird. Hier die Ausgabe für einen funktionierenden Server:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)            .LOCL.       2 1    6   64   377   0.000    0.000   0.000

Wenn die Spalte aufwärts zählt, ist die Reichweite alles> 0. Hier die Ausgabe für einen funktionierenden Client:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.111      LOCAL(0)     3 u     31  64   377   0.206   -5.900   0.654

Wenn Sie noch refid = .INIT., funktioniert es nicht. Die Zahlen würden sich offensichtlich unterscheiden. Die Clients sollten keine 0.000 0.000 0.000 Werte anzeigen. Eine Ausgabe für einen Client mit zusätzlicher konfigurierter Fallback-Uhr (beachten Sie, dass sie momentan nicht verwendet wird - nein *):

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.111     LOCAL(0)      3 u    31  64   377   0.206   -5.900   0.654
LOCAL(0)              .LOCL.     8 l     6  64     1   0.000    0.000   0.000

hinzugefügte Infos Die Standardkonfiguration beschreibt eine Broadcast-Sende- und eine Broadcast-Empfangsoption. Aktivieren Sie dies nicht für den normalen Betrieb. Es ist nicht erforderlich, das System in Betrieb zu nehmen und Client und Server zu konfigurieren. Wenn etwas hängen bleibt, starten Sie den Dienst nicht nur neu, sondern führen Sie einen vollständigen Neustart durch. Sogar ein Ubuntu-Server. Wenn das System nicht ausgeführt wurde, stellte ich fest, dass ps -e |grep ntp 2 'ntpd'-Prozesse ausführen sollte. Das Paar konnte konsequent gestartet und gestoppt werden. In der laufenden Version wurde auf jedem Computer nur eine angezeigt. Es gibt andere Einschränkungs- und Protokollierungsoptionen in der Standardkonfigurationsdatei, die möglicherweise hilfreich sind. Hab sie nicht getestet.

Hoffentlich wird das irgendwann nützlich. Wenn Sie Korrekturen haben, kommentieren Sie bitte, ich werde versuchen, die Antwort zu aktualisieren.

Katzenmann

PS: Vielen Dank an Ken Mollerup , dessen Kommentare mich zu einem besseren Verständnis des NTP Systems führen.

0
CatMan