Wie richte ich einen lokalen NTP-Server ein?

16

Ich habe den NTP-Server unter Ubuntu Server 10.04 folgendermaßen installiert:

sudo apt-get install ntp

Der NTP-Daemon scheint auf dem 123-Port zu arbeiten und zu lauschen.

Ich konnte die Zeit jedoch nicht von einem anderen Computer abrufen:

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

Gibt es irgendwelche notwendigen Konfigurationen, um zu tun?

Khaled
quelle

Antworten:

19

Hier ist eine gute Anleitung aus Ubuntu-Foren: http://ubuntuforums.org/showthread.php?t=862620

Flagrant Copy-Pasta:

HOWTO: Richten Sie einen NTP-Server ein

In diesem Lernprogramm wird beschrieben, wie Sie Ihren Computer als lokalen NTP-Server (Network Time Protocol) einrichten und / oder den NTP-Dämon verwenden, um regelmäßig eine genaue Systemzeit einzuhalten.

Was ist NTP?

Das Network Time Protocol (NTP) ist ein Protokoll zur genauen Synchronisierung lokaler Zeituhren mit vernetzten Zeitservern. Das NTP-Netzwerk von Zeitservern ist hierarchisch aufgebaut, so dass jeder Benutzer das System auf einer bestimmten Ebene als Server betreten kann (weitere Informationen finden Sie auf der Wikipedia-Seite).

Die NTP-Hierarchie ist in verschiedene Ebenen unterteilt, die als Taktschichten bezeichnet werden. Die genaueste Ebene, Stratum 0, ist für Atomuhren usw. reserviert. Die nächste Ebene, Stratum 1, wird im Allgemeinen von vernetzten Maschinen verwendet, die lokal mit den Stratum 0-Uhren verbunden sind. Stratum 2 ... 15 sind NTP-Maschinen, die wiederum mit Uhren niedrigerer Ebene und untereinander verbunden sind.

In diesem Handbuch wird beschrieben, wie Sie eine genaue Synchronisierung mit Stratum 1- und Stratum 2-Computern durchführen und die Systemuhr den ganzen Tag über so genau wie möglich halten. In den Abschnitten wird auch erläutert, wie Sie Ihren Computer als Stratum 2/3-Server für andere Computer in Ihrem lokalen Netzwerk verwenden können.

Muss ich einen NTP-Server einrichten?

Nein auf keinen Fall! Wenn Sie mit den Uhren in Ihrem Netzwerk zufrieden sind, die einen unbekannten Unterschied zur Standardzeit (und zueinander) aufweisen, müssen Sie keinen NTP-Server einrichten. Ich habe einen auf meinem Laptop eingerichtet, um mehrere Computer in einem lokalen Netzwerk innerhalb von <1 ms für ein Bioengineering-Experiment zu synchronisieren. Darüber hinaus gibt es verschiedene andere Vorteile, die im Folgenden beschrieben werden.

Motivation:

Unveränderte Ubuntu-Boxen verwenden regelmäßig ntpdate ( /usr/sbin/ntpdate), um die Uhr regelmäßig mit einem externen Zeitserver zu synchronisieren. Dieser Ansatz synchronisiert die Uhr mit einer Kursauflösung (normalerweise einmal am Tag).

Computeruhren sind nicht perfekt und wandern tagsüber vom (richtigen) Zeitserver ab. Darüber hinaus unterscheiden sich die Driftraten in den Uhren verschiedener Computer, so dass am Ende des Tages erhebliche Unterschiede zwischen verschiedenen lokal vernetzten Computern bestehen können, die bestimmte Vorgänge stören können (z. B. jemals ein Makefile beschweren, wenn Quellcode verschoben wird) verschiedene Maschinen?).

Es ist möglich, den NTP-Dämon lokal auf einem Computer in Ihrem Netzwerk auszuführen. Dies hat mehrere Vorteile: Erstens "lernt" der NTP-Daemon allmählich die Driftrate Ihres lokalen Rechners und kann diese im Laufe des Tages korrigieren. Die Synchronisierung mit Zeitservern der oberen Ebene findet mehrmals täglich statt, und viele verschiedene Zeitserver können gleichzeitig verwendet werden, um die Synchronisierung genauer zu gestalten. Auf diese Weise fungiert der NTP-Dämon als Client für genaue Zeitangaben und hält die Systemuhr so ​​nahe wie möglich an der Standardzeit.

Der NTP-Daemon sorgt nicht nur für eine genaue Systemuhr, sondern ermöglicht es einem Computer in Ihrem Netzwerk (wenn Sie möchten), als NTP-Zeitserver zu arbeiten. Auf diese Weise können andere Computer in Ihrem lokalen Netzwerk sehr schnell und genau mit Ihrem LAN-Zeitserver synchronisiert werden, da die Netzwerklatenz minimiert wird. Auf diese Weise werden die Taktunterschiede zwischen Computern in Ihrem Netzwerk so gering wie möglich gehalten. Mac und sogar Windows-Boxen können auch mit einem NTP-Server synchronisiert werden, falls Sie einen einrichten.

Es gibt andere, weniger persönliche Gründe, einen Computer als NTP-Server einzurichten. Erstens kann dies die Belastung für NTP-Server auf höherer Ebene verringern, da andere Computer in Ihrem LAN möglicherweise mit einem lokal eingerichteten Zeitserver synchronisiert werden. Außerdem wurde ntpdate zugunsten der Verwendung des Flags -q für ntpd (das die Funktionalität nachahmt) als veraltet eingestuft. Selbst wenn Sie ntpd nicht ständig im Hintergrund ausführen möchten, wird ntpdate schließlich durch ntpd ersetzt, sodass Sie sich möglicherweise jetzt damit vertraut machen möchten

So pflegen Sie eine genaue Systemuhr mit ntpd

  1. Installieren Sie den NTP-Daemon

Installieren Sie zuerst den NTP-Daemon (ntpd):

sudo aptitude install ntpd

Wie bereits erwähnt, kann ntpd sowohl als Client (Synchronisierung der Systemzeit) als auch als Server (Bereitstellung der genauen Zeit für andere Computer) fungieren.

Optional können Sie auch das vorherige (veraltete) Zeitsynchronisationsprogramm ntpdate entfernen. Vielleicht ist es klüger, dies zu tun, nachdem Sie mit ntpd gearbeitet haben

sudo aptitude remove ntpdate
  1. Konfigurieren Sie den Dämon ordnungsgemäß

Die Konfigurationsdatei für ntpd befindet sich unter /etc/ntp.conf. Die Standard-Ubuntu-Datei erfordert wahrscheinlich einige Änderungen, um eine optimale Leistung zu erzielen.

Der erste Abschnitt, den Sie möglicherweise ändern möchten, ist die Liste der Server, mit denen synchronisiert werden soll. Der Standardabschnitt sieht wahrscheinlich folgendermaßen aus:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

Um eine möglichst genaue Uhrzeit zu erhalten, sollten Sie vorzugsweise mit mehreren verschiedenen NTP-Servern kommunizieren und diese so nah wie möglich an Ihrem physischen Standort halten. Es sind verschiedene Serverlisten online, wahrscheinlich befindet sich die beste hier. Es gibt einige Debatten über die richtige Anzahl der zu verwendenden Server. Eins ist besser als zwei und drei oder mehr ist wahrscheinlich eine gute Idee, solange Sie nicht zu weit über Bord gehen. Ein Beispiel für einige Zeitserver, die ich verwendet habe:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Sobald ein paar gute Server gefunden wurden, fügen Sie sie der Liste hinzu, wobei Sie 'iburst'den vielversprechendsten auswählen. Zum Beispiel:

server nist1-dc.WiTime.net iburst

Dadurch wird ntpd nach dem Start sehr schnell mit diesem Server synchronisiert. Andernfalls tendiert ntpd langsam dazu, sich mit der Serverliste abzustimmen (wie es der Fall ist), und es kann 15 bis 20 Minuten dauern, bis die Synchronisierung gut genug ist, um als Zeitserver für den Rest Ihres Netzwerks zu fungieren.

Fügen Sie außerdem ein paar zusätzliche Zeilen am Ende Ihrer Serverliste hinzu, um Ihre aktuelle Ortszeit als Standard anzugeben, falls Sie vorübergehend die Internetverbindung verlieren sollten:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Dies verhindert Unangenehmes, wenn Sie ntpd auf einem Laptop oder einem anderen Computer mit zeitweiligen Unterbrechungen der Internetverbindung ausführen.

Alles in allem sollte die Serverliste wie folgt aussehen (dies ist meine, Ihre Server werden wahrscheinlich anders sein):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. Stellen Sie sicher, dass die Konfiguration funktioniert

Nachdem Sie eine korrekte Serverliste in Ihrer /etc/ntp.confDatei haben, ist es an der Zeit, den Daemon auszuführen und zu prüfen, ob Sie ordnungsgemäß synchronisieren. Stellen Sie sicher, dass Sie über eine aktive Internetverbindung verfügen, und führen Sie dann Folgendes aus:

sudo /etc/init.d/ntp restart

Überwachen Sie als Nächstes Ihr Systemprotokoll, um festzustellen, ob Sie mit einem Zeitserver synchronisieren:

tail -f /var/log/syslog

In etwa 10 bis 15 Sekunden (oder bis zu 15 bis 20 Minuten, wenn Sie vergessen haben, 'iburst' nach Ihrem Lieblingsserver zu setzen) sollten Sie in Ihrem Systemprotokoll Folgendes sehen:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Wenn diese Meldung nie angezeigt wird, haben Sie noch keine ordnungsgemäße Synchronisierung mit dem NTP-Servernetzwerk durchgeführt. Überprüfen Sie die Liste der NTP-Peers, mit denen Sie kommunizieren, wie folgt:

ntpq -c lpeer

Wenn die Felder "Verzögerung", "Versatz" und "Jitter" nicht Null sind und Sie nicht synchronisiert haben, bedeutet dies wahrscheinlich, dass Sie nur eine Weile warten müssen. Überprüfen Sie erneut, ob Sie das Argument 'iburst' in Ihre Serverliste eingefügt haben! Meine Kollegen sehen als Referenz ungefähr so ​​aus:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. Teilen! (Optional)

Sobald ntpd ausgeführt wird und mit den von Ihnen ausgewählten Zeitservern synchronisiert ist, können Sie es einrichten, um als Zeitserver für andere Computer zu fungieren. Fügen Sie dazu einen Abschnitt wie den folgenden hinzu /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. Synchronisieren! (Optional)

Nachdem Sie in den Schritten 1 bis 4 einen NTP-Server eingerichtet haben, können Sie die anderen Computer in Ihrem Netzwerk auf verschiedene Arten mit Ihrem Server synchronisieren. Ich skizziere unten ein paar davon:

ntpd:

Wenn Sie ntpd auf einem anderen Computer installiert haben, können Sie Ihren ersten Server in der Serverliste Ihrer Datei ntp.conf verwenden oder wie folgt einmalig mit der Option -q synchronisieren:

ntpd -q [IP address of your server]

ntpdate:

Wenn Sie ntpdate noch auf einem anderen Computer installiert haben, können Sie es wie folgt zur Synchronisierung mit Ihrem Server verwenden:

ntpdate [IP address of your server]

Hinweis: Wenn Sie ntpd auf einem Computer ausführen und aus irgendeinem Grund weiterhin ntpdate zum Festlegen der Uhrzeit verwenden möchten, müssen Sie die Option -u verwenden.

Windows:

Windows-Computer verwenden eine vereinfachte Version von NTP namens SNTP (Simple Network Time Protocol) und können mit NTP-Servern synchronisieren. Um mit Ihrem neuen Server zu synchronisieren, doppelklicken Sie auf die Uhrzeit und gehen Sie zur Registerkarte "Internetzeit". Tragen Sie die IP-Adresse Ihres Servers in das Feld "Server" ein. Ich habe einen Screenshot von Windows XP angehängt, der sich mit einem LAN-Zeitserver synchronisiert, sollte sich jemand dafür interessieren.

Das ist es! Der gesamte Prozess ist nicht schwer, kann aber für jemanden verwirrend sein, der sich zuvor nicht viel mit dem NTP-Netzwerk befasst hat. Ich hoffe das hilft! Lassen Sie mich wissen, wenn Sie Probleme beim Einrichten Ihres Servers haben.

Mike

Links

Ich fand die folgenden Links hilfreich ... vielleicht auch Sie!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http: //lists.ntp.isc. org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm

RobotHumans
quelle
Danke für den Link. Eigentlich habe ich meine Konfiguration nicht geändert! Es hat einfach nach einiger Zeit funktioniert.
Khaled
Auf Ihrem NTP-Server können Sie ausführen ntpdate -s a_stratum_1_server_address, um die sofortige Synchronisierung zu erzwingen. Auf Ihrem anderen (Client-) Rechner sollte "ntpdate -q your_local_ntp_server" dann mit etwas ähnlichem wieserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds
Eine Antwort nur auf einen Link kann veraltet sein. Bitte geben Sie die wichtigen Informationen in der Antwort selbst an.
Zeta
5

Es gibt viele Links dazu und es scheint mir, dass sie das Verfahren erschweren. In meinem Fall habe ich einen Computer, der als Proxyserver und Firewall fungiert, und alle anderen stellen über ihn eine Verbindung zum Internet her. Ich wollte keine Ports in der Firewall öffnen. Daher ist der Proxy - Server muss die Zeit (ntp) seinen Server und die anderen Maschinen ( Clients ) aus der Zeit.

Sie müssen ntp auf allen Computern installieren, und Sie sollten ntpq auch auf allen Computern installieren.

Überprüfen Sie zunächst, ob ntp funktioniert. Standardmäßig wird ntpd (der ntp-Daemon) ausgeführt, sobald es installiert ist, und die Standardeinstellungen sollten funktionieren. Ntp funktioniert jedoch nicht sofort. Warten Sie also eine Weile. Dann der Befehl:

ntpq -c lpeer

Sie sollten eine Ausgabe erhalten, die ungefähr so ​​aussieht:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

oder:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

Wenn ja, sind Sie verbunden und Ihr Zeitserver erhält die Zeit. Wenn nicht, benutze

ps -e | grep "ntp" 

um sicher zu gehen, dass ntp läuft, und versuche es erneut. Versuchen Sie auch, ntp neu zu starten:

sudo /etc/init.d/ntp restart

Es kann einige "Zeit" dauern (sorry!), bis die Verbindung hergestellt ist. Der Daemon fragt die Server nicht sehr oft ab. Die Spalte "Wann" in der obigen Ausgabe gibt die Zeit in Sekunden an, seit der Server abgefragt wurde.

Jetzt müssen Sie den Zeitserver veranlassen, die Zeit an Ihre anderen Computer zu senden.

Bearbeiten Sie die Datei /etc/ntp.confauf dem Server. Sie müssen eine Leitung für Ihr Netzwerk hinzufügen. In meinem Fall habe ich ein 10.0.0.0-Netzwerk. In der Datei ntp.conf habe ich folgende Zeile hinzugefügt:

broadcast 10.255.255.255

Sie müssen für jedes Segment Ihres Netzwerks eine Übertragungsleitung hinzufügen. Wenn Ihr Netzwerk so einfach ist wie meins, brauchen Sie nur eine Zeile wie die oben genannte. Starten Sie nun ntp mit dem obigen Befehl neu und überprüfen Sie es erneut mit ntpq. Folgendes sollte angezeigt werden:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Voila, es sendet.

Jetzt müssen Sie dafür sorgen, dass jeder Client-Computer die Zeit von Ihrem Broadcast-Server erhält. Bearbeiten Sie auf jedem die Datei:

/etc/ntp.conf

und Sie werden einige Zeilen sehen, die Server angeben.

füge eine Zeile hinzu

server 10.10.10.1

oder was auch immer die Adresse Ihres Servers ist. Starten Sie dann ntp auf dem Client-Computer mit dem obigen Befehl neu. Alternativ können Sie die Prozess-ID abrufen und einfach beenden und erneut ausführen. Was auch immer.

Prüfen Sie dann nach einer ausreichenden Zeit mit ntpq:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

und Sie können sehen, dass der Client den Zeitserver verwendet.

Dies dauert einige Zeit.

Wastrel
quelle
Sie können ntpdate -s a_stratum_1_server_addressauf Ihrem NTP-Server ausführen, um die sofortige Abfrage und Synchronisierung zu erzwingen.
Keith Reynolds
Wird diese Art von Broadcast von allen Switches unterstützt? Beispielsweise wird UDP-Broadcast von den meisten Switches / Routern blockiert.
Tanasis
1

Die akzeptierte Antwort (Stand Juli 2018) hat bei mir nicht funktioniert. Diese andere Methode hat auf Ubuntu 16.04 LTS im Juli 2018 einwandfrei funktioniert :

Installieren Sie NTP, wenn es nicht installiert ist:

sudo apt-get update
sudo apt-get install ntp

Bearbeiten Sie die Konfigurationsdatei , damit der NTP-Dienst Anforderungen empfangen kann:

sudo nano /etc/ntp.conf --syntax=sh

Kommentar für diese Zeile entfernen:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

zu:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

Starten Sie den NTP- Dienst neu:

sudo /etc/init.d/ntp restart

Jetzt muss Ihr NTP-Server funktionieren und es einem anderen Computer ermöglichen, mit Ihrem zu synchronisieren. Jeder der oben genannten Tests, wie der ntpdate -u YourComputersollte funktionieren.

Sopalajo de Arrierez
quelle