NTP

Aus Foxwiki

topic kurze Beschreibung

Beschreibung

Das Network Time Protocol (NTP) ist ein Standard, um intelligente Endgeräte über das Internet mit einer Uhrzeit zu versorgen. Die Synchronisierung von Echtzeituhren in Computersystemen wird mit paketbasierten Kommunikationsnetzen umgesetzt. NTP kann mit beiden Verbindungsprotokollen der vierten Schicht des OSI-Modells arbeiten. Es ist nötig, damit eine zuverlässige Zeitangabe über Netzwerke mit variabler Paketlaufzeit gesendet werden kann.

Im allgemeinen Sprachgebrauch bezeichnet NTP sowohl das Protokoll als auch die Software-Referenzimplementierung desselben. Das Simple Network Time Protocol (SNTP) ist eine vereinfachte Version des NTP.

Installation

Anwendungen

Fehlerbehebung

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Siehe auch

Links

Projekt-Homepage

Weblinks

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5


Wikipedia

Fehler, Algorithmus und Genauigkeit

Die lokale Systemzeit einer Prozessorumgebung variiert mit verschiedenen typischen Fehlerquellen.

  • Dadurch treten mindestens zwei typische Fehler auf:
  • kurzzeitige Schwankungen des Zeitinkrements entlang der laufenden Uhrzeit
  • stabile lokale Abweichungen von einer gemeinsamen Systemzeit

Beide Zeitfehler werden mit verschiedenen Methoden kompensiert.

Die lokalen Abweichungen infolge der Latenzzeit der stochastisch bestimmten Übertragungswege werden durch Messverfahren der Paketumlaufzeit vom Server (Berkeley-Algorithmus) oder vom Client (Cristians-Algorithmus) kompensiert.

Die kurzzeitigen pseudo-stochastischen Abweichungen der lokalen Systemuhr können nur durch eine bessere weitere Systemuhr (Frequenznormal) und direkten Empfang von Satellitensignalen (GPS) oder von anderen Zeitnormalen (DCF77) kompensiert werden.

NTP benutzt für die interne Fehlerkompensation der Prozessorumgebung den Marzullo-Algorithmus (entwickelt von Keith Marzullo von der Universität San Diego in seiner Dissertation) und auch einen Algorithmus, um Byzantinische Fehler zu behandeln.

NTP unterstützt Schaltsekunden.

  • Durch die Betrachtung der Schaltsekunden im Protokoll kommt es dazu, dass mit jeder Schaltsekunde (welche jedoch selten vorkommen) eine neue Sekundenskala benutzt wird.
  • Für die Skala der Systemzeit wird jedoch für gewöhnlich die tatsächlich vergangene Zeit seit einem bestimmten Zeitpunkt benutzt, und Schaltsekunden kommen erst bei der Darstellung der Zeit ins Spiel.

NTPv4 kann die lokale Zeit eines Systems über das öffentliche Internet mit einer Genauigkeit von 10 Millisekunden halten, in lokalen Netzwerken sind unter idealen Bedingungen sogar Genauigkeiten von 200 Mikrosekunden und besser möglich.

  • Bei einem hinreichend stabilen lokalen Frequenznormal als Taktgeber (thermostatgesteuerter Quarzoszillator, Rubidium-Oszillator etc.) lässt sich unter Verwendung der Kernel-PLL (siehe oben) der Fehler zwischen Referenzzeitgeber und lokaler Uhr bis in die Größenordnung weniger Mikrosekunden reduzieren.

SNTP

Das Simple Network Time Protocol (SNTP) ist eine vereinfachte Version des NTP.

  • Ursprünglich als eigenständiger Standard beginnend mit RFC 1361 bis RFC 4330; ist es seit Juni 2010 in der NTP Version 4 integriert als kleines Unterkapitel im RFC 5905.

Der Aufbau des Protokolls ist mit dem von NTP identisch.

  • SNTP-Clients können damit die Zeit auch von NTP-Servern beziehen.
  • Der wesentliche Unterschied liegt in den verwendeten Algorithmen zur Zeitsynchronisation.
  • Während bei NTP die Zeitsynchronisation in der Regel mit mehreren Zeitservern erfolgt, wird bei SNTP nur ein Zeitserver verwendet.
  • SNTP verzichtet auch auf die Beeinflussung von Phase und Frequenz des lokalen Zeitgebers.[1] SNTP kann daher nicht dieselbe Genauigkeit wie NTP liefern.
  • Aufgrund der einfacheren Algorithmen benötigt SNTP weniger Rechenressourcen.[2]

Ältere Windows-Versionen wie Windows 2000 verwenden SNTP, um die Uhrzeit auf dem lokalen Computer aktuell zu halten.

  • Dies wird durch den Windows-Service W32Time übernommen.
  • In Windows XP und Windows Server 2003 wurde die Dynamic-Link-Library W32Time.dll überarbeitet, so dass nun NTP zur Zeitsynchronisation verwendet wird.

Da Microsoft das Verfahren zur Zeitsynchronisation erst mit Windows 2000 einführte, haben einige Softwarehersteller eigenständige Programme zur Zeitsynchronisation unter Windows entwickelt.

  • Moderne Authentifizierungssysteme (wie Kerberos), die in Windows 2000 und neueren Versionen verwendet werden, benötigen zur Erhöhung der Sicherheit Zeitstempel, daher ergibt sich auch hier ein Anwendungsfall für NTP.

Implementierung

Neben der Referenz-NTP-Software, die auf der NTP-Website für diverse Betriebssysteme erhältlich ist, bieten eine Reihe von Herstellern fertige Standalone-Lösungen an, die als NTP-Zeitquelle in Computernetzwerken jeder Größe Verwendung finden können.

Einige tausend NTP-Server haben einen NTP-Pool gebildet.

Alternativen

PTP

Das Precision Time Protocol (PTP) ist ein Netzwerkprotokoll, das die Synchronität der Uhrzeiteinstellungen mehrerer Geräte in einem Computernetzwerk bewirkt. Anders als beim Network Time Protocol (NTP) strebt PTP höhere Genauigkeit in lokal begrenzten Netzen an.

NTS

Network Time Security (NTS) ist ein Netzwerkprotokoll zur kryptographischen Absicherung von NTP.

Beispiele für öffentlich erreichbare NTP-Server, die NTS unterstützen, sind:[6]

<templatestyles src="column-multiple/styles.css" />

  • ptbtime1.ptb.de (Deutschland)[4]
  • ptbtime2.ptb.de (Deutschland)[4]
  • ptbtime3.ptb.de (Deutschland)[4]
  • europe.pool.ntp.org (Europa)[4]
  • time.cloudflare.com (global)[7]
  • nts.netnod.se (Schweden)[5]
  • ntp.3eck.net (Schweiz)[8]
  • ntp.trifence.ch (Schweiz)[9]
  • ntp.zeitgitter.net (Schweiz)[10]

OpenNTPD

Im Jahre 2004 präsentierte Henning Brauer die NTP Implementierung OpenNTPD, welche einen Fokus auf Sicherheit legt.

  • Das Protokoll ist kompatibel zu bestehenden NTP-Servern.
  • Ursprünglich ist es für OpenBSD geschrieben worden, ist jedoch mittlerweile auch als portable Version und als Paket in der Linux-Paketverwaltung verfügbar.
  • OpenNTPD steht in der Kritik, nicht dieselbe Genauigkeit zu bieten wie NTP.
  • Die Abweichungen können hierbei 50–200 ms betragen.[11]

Ntimed

Das NTPD-Programm dient als Zeitserver, Zeitclient und deckt viele weitere Funktionen ab.

  • Da der Quelltext der NTP-Referenzimplementierung mit über 300.000 Zeilen sehr umfangreich ist, fördert die Linux Foundation mit dem Projekt Ntimed von FreeBSD-Entwickler Poul-Henning Kamp eine Modularisierung.
  • Der Client-Quelltext umfasst ca. 3700 Zeilen.
  • Slave-Server, Refclocks und Protokolle wie PTP werden bei Interesse am Projekt ergänzt.[12]

NTPsec

NTPsec ist ein Fork des originalen NTPD-Projekts mit dem Ziel, das Programm durch verschiedene Maßnahmen sicherer zu machen.

  • So wurde die Codebasis aktuellen Standards angepasst und konnte u. a.
  • dadurch von 253k auf 62k Zeilen Quellcode reduziert werden.[13][14] Die erste stabile 1.0 Version wurde am 10. Oktober 2017 veröffentlicht.[15]

tlsdate

Mit gefälschten NTP-Antworten kann der Schutz des HTTP-Strict-Transport-Security-Protokolls (HSTS) von HTTPS umgangen werden.

  • Zudem werden NTP-Server mitunter für Reflection-Angriffe missbraucht, da NTP das verbindungslose UDP verwendet.
  • Wenn Angreifer Pakete mit gefälschter Absenderadresse an einen NTP-Server leiten, landet die Antwort beim Opfer.
  • Ist die Antwort größer als die Anfrage, kann man damit Denial-of-Service-Angriffe verstärken.
  • Diese und weitere Probleme umgeht das später entstandene TLS-Protokoll, da es ebenfalls Zeitangaben überträgt.
  • Mit dem von Jacob Appelbaum entwickelten Programm tlsdate übernimmt das TLS-Protokoll auch die Funktion des NTP-Protokolls.[16] Ein Nachteil von tlsdate ist seine recht große Ungenauigkeit von maximal ±1 Sekunde, zuzüglich der Netzwerklatenz.
  • Primär resultiert die relativ große Ungenauigkeit aus der bei TLS 1.2 bestehenden Zeitstempelauflösung von einer Sekunde.[17] Ab der TLS-Version 1.3 fällt die bisher über TLS übertragene Zeit weg.
  • tlsdate ist somit in der vorliegenden Version keine dauerhafte Problemlösung.[17]

chrony

Chrony ist eine eigenständige Implementierung von NTP und NTS und wird unter GPLv2 veröffentlicht.[18]

Normen und Standards

NTP ist als Request for Comments (RFC) standardisiert:

  • RFC 958 – Network Time Protocol (NTP) (1985, veraltet)
  • RFC 1059 – Network Time Protocol (Version 1) (1988, veraltet)
  • RFC 1119 – Network Time Protocol (Version 2) (1989, veraltet)
  • RFC 1305 – Network Time Protocol (Version 3) (1992, veraltet)
  • RFC 5905 – Network Time Protocol (Version 4) (2010) – abwärtskompatibel mit RFC 1305 für Version 3
    • Ergänzung RFC 7822 – Network Time Protocol Version 4 (NTPv4) Extension Fields (2016)
    • Ergänzung RFC 8573 – Message Authentication Code for the Network Time Protocol (2019)

Ergänzungen:

  • RFC 5906 – Network Time Protocol Version 4: Autokey Specification (2010)
  • RFC 5907 – Definitions of Managed Objects for Network Time Protocol Version 4 (NTPv4) (2010)
  • RFC 5908 – Network Time Protocol (NTP) Server Option for DHCPv6 (2010)
  • RFC 8915 – Network Time Security for the Network Time Protocol (2020)

Spezifische Anwendung-RFC:

  • RFC 2783 – PPS API (Hochpräzise Zeitsynchronisation bei Unix-Kerneln) (2000)

Literatur

Weblinks

Einzelnachweise