So konfigurieren Sie NTP für die Verwendung im NTP-Pool-Projekt unter Ubuntu 16.04

Einführung

Genaue Zeitmessung ist für fast jeden Service oder jede Software von entscheidender Bedeutung. E-Mails, Logger, Ereignissysteme und Scheduler, Benutzerauthentifizierungsmechanismen und Dienste, die auf verteilten Plattformen ausgeführt werden, benötigen genaue Zeitstempel, um Ereignisse in chronologischer Reihenfolge aufzuzeichnen. Diese Dienste verwenden das Network Time Protocol (NTP), um die Systemuhr mit einer vertrauenswürdigen externen Quelle zu synchronisieren. Diese Quelle kann eine Atomuhr, ein GPS-Empfänger oder ein anderer Zeitserver sein, der bereits NTP verwendet.

Hier kommt das ProjektNTP Pool Projectins Spiel. Es handelt sich um ein riesiges weltweites Cluster von Zeitservern, die zig Millionen Kunden auf der ganzen Welt einfachen Zugriff auf die bekannte "gute Zeit" bieten. Dies ist der Standard-Zeitserver für Ubuntu und die meisten anderen wichtigen Linux-Distributionen sowie für viele vernetzte Appliances und Softwareanwendungen.

In diesem Handbuch richten Sie NTP auf Ihrem Server ein und konfigurieren es als Teil des NTP-Pool-Projekts, damit andere Benutzer des NTP-Pool-Projekts genaue Zeitangaben erhalten. Die Bereitstellung Ihrer freien CPU-Zyklen und der nicht genutzten Bandbreite ist eine perfekte Möglichkeit, der Community etwas zurückzugeben.

Die erforderliche Bandbreite ist relativ niedrig und kann abhängig von der Menge, die Sie bereitstellen können, und dem Standort Ihres Servers angepasst werden. Jeder Client sendet nur alle 20 Minuten ein paar UDP-Pakete, sodass die meisten Server nur etwa ein Dutzend NTP-Pakete pro Sekunde empfangen, mit Spitzenwerten von ein paar Mal pro Tag von bis zu einhundert Paketen pro Sekunde. Dies entspricht einer Bandbreitenauslastung von 10 bis 15 KBit / s bei Spitzen von 50 bis 120 KBit / s.

Es gibt drei Grundvoraussetzungen, die Sie erfüllen müssen, bevor Sie dem NTP-Pool-Projekt beitreten können:

  1. Ihr Server muss eine statische IP-Adresse haben.

  2. Ihr Server muss über eine dauerhafte und stabile Internetverbindung verfügen.

  3. Ihre IP-Adresse ändert sich meist nicht oder nur selten (einmal im Jahr oder weniger).

Bei den meisten Cloud-basierten Servern werden die ersten beiden Anforderungen normalerweise automatisch erfüllt. Die dritte Anforderung betont, dass der Beitritt zum NTP-Pool-Projekt eine langfristige Verpflichtung darstellt. Wenn sich Ihre Umstände ändern, ist es natürlich in Ordnung, einen Server aus dem Pool zu entfernen. Es dauert jedoch lange (meist Wochen, manchmal Monate oder sogar Jahre), bis der Datenverkehr vollständig verschwindet.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein Ubuntu 16.04-Server mit konfiguriertem IPv6-Netzwerk. Wenn Sie das IPv6-Netzwerk auf einem vorhandenen Droplet konfigurieren müssen, können Siethis tutorial folgen.

  • Ein Sudo-Benutzer ohne Rootberechtigung und eine Firewall, die Sie einrichten können, indem Sie denInitial Server Setup with Ubuntu 16.04 tutorial folgen.

[[Schritt-1 -—- Installation-ntp]] == Schritt 1 - Installation von NTP

Das NTP-Paket wird nicht standardmäßig installiert. Verwenden Sie daher den Paket-Manager, um es zu installieren. Aktualisieren Sie zuerst Ihre Pakete:

sudo apt-get update

Dann installiere NTP:

sudo apt-get install ntp

Wenn Sie die Firewall wie in den Voraussetzungen angegeben konfiguriert haben, müssen Sie UDP-Verkehr auf Port123zulassen, um mit dem NTP-Pool kommunizieren zu können:

sudo ufw allow 123/udp

Weitere Informationen zu UFW finden Sie unterHow To Set Up a Firewall with UFW on Ubuntu.

NTP ist jetzt installiert, ist jedoch so konfiguriert, dass die Standard-NTP-Pool-Zeitserver verwendet werden. Wählen wir stattdessen einige bestimmte Zeitserver aus.

[[Schritt 2 - Auswahl eines geeigneten Upstream-Servers]] == Schritt 2 - Auswahl eines geeigneten Upstream-Servers

Das NTP-Pool-Projekt fordert Betreiber, die dem Pool beitreten möchten, auf, gute netzwerklokale Zeitserver auszuwählen, anstatt die Standardserverpool.ntp.orgzu verwenden. Dies stellt sicher, dass das NTP-Pool-Projekt zuverlässig, schnell und fehlerfrei bleibt. Wenn Sie Ihre Zeitquelle auswählen, möchten Sie eine stabile Netzwerkverbindung ohne Paketverlust und mit möglichst wenigen Hops zwischen den Servern.

Das mehrschichtige und hierarchische NTP-Protokoll unterteilt die beteiligten Parteien in Primärserver, Sekundärserver und Clients. Die Primärserver heißenStratum 1 und sind direkt mit der Zeitquelle verbunden, dieStratum 0 heißt. Diese Quelle kann eine Atomuhr, ein GPS-Empfänger oder ein Funknavigationssystem sein. Sekundärserver in der Kette heißenStratum 2,Stratum 3 usw.

Jeder Server ist auch ein Client. Ein Stratum 2-Client empfängt Zeit von einem vorgelagerten Stratum 1-Server und stellt Zeit für nachgelagerte Stratum 3-Server oder andere Clients bereit. Damit Mitglieder des NTP-Pool-Projekts ordnungsgemäß funktionieren, müssen für den NTP-Dämon mindestens drei Server konfiguriert sein. Das Projekt empfiehlt mindestens vier und höchstens sieben Quellen.

Das NTP-Pool-Projekt enthält eine Liste der öffentlichen Stratum 1- und Startum 2-Zeitserver. Die Listen bezeichnen die NTP-Zeitserver, die unter festgelegten Einschränkungen für den öffentlichen Zugriff verfügbar sind. Es gibt drei Arten:

  • OpenAccess: Dieser Zeitserver steht jedem Client offen, der den NTP-Poolusage recommendations einhält.

  • RestrictedAccess: Dieser Zeitserver hat zusätzlich zu den Verwendungsempfehlungen für den NTP-Pool einige Zugriffsbeschränkungen.

  • ClosedAccess: Dieser Zeitserver ist geschlossen oder erfordert eine vorherige Vereinbarung.

[.warning] #Warning: Verwenden Sie keine Server, die nicht alsOpenAccess aufgeführt sind, es sei denn, Sie haben die Genehmigung dazu erhalten.
#

Besuchen Sie dieStratum 1 Time Servers list. Sie sehen eine Liste wie die folgende:

Stratum 1 servers

Sortieren Sie die Liste nach der SpalteISO codeund suchen Sie einen oder zwei Server, die sich geografisch in der Nähe des Rechenzentrums Ihres Servers befinden. Wenn in der SpalteAccess Policydes ServersOpenAccess angegeben ist, können Sie sie problemlos verwenden. Wenn "RestrictedAccess" angezeigt wird, klicken Sie, um den Eintrag zu öffnen, und lesen Sie die Anweisungen im FeldAccessDetails. Oft werden Sie feststellen, dassNotificationMessage aufYes eingestellt ist. Dies bedeutet, dass Sie eine informelle E-Mail an die inServerContact angegebene Adresse erstellen müssen, um den Serverbetreiber über Ihren Wunsch zu informieren Verwenden Sie diesen Zeitserver als Zeitquelle für Ihr NTP Pool Project-Mitglied.

Wenn Sie die Server identifiziert haben, die Sie verwenden möchten, klicken Sie auf den Link für jeden Server in der SpalteISOund kopieren Sie dessen Hostnamen oder IP-Adresse. Diese Adressen verwenden Sie in Schritt 3.

Wählen Sie als Nächstes drei oder vier Server aus der ListeStratum 2aus.

Nachdem Sie Ihre Zeitserver ausgewählt haben, müssen Sie Ihren NTP-Client für deren Verwendung konfigurieren.

[[Schritt-3 - Konfigurieren von NTP, um dem Pool beizutreten]] == Schritt 3 - Konfigurieren von NTP für den Beitritt zum Pool

Um Ihren Server mit dem NTP-Pool zu verwenden und Ihre neuen Zeitserver zu konfigurieren, müssen Sie einige Änderungen an der Konfiguration Ihres NTP-Daemons vornehmen. Bearbeiten Sie dazu die Datei/etc/ntp.conf:

sudo nano /etc/ntp.conf

Stellen Sie zunächst sicher, dassdriftfile konfiguriert ist. Eine Driftdatei speichert den Frequenzversatz zwischen der Systemuhr, die bei ihrer Nennfrequenz läuft, und der Frequenz, die erforderlich ist, um mit der korrekten Zeit synchron zu bleiben. Es hilft, eine stabile und genaue Zeit zu erreichen. Sie sollten dies oben in Ihrer Konfigurationsdatei bei einer Standardinstallation finden:

/etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift
...

Entfernen Sie als Nächstes die Standard-Zeitquelleneinträge aus der Konfiguration. Sie suchen nach allen Zeilen mit dem Musterpool [0-3].ubuntu.pool.ntp.org iburst oderpool ntp.ubuntu.com. Wenn Sie eine Standardkonfiguration verwenden, entfernen Sie die hervorgehobenen Zeilen:

/etc/ntp.conf

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

Ersetzen Sie die entfernten Zeilen durch die im vorherigen Schritt ausgewählten handverlesenen Server, indem Sie das Schlüsselwortserveranstelle des Schlüsselwortspoolverwenden.

/etc/ntp.conf

...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

Wir verwenden die Optioniburst für jeden Server gemäß den Empfehlungen des NTP-Pools. Auf diese Weise wird, wenn der Server nicht erreichbar ist, ein Burst von acht Paketen anstelle des üblichen Pakets gesendet. Die Verwendung der Optionburst im NTP-Pool-Projekt wird als Missbrauch angesehen, da diese acht Pakete in jedem Abfrageintervall gesendet werden, währendiburst die acht Pakete nur beim ersten Mal sendet.

Stellen Sie als Nächstes sicher, dass die Standardkonfiguration keine Verwaltungsabfragen zulässt. Wenn Sie dies nicht tun, wird Ihr Server möglicherweise für NTP-Reflektionsangriffe verwendet oder ist anfällig für Abfragen vonntpq undntpdc, die versuchen, den Status des Servers zu ändern. Überprüfen Sie, ob die Optionnoquery zu den Standardzeilen vonrestricthinzugefügt wurde:

/etc/ntp.conf

...
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

Weitere Informationen zu den anderen Optionen finden Sie inofficial documentation.

Ihre NTP-Daemon-Konfigurationsdatei sollte nun wie folgt aussehen, obwohl Ihre Datei möglicherweise zusätzliche Kommentare enthält, die Sie ignorieren können:

/etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift

server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

Speichern Sie die Datei und beenden Sie den Editor.

Starten Sie nun den NTP-Dienst neu und lassen Sie Ihren Zeitserver seine Uhr mit den Upstream-Servern synchronisieren.

sudo systemctl restart ntp.service

Überprüfen Sie nach einigen Minuten den Zustand Ihres Zeitservers mit dem Befehlntpq:

ntpq -p

Die Ausgabe sollte ungefähr so ​​aussehen:

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

In der Spalteremote wird der Hostname der Server angegeben, die der NTP-Dämon verwendet, und in der Spalterefidwird die Quelle angegeben, die die Server verwenden. Bei Stratum 1-Servern sollte im FeldrefidGPS,PPS,ACTS oderPTB angezeigt werden, und bei Stratum 2 und höheren Servern wird die IP angezeigt Adresse des Upstream-Servers. Die Spaltest zeigt die Schicht, unddelay,offset undjitter geben Auskunft über die Qualität der Zeitquelle. Niedrigere Werte sind für diese drei Felder besser.

Ihr Zeitserver kann jetzt der Öffentlichkeit Zeit zur Verfügung stellen. Sie können dies überprüfen, indem Sientpdate von einem anderen Host aus aufrufen:

ntpdate -q your_server_ip

Die Ausgabe sollte ungefähr so ​​aussehen und zeigt an, dass der Zeitserver und der Offset angepasst wurden:

Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428
 2 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec

Sie können Ihren NTP-Server jetzt beim NTP-Pool-Projekt registrieren, damit andere ihn verwenden können.

[[Schritt 4 - Hinzufügen des Servers zum NTP-Pool]] == Schritt 4 - Hinzufügen des Servers zum NTP-Pool

Um Ihren Server hinzuzufügen, damit andere ihn verwenden können, besuchen Siemanage.ntppool.org und melden Sie sich für ein Konto an. Sie erhalten vonNTP Pool [email protected]eine E-Mail mit der Aufforderung, Ihr Konto zu verifizieren. Bestätigen Sie Ihr Konto, indem Sie den Anweisungen in der E-Mail folgen, und melden Sie sich dann beimanage.ntppool.org an.

Sobald Sie angemeldet sind, sehen Sie die einfache Oberfläche zum Hinzufügen von Servern:

Add a server

Geben Sie die IP-Adresse Ihres Servers ein und klicken Sie aufSubmit.

Im nächsten Bildschirm werden Sie aufgefordert, zu überprüfen, ob die Region Ihres Servers identifiziert wurde. Wenn Ihr Server in einer anderen Region als erwartet angezeigt wird, verwenden Sie das FeldComment, um ihn zu informieren.

The verification screen

Wenn Sie zufrieden sind, bestätigen Sie die Eingabe, indem Sie aufYes, this is my server, add it! klicken

Ihr Server ist jetzt Teil des NTP-Pool-Projekts. Besuchen Siehttp://www.pool.ntp.org/scores/your_server_ip, um Informationen zu erhalten, die das Überwachungssystem des NTP-Pools über Ihren Server gesammelt hat. Es überprüft Ihren Server einige Male pro Stunde und zeigt Offsetdaten zusammen mit denscore Ihres Systems an. Solange Ihr Server genügend Zeit hat und erreichbar ist, steigt die Punktzahl auf 20 Punkte. Im Pool werden nur Server mit einer Punktzahl von mehr als 10 verwendet.

Fehlerbehebung bei Verbindungsproblemen

Wenn Sie Probleme haben, Ihren Server zur Synchronisierung zu bringen, ist möglicherweise eine Paket-Firewall vorhanden, die Ihreoutgoing-Pakete auf Port123 ablegt. Schauen Sie sichHow To Set Up a Firewall with UFW on Ubuntu an, um zu erfahren, wie Sie den Status der Firewall überprüfen.

Wenn die Überwachungsstation des NTP-Pool-Projekts Ihren NTP-Server nicht erreichen kann und Ihre Server-Punktzahl sinkt oder Sie Ihren Server nicht zum Synchronisieren einer anderen Uhr verwenden können, ist möglicherweise eine Paket-Firewall vorhanden, die Ihrincominglöscht. s Verkehr auf Port123. Überprüfen Sie Ihren Firewall-Status.

Wenn Sie sicher sind, dass keine Firewall vorhanden ist oder Sie Port123 sowohl für eingehenden als auch für ausgehenden Datenverkehr geöffnet haben, werden Ihre Pakete möglicherweise von Ihrem Serveranbieter oder einem anderen Transitanbieter verworfen. Wenn Sie nicht über das Wissen verfügen, um diese Probleme selbst zu lösen, wenden Sie sich am besten an die Community und suchen Sie nach Hilfe. DasNTP Pool Projects forum ist ein guter Anfang. Sie können auch diemailing list odersend an emaill mit dem NTP-Pool-Projektoperator verbinden. Stellen Sie nur sicher, dass Sie alle Schritte anzeigen können, mit denen Sie bereits versucht haben, das Problem zu beheben, bevor Sie um Hilfe bitten.

Fazit

In diesem Lernprogramm haben Sie Ihren eigenen Zeitserver erfolgreich eingerichtet und zum Mitglied des NTP-Pool-Projekts gemacht, um der Community Zeit zu geben. Um mit der Zeitnehmergemeinschaft in Kontakt zu bleiben. Verbinden Sie dieNTP Pool Projects forum oder diemailing list. Überwachen Sie unbedingt die Punktzahl Ihres Servers und nehmen Sie die erforderlichen Anpassungen vor.