NTP (Network Time Protocol) wird verwendet, um die Systemzeit mit einer Referenzzeit zu synchronisieren, die von speziellen Servern bereitgestellt wird. In diesem Artikel wird beschrieben, wie NTP auf verschiedenen Betriebssystemen und Geräten konfiguriert wird, beginnend mit einer umfassenden Anleitung zur Einrichtung eines NTP-Servers auf Linux.
Wir zeigen die Synchronisierungseinrichtung mit Ubuntu, aber dieser Leitfaden gilt auch für Debian und die meisten Linux-basierten Systeme. Wir haben die Anweisungen in drei Teile unterteilt: Der erste Teil behandelt die Installation des NTP-Servers, der zweite erklärt die Synchronisierung von NTP-Clients und der dritte behandelt erweiterte Synchronisierungseinstellungen.
Um diesem Leitfaden zu folgen, benötigen Sie:
Einen Cloud-Server mit installiertem Ubuntu.
Ein Root-Benutzer oder ein Benutzer mit sudo-Rechten.
Nano oder einen anderen installierten Editor.
Diese Schritte führen Sie durch die Installation und Vorbereitung des NTP-Servers für die weitere Konfiguration.
Aktualisieren Sie den Repository-Index, um sicherzustellen, dass Sie die neuesten Softwareversionen herunterladen können. Verwenden Sie den folgenden Befehl:sudo apt-get update
Installieren Sie den NTP-Server:sudo apt-get install ntp
Bestätigen Sie die Installation, indem Sie "Y" auswählen, wenn Sie dazu aufgefordert werden (Y/N). Warten Sie, bis die Software heruntergeladen und installiert wurde.
Überprüfen Sie die Installation:sntp --version
Die Ausgabe sollte die Versionsnummer und die Installationszeit anzeigen.
Verbinden Sie sich mit dem nächstgelegenen Server-Pool. Der Server sollte standardmäßig eine genaue Zeit erhalten, aber es ist besser, sich mit einem Pool von Servern zu verbinden, der näher an Ihrem Standort liegt, um zusätzliche Zuverlässigkeit zu gewährleisten. Bearbeiten Sie dazu die Datei ntp.conf, die sich unter /etc/ntp.conf befindet. Öffnen Sie sie mit nano (Sie benötigen sudo-Rechte), indem Sie eingeben:sudo nano /etc/ntp.conf
In der geöffneten Datei sehen Sie vier Zeilen, die wir zur Referenz in Orange hervorgehoben haben. Dies sind die Standard-Pools, die wir durch lokale Pools ersetzen (z. B. für die USA können wir NTP-Server von dieser Seite verwenden). Nachdem Sie die Zeilen ersetzt haben, speichern und schließen Sie die Datei ntp.conf, indem Sie Ctrl+O und Ctrl+X drücken.
Starten Sie den Server neu:sudo service ntp restart
Überprüfen Sie den Status des Servers:sudo service ntp status
Die Ausgabe sollte "Active (running)" in einer der ersten Zeilen anzeigen (Active) und die Startzeit des Servers.
Konfigurieren Sie die Firewall. Um den Client-Zugriff auf den Server zu ermöglichen, öffnen Sie den UDP-Port 123 mit UFW und dem folgenden Befehl:sudo ufw allow from any to any port 123 proto udp
Die Installation ist abgeschlossen, und der Server läuft. Jetzt können Sie mit der weiteren Konfiguration fortfahren.
Die folgenden Schritte ermöglichen es den Client-Systemen, sich mit unserem NTP-Server zu synchronisieren, der als ihre primäre Zeitquelle dient.
Überprüfen Sie die Verbindung
Um die Netzwerkkonfiguration für NTP zu überprüfen, geben Sie den folgenden Befehl im Terminal ein:
sudo apt-get install ntpdate
Geben Sie die IP-Adresse und den Hostnamen an
Um die IP-Adresse und den Hostnamen des Servers zu konfigurieren, bearbeiten Sie die Datei hosts, die sich unter /etc/hosts befindet:sudo nano /etc/hosts
Fügen Sie die relevanten Daten in der dritten Zeile von oben hinzu (die unten angegebene Adresse ist nur ein Beispiel; ersetzen Sie sie durch die tatsächliche IP-Adresse Ihres NTP-Servers):192.168.154.142 ntp-server
Drücken Sie Ctrl+X, um die Datei zu verlassen, und speichern Sie die Änderungen mit Y. Alternativ können Sie diesen Schritt auch im DNS-Server vornehmen.
Überprüfen Sie die Synchronisation des Clients mit dem Server
Um zu überprüfen, ob die Synchronisation zwischen dem Server und dem Client aktiv ist, geben Sie den folgenden Befehl ein:sudo ntpdate ntp-server
Die Ausgabe zeigt die Zeitabweichung. Ein Unterschied von wenigen Millisekunden ist normal, daher können Sie kleine Werte ignorieren.
Deaktivieren Sie den Service timesyncd
Dieser Service synchronisiert die lokale Systemzeit, aber wir benötigen ihn nicht, da unsere Clients mit dem NTP-Server synchronisieren. Deaktivieren Sie ihn mit:sudo timedatectl set-ntp off
Installieren Sie NTP auf dem Client-System
Installieren Sie NTP auf dem Client mit diesem Befehl:sudo apt-get install ntp
Stellen Sie sicher, dass Ihr NTP-Server als primäre Referenz verwendet wird
Um sicherzustellen, dass sich die Clients speziell mit Ihrem Server synchronisieren, öffnen Sie die ntp.conf-Datei und fügen Sie die folgende Zeile hinzu:server NTP-server-host prefer iburst
Die prefer-Direktive markiert den Server als bevorzugt, und iburst ermöglicht mehrere Anfragen an den Server, um die Synchronisationsgenauigkeit zu erhöhen. Speichern Sie die Änderungen mit Ctrl+X und bestätigen Sie mit Y.
Starten Sie den Server neu
Starten Sie den NTP-Server mit diesem einfachen Befehl neu:sudo service ntp restart
Überprüfen Sie die Synchronisierungswarteschlange
Schließlich können Sie den Synchronisationsstatus überprüfen, indem Sie diesen Befehl eingeben:ntpq -ps
Dieser Befehl zeigt die Liste der Server in der Synchronisationswarteschlange an, einschließlich Ihres NTP-Servers als Quelle.
Jetzt, wo wir den NTP-Server eingerichtet und die Clients synchronisiert haben, schauen wir uns die Datei ntp.conf (die sich unter /etc/ntp.conf befindet) noch einmal an. Diese enthält zusätzliche Konfigurationen, um eine robuste Synchronisation mit externen Quellen zu gewährleisten.
Markieren Sie den zuverlässigsten Server oder Serverpool mit der prefer-Direktive, die wir bereits verwendet haben. Zum Beispiel:
server 1.north-america.pool.ntp.org prefer
Die server-Direktive gibt einen bestimmten Server an, während pool verwendet werden kann, um einen Pool von Servern anzugeben. Vergessen Sie nicht die Zeile server 127.127.1.0 am Ende der Pool-Liste, die die Systemzeit verwendet, wenn die Verbindung verloren geht.
Stellen Sie sicher, dass die folgenden Zeilen in der ntp.conf enthalten sind:
restrict default kod notrap nomodify nopeer noquery
Der default-Befehl wendet diese Einstellungen als Standard für alle restrict-Befehle an:
kod (Kiss-o’-Death) begrenzt die Rate der Anfragen.
notrap blockiert die Annahme von Steuerbefehlen.
nomodify schränkt Befehle ein, die den Zustand des Servers ändern könnten.
nopeer verbietet die Synchronisation mit externen Hosts.
noquery blockiert Anfrageanforderungen.
Für IPv4 verwenden Sie -4 vor default, und für IPv6 verwenden Sie -6.
Hier ein Beispiel für die Verwendung einiger dieser Befehle. Die folgende Zeile ermöglicht die Synchronisation von Knoten in einem bestimmten Netzwerk, während sie Knoten daran hindert, Steuer- oder zustandsverändernde Befehle zu erhalten:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
Die folgenden Zeilen sind erforderlich, damit der Server mit sich selbst kommunizieren kann:
restrict 127.0.0.1
restrict ::1
Vergessen Sie nicht, den Server nach diesen Änderungen neu zu starten.
Um zu überprüfen, ob NTP korrekt funktioniert, verwenden Sie den Befehl ntpq -p. Bei richtiger Konfiguration sollte die Ausgabe eine Tabelle mit Spalten ähnlich der folgenden anzeigen:
In der ersten Spalte sehen Sie die Adresse des Synchronisationsservers, gefolgt von seinem übergeordneten Server, dem Stratum-Level (Spalte st) und dem Typ (Spalte t). Die nächsten drei Spalten zeigen Details zur letzten Synchronisationszeit, dem Synchronisationsintervall und dem Zuverlässigkeitsstatus (wobei 377 acht erfolgreiche Synchronisationsversuche mit diesem Server anzeigt). Die letzten beiden Spalten zeigen die Zeitdifferenz zwischen dem synchronisierten Server und dem Referenzserver sowie den Offset.
Achten Sie auf die Symbole in der ersten Spalte, die vor der IP-Adresse erscheinen:
Ein "+"-Symbol zeigt einen zuverlässigen Server zur Synchronisation an.
Ein "-" bedeutet das Gegenteil, und
Ein "*" zeigt den aktuellen Server an, der für die Synchronisation ausgewählt wurde. Gelegentlich erscheint ein "x", was bedeutet, dass der Server nicht verfügbar ist.
Um sicherzustellen, dass der Server die richtige Zeit verteilt, führen Sie den Befehl ntpdate von einem anderen System aus und geben Sie die IP-Adresse des NTP-Servers an, den Sie überprüfen möchten. Die Ausgabe sollte etwa so aussehen:
adjust time server (IP-Adresse hier) offset 0.012319 sec
Die Zahl stellt den Zeitversatz dar. Ein Versatz von etwa 0,01 Sekunden (12 Millisekunden) ist vollkommen akzeptabel.
Nun, da wir die Linux-Konfiguration abgeschlossen haben, sehen wir uns die Konfiguration des NTP-Protokolls unter Windows an.