Raspberry Pi mit NTP

Raspberry Pi mit NTP

Zusammenfassung

Nach diesem Tutorial synchronisiert sich die Systemzeit des Raspberry Pi automatisch mit einem beliebigen Zeitserver im Internet oder einem lokalen Zeitserver im Heimnetz wie z. B. der FritzBox.

Hintergrund

Da ein Raspberry Pi aus Kostengründen keine eigene Real Time Clock (RTC) besitzt, wie man es von herkömmlichen PCs kennt, synchronisiert Raspbian die Zeit mit Internetservern und speichert die jeweils aktuelle Zeit in einer Datei. Ist der Rasberry Pi mehrere Stunden vom Strom getrennt (z. B. bei einem Umzug, Stromausfall o. Ä.) versucht er eine Zeitsynchronisation mit Internetservern. Ist der Pi jedoch für das Internet gesperrt oder das Internet aus anderen Gründen nicht erreichbar, lädt er die zuletzt bekannte Zeit aus dieser Datei und zählt die Zeit dort weiter. Dadurch kommt es zu einer Differenz zwischen der Systemzeit und der tatsächlichen Zeit. Dies mag bei einigen Anwendungen kein Problem, in anderen Fällen jedoch unerwünscht sein. So führt dies dazu, dass z. B. der PiHole nicht mehr funktioniert und folglich alle Endgeräte nicht mehr auf das Internet zugreifen können.

Für solche Fälle gibt es die Möglichkeit die Systemzeit mit einem lokalen Zeitserver im Heimnetzwerk zu synchronisieren. Die FritzBox kann hierfür genutzt werden. Diese Funktion ist standardmäßig eingeschaltet. Falls nicht, findest du die entsprechende Einstellung in der Oberfläche unter:

Heimnetz > Netzwerk > Netzwerkeinstellungen > Zeitsynchronisation

Einrichtung als NTP-Client

Der Raspberry Pi muss dafür als NTP-Client eingerichtet werden. Dafür installieren wir zunächst das NTP-Paket.

sudo apt-get install ntp

Anschließend schalten wir die aktuelle Zeitsynchronisation zunächst folgendermaßen aus. Es sollte neben der Verwendung von ntp kein weiterer Zeitabgleich stattfinden.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
​sudo /etc/init.d/ntp stop
​sudo /etc/init.d/ntp start

Nun öffnen wir die Konfigurationsdatei.

sudo nano /etc/ntp.conf

Dort kommentierst du die Standardserver mit # aus und fügst die IP deines eigenen Servers ein. Bei der FritzBox ist dies häufig: 192.168.178.1. An dieser Stelle können natürlich auch beliebige Zeitserver im Internet eingetragen werden, sollte dies in deinem Fall notwendig sein.

#/etc/ntp.conf, configuration for ntpd

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# IP adress of my FritzBox to get local time. Some Users said that they have to add iburst behind the IP address like in the following line. Give it a try if it does not work with my solution.
# server 192.168.178.1 iburst
server 192.168.178.1

# pool.ntp.org maps to more than 300 low-stratum NTP servers.
# Your server will pick a different set every time it starts up.
# *** Please consider joining the pool! ***
# *** ***
# 0.cz.pool.ntp.org iburst
# 1.cz.pool.ntp.org iburst
# 2.cz.pool.ntp.org iburst
# 3.cz.pool.ntp.org iburst
...

Speichere und schließe die Datei mit [STRG+X], bestätige mit [Y] und dann mit [Enter]. Anschließend muss der ntp Dienst neugestartet werden.

​​sudo /etc/init.d/ntp restart

Kontrolle der Synchronisation

Mit folgendem Befehl kann die Zeitsynchronisation dann ausgegeben und kontrolliert werden. Sollte dabei der Fehler No Association IDs zurückgegeben werden, hilft häufig ein Neustart des gesamten Systems.

sudo ntpq -pn

Du erhältst dann etwa folgende Ausgabe. Die Werte werden für eine bessere Verständlichkeit unten kurz erläutert.

    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
192.168.178.1    195.113.144.238  2 u   26   64    1   58.571    0.797  68.634

remote
IP-Adresse des NTP-Servers. Dies sollte der IP-Adresse entsprechen, die du oben in der Konfigurationsdatei eingetragen hast, in unserem Fall 192.168.178.1.

refid
IP-Adresse des Servers, der zur Zeitsynchronisation vom ntp-Server genutzt wird.

st (stratum)
Dieser Wert steht für die Genauigkeit der Zeit und wird in Werten von 0 bis 15 angegeben. Wenn hier eine 16 auftaucht, bedeutet dies, dass der ntp-Server nicht vertrauenswürdig ist. Die Atomuhr hätte hier einen Wert von 0 (beste Genauigkeit), ein Computer hat in der Regel den Wert 1, in unserem Fall liegt der Wert bei 2.

ST 0 – Ist die Zeitreferenz selbst
ST 1 – Ist der NTP-Server, der direkt die Referenz abfragt
ST 2 – Ist der NTP-Server, der einen ST1-Server abfragt
ST 3 – Ist der NTP-Server, der einen ST2-Server abfragt

when
Zeigt die vergangene Zeit in Sekunden seit der letzten Synchronisation an.

poll
Zeitlicher Abstand in Sekunden zwischen zwei Anfragen an den ntp-Server.

reach
Anzahl erfolgreicher Anfragen.

delay
Verzögerung zwischen Anfrage und Antwort des ntp-Servers.

offset
Zeitdifferenz zwischen der Systemzeit (Raspberry Pi) und dem Zeitserver (FritzBox) in Millisekunden.

jitter
Ist der zeitliche Unterschied in Millisekunden zwischen zwei Anfragen.

Stimmt die IP-Adresse und werden unter reach Werte > 0 angezeigt, hat die Einrichtung funktioniert. Der Raspberry Pi erhält fortan die Systemzeit aus dem Heimnetzwerk.

Einrichtung als NTP-Server

Nachdem der Raspberry Pi die Zeit mit einem Router oder einem Server im Internet synchronisiert hat, kannst du ihn als NTP-Server im Netzwerk zur Verfügung stellen. So können andere Geräte im Netzwerk ihre Systemzeit mit dem Raspberry Pi synchronisieren. Solltest du bereits deinen Router als Zeitserver bereitstellen, ist dies mit dem Raspberry Pi natürlich nicht notwendig. Dazu öffnen wir wieder das Konfigurationsfile des NTP daemon und fügen folgende Zeilen weiter unten in der Datei ein.

Die Netzwerk IP-Adresse 192.168.178.X muss dabei in beiden Zeilen an deinen Adressraum angepasst werden. Die Zeile mit 224.0.1.1 sollte hingegen nicht geändert werden.

...
# Clients from this subnet have unlimited access,
# but only if cryptographically authenticated
restrict 192.168.178.0 mask 255.255.255.0

# If you want to provide time to your local subnet, change the next line.
broadcast 192.168.178.255
broadcast 224.0.1.1

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

Speichere und schließe die Datei mit [STRG+X], bestätige mit [Y] und dann mit [Enter]. Anschließend starten wir den ntp Dienst neu.

​​sudo /etc/init.d/ntp restart

Danach kannst du Endgeräte die Systemzeit mit dem Raspberry Pi abgleichen lassen. Trage dazu einfach die IP-Adresse des Pi als Server für die Systemzeitsynchronisierung des Betriebssystems ein.

themaster

Verwandte Beiträge

Android: Apps löschen

Android: Apps löschen

Android: Apps deaktivieren

Android: Apps deaktivieren

Raspberry Pi: Universeller Audio-Empfänger für Musikanlagen

Raspberry Pi: Universeller Audio-Empfänger für Musikanlagen

Raspberry Pi: SenseHat

Raspberry Pi: SenseHat

11 Comments

  1. Hi,
    danke für den hilfreichen Artikel.
    Leider kann ich nur berichten, dass diese Konfiguration nicht funktioniert. Hänge schon
    seit mehreren Wochen an meinem NTP-Netzwerk und schaffe es nicht, dass der Server die Zeit an weitere Teilnehmer des Netzes weiterleitet.
    Habe auch „iburst“ und „server“ benutzt, jedoch ohne Erfolg. Hast du da noch einige Tipps oder kennst das Problem sogar selbst?

    Viele Grüße

    • Hallo
      Die Konfiguration mit „server“ und „iburst“ bezieht sich nur auf die Konfiguration als Client, spricht, dass der Pi die Systemzeit von dem lokalen Router bezieht. Für die Konfiguration als Server für weitere Geräte im Netzwerk musst du die Konfiguration weiter unten in meinem Artikel für die Servereinrichtung durchführen.

      Beste Grüße

  2. Danke für die kurze und knackige Anleitung 🙂

    Aber die Beschreibung zu „Stratum (ST)“ ist falsch. Der Wert gibt nicht die Qualität des Zeitservers an, sondern der „wievielte Platz“ hinter der Zeitreferenz er ist:

    ST 0 – Ist die Zeitreferenz selbst
    ST 1 – Ist der NTP-Server, der direkt die Referenz abfragt
    ST 2 – Ist der NTP-Server, der einen ST1-Server abfragt
    ST 3 – Ist der NTP-Server, der einen ST2-Server abfragt

    • Hallo Thomas
      Meine Beschreibung ist nicht falsch. Durch die Angabe des Platzes wird auch die Qualität der Zeit angegeben, da mit jeder Serverstufe die Zeit auch etwas ungenauer wird. Allerdings ist das vielleicht missverständlich bei mir ausgedrückt. Daher ergänze ich die Erklärung mit deiner Auflistung :).

      Beste Grüße

    • Hallo Marcell
      Das ist interessant und habe ich bisher noch nirgendwo als Einstellung gesehen. Trotzdem ist das vielleicht für einige Leser relevant. Welches Betriebssystem nutzt du denn?

      Beste Grüße
      Philipp

      • Funktioniert auch bei nur mit iburst hinter meiner Server-IP

        Des Weiteren ist der Offset mit 65000 noch sehr hoch und die Zeiten differieren deswegen sehr stark.

        Mein NTP-Server arbeitet auf Windows 10 Systemen.

  3. Hallo Themaster,
    vielen Dank für diese hilfreiche Anleitung.
    Ich habe seit 2 Tagen versucht, dieses Problem mit hilfe diverser Foren/Artikel zu beheben.
    Leider ohne Erfolg.
    Heute hat es dank Ihrem detailierten, und ausführlichem Artikel funktioniert.
    Danke 🙂

  4. Hallo,

    vielen Dank für diese hilfreiche Anleitung.

    Damit die Konfiguration jedoch auf meinem Raspberry Pi funktionierte, musste ich die IP noch mit dem Statement „server“ ergänzen.

    Um dein Beispiel zu verwenden:

    # IP address of my FritzBox to get local time
    server 192.168.178.1

    Viele Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

18 − zehn =

TIPP: Jazz CD J’s SEVEN

Lust auf JAZZ? Dann hört in die CD von Komponist und Posaunist Jonathan Strieder rein. Jonathan hat mit seiner Band J’s Seven ein eigenes Album aufgenommen und veröffentlicht. Tongariro heißt es und es klingt ganz fantastisch.

Zur CD: [Link]

Besucht Jonathan Strieder auch gerne auf seiner Webseite.

Über Mich

Mein Name ist Philipp und ich beschäftige mich gerne mit Homeprojekten im Hardware- und Softwarebereich. Ich stelle dabei immer wieder fest, dass es im Internet viele unvollständige  Tutorials gibt. Daher bin ich dazu übergegangen, meine Projekte in eigenen Anleitungen festzuhalten. Diese werde ich hier möglichst verständlich und mit dem nötigen Hintergrundwissen aufbereiten. Vielleicht kann ich dabei den entscheidenden Hinweis liefern, der in vielen anderen Tutorials fehlt.

Mein Ziel ist es, dass jeder mit den Tutorials zurecht kommt und alle notwendigen Informationen erhält, um es nachmachen zu können.

Artikelreihen

Tutorials abonnieren


Unterstütze Uns

Wenn du uns unterstützen möchtest und genau wie wir einen werbefreien Blog bevorzugst, freuen wir uns über eine kleine Kaffee-Spende :).

IBAN: DE51 1203 0000 1067 7545 54
oder
PayPal Spendenlink: