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:
-
Ihr Server muss eine statische IP-Adresse haben.
-
Ihr Server muss über eine dauerhafte und stabile Internetverbindung verfügen.
-
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 Centos 7-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 den AnweisungenInitial Server Setup with CentOS 7 tutorial und dem Abschnitt „Konfigurieren einer Basisfirewall“ im LernprogrammAdditional Recommended Steps for New CentOS 7 Serversfolgen.
[[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 yum update
Dann installiere NTP:
sudo yum install ntp
Starten Sie nach Abschluss der Installation den Dienst und konfigurieren Sie ihn so, dass er bei jedem Start des Servers automatisch gestartet wird:
sudo systemctl start ntpd
sudo systemctl enable ntpd
Wenn Sie die Firewall wie in den Voraussetzungen angegeben konfiguriert haben, müssen Sie UDP-Datenverkehr für den NTP-Dienst zulassen, um mit dem NTP-Pool kommunizieren zu können:
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload
Weitere Informationen zu FirewallD finden Sie unterHow To Set Up a Firewall Using FirewallD on CentOS 7.
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.org
zu 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:
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 vi /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
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
...
Entfernen Sie als Nächstes die Standard-Zeitquelleneinträge aus der Konfiguration. Sie suchen nach allen Zeilen mit dem Musterserver 0.centos.pool.ntp.org iburst
. Wenn Sie eine Standardkonfiguration verwenden, entfernen Sie die hervorgehobenen Linien wie im folgenden Beispiel gezeigt:
/etc/ntp.conf
...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
Ersetzen Sie die Linien, die Sie entfernt haben, durch die handverlesenen Server, die Sie im vorherigen Schritt ausgewählt haben.
/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 vonrestrict
hinzugefügt wurde. Stellen Sie außerdem sicher, dass Sie die Optionenkod
undlimited
hinzufügen, da diese zu eifrig Kunden fragen und die Ratenbegrenzung erzwingen.
/etc/ntp.conf
...
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery kod limited
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
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
restrict default nomodify notrap nopeer noquery kod limited
restrict 127.0.0.1
restrict ::1
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
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 ntpd
Ü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:
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.
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 Using FirewallD on CentOS 7 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.