zeitserver_ntp
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| zeitserver_ntp [2023-12-14 16:49:38] – [timesyncd] manfred | zeitserver_ntp [2026-01-09 13:33:21] (aktuell) – manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Zeitserver NTP ====== | ||
| + | |||
| + | siehe auch: [[:: | ||
| + | |||
| + | Deutsche Zeitserver: | ||
| + | * **[[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * **[[https:// | ||
| + | |||
| + | |||
| + | ===== Ubuntu 22.04 ===== | ||
| + | |||
| + | rm -f / | ||
| + | apt purge ntp openntpd | ||
| + | apt install systemd-timesyncd | ||
| + | echo ' | ||
| + | timedatectl set-ntp 0 | ||
| + | timedatectl set-ntp 1 | ||
| + | journalctl --unit=systemd-timesyncd.service | ||
| + | timedatectl timesync-status | ||
| + | timedatectl status | ||
| + | tail / | ||
| + | |||
| + | Man kann auch die Zeit-Server der Physikalisch-technischen Bundesanstalt (PTB) verwenden: | ||
| + | ptbtime1.ptb.de | ||
| + | ptbtime2.ptb.de | ||
| + | ptbtime3.ptb.de | ||
| + | |||
| + | |||
| + | ===== openntpd ===== | ||
| + | |||
| + | Ubuntu 18.04.5 LTS | ||
| + | [root@linux ~]# apt install ntpstat ntpdate openntpd | ||
| + | [root@linux ~]# service openntpd start | ||
| + | |||
| + | <file bash / | ||
| + | server 0.de.pool.ntp.org | ||
| + | server 1.de.pool.ntp.org | ||
| + | server 2.de.pool.ntp.org | ||
| + | </ | ||
| + | |||
| + | > apt update ; apt install ntpstat ntpdate openntpd ; echo ' | ||
| + | |||
| + | |||
| + | ===== timesyncd ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | wenn '' | ||
| + | > dpkg -l | grep -Fi ntp | ||
| + | > apt purge ntp openntpd | ||
| + | > apt install systemd-timesyncd | ||
| + | |||
| + | <file bash / | ||
| + | NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org | ||
| + | FallbackNTP=ntp.ubuntu.com | ||
| + | RootDistanceMaxSec=5 | ||
| + | PollIntervalMinSec=32 | ||
| + | PollIntervalMaxSec=2048 | ||
| + | </ | ||
| + | |||
| + | Status: | ||
| + | > service systemd-timesyncd stop | ||
| + | > service systemd-timesyncd start | ||
| + | > service systemd-timesyncd status | ||
| + | ... | ||
| + | | ||
| + | ... | ||
| + | |||
| + | > systemctl restart systemd-timesyncd.service | ||
| + | > journalctl --unit=systemd-timesyncd.service | ||
| + | |||
| + | Über den folgenden Befehl kann der Status von timesyncd abgefragt werden: | ||
| + | > timedatectl status | ||
| + | |||
| + | Mit folgenden Befehlen kann der Dienst gestoppt und wieder gestartet werden: | ||
| + | > timedatectl set-ntp 0 # | ||
| + | > timedatectl set-ntp 1 # | ||
| + | |||
| + | Den gleichen Effekt erreicht man auch, wenn man über '' | ||
| + | |||
| + | sonstiges: | ||
| + | > timedatectl set-ntp false | ||
| + | > timedatectl set-time " | ||
| + | > timedatectl set-ntp true | ||
| + | | ||
| + | > journalctl --unit=systemd-timesyncd.service | ||
| + | | ||
| + | > timedatectl status | ||
| + | > timedatectl timesync-status | ||
| + | | ||
| + | > timedatectl show | ||
| + | > timedatectl show-timesync | ||
| + | |||
| + | |||
| + | **'' | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Dafür scheint [[https:// | ||
| + | |||
| + | |||
| + | ===== ntpd ===== | ||
| + | |||
| + | > vi / | ||
| + | ... | ||
| + | pool ptbtime1.ptb.de iburst | ||
| + | pool ptbtime2.ptb.de iburst | ||
| + | pool ptbtime3.ptb.de iburst | ||
| + | pool 0.de.pool.ntp.org iburst | ||
| + | pool 1.de.pool.ntp.org iburst | ||
| + | pool 2.de.pool.ntp.org iburst | ||
| + | pool 3.de.pool.ntp.org iburst | ||
| + | pool ntp1.t-online.de iburst | ||
| + | pool ntp0.freenet.de iburst | ||
| + | pool 0.europe.pool.ntp.org iburst | ||
| + | pool 1.europe.pool.ntp.org iburst | ||
| + | pool 2.europe.pool.ntp.org iburst | ||
| + | pool 3.europe.pool.ntp.org iburst | ||
| + | | ||
| + | > service ntpd restart | ||
| + | > ntpq -pn | ||
| + | | ||
| + | ============================================================================== | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | > ntpdc -c sysinfo | ||
| + | |||
| + | auf Ubuntu die Zeitzone einstellen: | ||
| + | dpkg-reconfigure tzdata | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Um die System-Uhr immer genau zu haben, braucht man jemanden, der sie immer im Auge hat und ggf. korrigiert. Dieser Jemand ist meistens das Programm //NTP// (Network Time Protocol). | ||
| + | |||
| + | detailierte Statusabfrage: | ||
| + | # echo sysinfo | ntpdc | ||
| + | # ntpdc -4c sysinfo | ||
| + | system peer: zeitserver.net | ||
| + | system peer mode: | ||
| + | leap indicator: | ||
| + | stratum: | ||
| + | precision: | ||
| + | root distance: | ||
| + | root dispersion: | ||
| + | reference ID: | ||
| + | reference time: | ||
| + | system flags: | ||
| + | jitter: | ||
| + | stability: | ||
| + | broadcastdelay: | ||
| + | authdelay: | ||
| + | |||
| + | |||
| + | ===== locale Zeitzone einstellen (MET) ===== | ||
| + | |||
| + | rm -f / | ||
| + | ln -s / | ||
| + | |||
| + | |||
| + | ===== RTC vs. Soft-Clock ==== | ||
| + | |||
| + | Die //RTC// ist die Uhr auf der Hauptplatine, | ||
| + | das Betriebssystem dagegen verwendet eine eigene Uhr, | ||
| + | die nur als Programm (Bestandteil der Betriebssystemkern' | ||
| + | |||
| + | Beide Uhren können auf eine unterschiedliche Zeit gestellt sein. | ||
| + | |||
| + | |||
| + | ==== RTC ==== | ||
| + | |||
| + | Die //RTC// (Hardware-Uhr) kann mit dem Befehl " | ||
| + | |||
| + | Diese Kommandos wurden auf Linux Ubuntu 10.04 getestet. | ||
| + | |||
| + | RTC-Zeit anzeigen: | ||
| + | > hwclock -r | ||
| + | |||
| + | RTC auf die Zeit der Soft-Clock stellen (da die Soft-Clock ja vom NTP sehr genau gestellt werden kann): | ||
| + | > hwclock -w | ||
| + | |||
| + | Soft-Clock auf die Zeit der RTC stellen (die RTC kann man ja im BIOS selbst stellen): | ||
| + | > hwclock -f | ||
| + | |||
| + | Linux interpretiert die RTC-Zeit als " | ||
| + | > hwclock -u | ||
| + | |||
| + | Linux interpretiert die RTC-Zeit als " | ||
| + | > hwclock -l | ||
| + | |||
| + | |||
| + | === Dual Boot: Windows 10 und Linux - falsche Uhrzeit === | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | < | ||
| + | root@ubuntu2004: | ||
| + | lrwxrwxrwx 1 root root 33 Jul 28 20:25 / | ||
| + | |||
| + | root@ubuntu2004: | ||
| + | Local time: Mi 2021-07-28 20:42:25 CEST | ||
| + | | ||
| + | RTC time: Mi 2021-07-28 18: | ||
| + | Time zone: Europe/ | ||
| + | System clock synchronized: | ||
| + | NTP service: active | ||
| + | RTC in local TZ: no | ||
| + | |||
| + | root@ubuntu2004: | ||
| + | |||
| + | root@ubuntu2004: | ||
| + | Local time: Mi 2021-07-28 20:43:55 CEST | ||
| + | | ||
| + | RTC time: Mi 2021-07-28 18: | ||
| + | Time zone: Europe/ | ||
| + | System clock synchronized: | ||
| + | NTP service: active | ||
| + | RTC in local TZ: yes | ||
| + | |||
| + | Warning: The system is configured to read the RTC time in the local time zone. | ||
| + | This mode cannot be fully supported. It will create various problems | ||
| + | with time zone changes and daylight saving time adjustments. The RTC | ||
| + | time is never updated, it relies on external facilities to maintain it. | ||
| + | If at all possible, use RTC in UTC by calling | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | //Besser, man stellt Windows so um, dass es die RTC in gleicher Weise behandelt wie Linux - also das die RTC als UTC interpretiert wird.// | ||
| + | |||
| + | Wenn man in Windows die folgende Datei runterlädt und mit einem Doppelklick (als Administrator) ausführt, dann behandelt Windows die RTC-Zeit als UTC-Zeit. | ||
| + | <code properties RealTimeIsUniversal.reg> | ||
| + | Windows Registry Editor Version 5.00 | ||
| + | |||
| + | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Soft-Clock ==== | ||
| + | |||
| + | Die // | ||
| + | |||
| + | Diese Kommandos wurden 2004 auf FreeBSD getestet. | ||
| + | |||
| + | Datum im Euro-Format (separate Angabe) | ||
| + | # date +%Y-%m-%d | ||
| + | oder | ||
| + | # date +%F | ||
| + | # 2004-05-10 | ||
| + | |||
| + | Datum und Uhrzeit | ||
| + | # date '+%F um %T' | ||
| + | # 2004-05-10 um 15:41:28 | ||
| + | |||
| + | Datum im Euro-Format (kompackter Parameter) | ||
| + | # date +%F | ||
| + | # 2004-05-10 | ||
| + | |||
| + | Datum mit Monatsangabe als Wort | ||
| + | # date +%v | ||
| + | # 10-Mai-2004 | ||
| + | |||
| + | Monat als Wort | ||
| + | # date +%h | ||
| + | # Mai | ||
| + | |||
| + | Wochentag | ||
| + | # date +%a | ||
| + | # Mo | ||
| + | |||
| + | Urzeit | ||
| + | # date +%H:%M:%S | ||
| + | oder | ||
| + | # date +%T | ||
| + | # 00:50:27 | ||
| + | | ||
| + | Zeitzonendifferenz zu Greamwitch | ||
| + | # date +%z | ||
| + | # +0200 | ||
| + | |||
| + | Zeitzone | ||
| + | # date +%Z | ||
| + | # MEST | ||
| + | |||
| + | Datum+Uhrzeit aus einer Maschine auslesen (der 2004-05-10 um 01:02:33 Uhr) | ||
| + | # date " | ||
| + | # 200405100102.33 | ||
| + | |||
| + | Datum+Uhrzeit auf einer anderen Maschine einstellen | ||
| + | # date 200405100102.33 | ||
| + | |||
| + | Uhrzeit sekundengenau einstellen (01:02:33 Uhr) | ||
| + | # date 0102.33 | ||
| + | |||
| + | Uhrzeit einstellen (01:02 Uhr) | ||
| + | # date 0102 | ||
| + | |||
| + | |||
| + | ===== NTP ===== | ||
| + | |||
| + | |||
| + | ==== installieren ==== | ||
| + | |||
| + | In Ubuntu wird das dazugehörige Paket so installiert: | ||
| + | |||
| + | # aptitude install ntp | ||
| + | |||
| + | |||
| + | ==== konfigurieren ===== | ||
| + | |||
| + | Jetzt muss das Programm noch richtig konfiguriert werden. | ||
| + | |||
| + | Eigentlich soll es bei Ubuntu ja nicht nötig sein, da es schon vorkonfiguriert wurde, nur wird diese // | ||
| + | Deshalb kann es nichts schaden, wenn man sich einen lokalen Pool einträgt um auch einen lokalen Zeitserver zugewiesen zu bekommen. | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | # FreeBSD | ||
| + | #driftfile / | ||
| + | # | ||
| + | # Ubuntu | ||
| + | driftfile / | ||
| + | # | ||
| + | # Alle Betriebssysteme | ||
| + | server 0.de.pool.ntp.org | ||
| + | server 1.de.pool.ntp.org | ||
| + | server 2.de.pool.ntp.org | ||
| + | server 3.de.pool.ntp.org | ||
| + | |||
| + | Der Pool // | ||
| + | |||
| + | # ntpq -np | ||
| + | | ||
| + | | ||
| + | ============================================================================== | ||
| + | | ||
| + | |||
| + | |||
| + | Leider hat //NTP// eine große Schwäche! | ||
| + | Ist der Zeitunterschied zwischen lokaler Uhr und Zeitserver zu groß (in der Größenordnung von mehr als 15 Sekunden), dann tut der NTPD nichts mehr! | ||
| + | |||
| + | |||
| + | === Ausnahmeregelung === | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Es gibt bei neueren NTPD's weitere Möglichkeiten, | ||
| + | |||
| + | //tinker// muss die aller erste Option sein, die // | ||
| + | # vi / | ||
| + | tinker panic 0 | ||
| + | tinker step 0 | ||
| + | server ptbtime1.ptb.de minpoll 4 maxpoll 4 | ||
| + | server ptbtime2.ptb.de minpoll 4 maxpoll 4 | ||
| + | server ptbtime3.ptb.de minpoll 4 maxpoll 4 | ||
| + | server 0.de.pool.ntp.org minpoll 4 maxpoll 4 | ||
| + | server 1.de.pool.ntp.org minpoll 4 maxpoll 4 | ||
| + | server 2.de.pool.ntp.org minpoll 4 maxpoll 4 | ||
| + | server 3.de.pool.ntp.org minpoll 4 maxpoll 4 | ||
| + | | ||
| + | # / | ||
| + | # ntpdate 0.de.pool.ntp.org | ||
| + | # hwclock --systohc | ||
| + | # / | ||
| + | |||
| + | Sollte das nicht helfen, dann kann man sich noch die Optionen **-g**, **-q** und **-x** für den //ntpd// ansehen (man ntpd). | ||
| + | |||
| + | In dem Fall müsste man, bei Ubuntu zum Beispiel, in der datei /// | ||
| + | Das könnte man zum Beispiel wie folgt machen: | ||
| + | |||
| + | Man öffnet die Datei /// | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | Dann geht man mit dem Cursor an die Stelle, an der die Variablen definiert werden: | ||
| + | |||
| + | NAME=ntp | ||
| + | DAEMON=/ | ||
| + | PIDFILE=/ | ||
| + | |||
| + | Dann wird der Variablenbereich um die Variable **NTPD_OPTS** erweitert: | ||
| + | |||
| + | NAME=ntp | ||
| + | DAEMON=/ | ||
| + | PIDFILE=/ | ||
| + | NTPD_OPTS=" | ||
| + | |||
| + | Zum Schluss muss der Dienst noch neu gestartet werden: | ||
| + | |||
| + | # / | ||
| + | # ntpdate 0.de.pool.ntp.org | ||
| + | # hwclock --systohc | ||
| + | # / | ||
| + | |||
| + | ==== andere ==== | ||
| + | |||
| + | Das obige Beispiel wurde auf einem Ubuntu-Linux durchgeführt, | ||
| + | Bei SUSE zum Beispiel heißt es nicht //ntp// sondern //xntpd// und bei FreeBSD liegt es in einem anderen Pfad und heißt //ntpd//. | ||
| + | |||
| + | FreeBSD: | ||
| + | |||
| + | # / | ||
| + | |||
| + | |||
| + | SUSE: | ||
| + | |||
| + | # / | ||
| + | |||
| + | |||
| + | ===== OpenNTPD ===== | ||
| + | |||
| + | Der // | ||
| + | |||
| + | Wenn es um Sicherheit geht, dann ist es man über jeden Port, der nicht offen sein muss froh! | ||
| + | |||
| + | In dieser Hinsicht ist der klassische NTPD aber sehr unflexibel. | ||
| + | |||
| + | Nur der openNTPD bietet die Möglichkeit, | ||
| + | |||
| + | |||
| + | ==== Installation/ | ||
| + | |||
| + | Zur Zeit gibt es noch einen Bug, deshalb sind diese beiden Befehle vor der Installation nötig: | ||
| + | # dpkg --purge ntp | ||
| + | # invoke-rc.d apparmor restart | ||
| + | |||
| + | Jetzt geht es los: | ||
| + | # aptitude update && aptitude install openntpd | ||
| + | # / | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | braucht man eigentlich nichts zu ändern: | ||
| + | server 0.debian.pool.ntp.org | ||
| + | server 1.debian.pool.ntp.org | ||
| + | server 2.debian.pool.ntp.org | ||
| + | server 3.debian.pool.ntp.org | ||
| + | |||
| + | An sonsten reicht hier ein einziger Eintrag: | ||
| + | server pool.ntp.org | ||
| + | |||
| + | |||
| + | ==== Kontrolle ==== | ||
| + | |||
| + | Allerdings gibt es beim // | ||
| + | |||
| + | Von älteren NTP-Versionen hat der //ntpq// noch beim // | ||
| + | der //ntpq// von neueren Versionen funktioniert nicht mehr. | ||
| + | |||
| + | So kann man nur noch die Meldungen im //syslog// und die Ausgaben von //ntpdate// als Informationsquellen zum Status von // | ||
| + | |||
| + | Man kann hier nur die lokale Uhrzeit mit der Zeit auf einem Zeitserver vergleichen: | ||
| + | |||
| + | # ntpdate -q pool.ntp.org | ||
| + | oder | ||
| + | # ntpdate -q ntp.ubuntu.com | ||
| + | oder | ||
| + | # ntpdate -q 0.debian.pool.ntp.org | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== NTP-Server ==== | ||
| + | |||
| + | Will man auch einen Server betreiben, kann man ihn hier wie folgt aktivieren, | ||
| + | dazu braucht man nur diese Zeile einzutragen: | ||
| + | |||
| + | listen on * | ||
| + | |||
| + | Es ist aber hier auch möglich (das kann der Standard-NTP auch nicht), | ||
| + | dass man den // | ||
| + | wie zum Beispiel " | ||
| + | |||
| + | listen on 127.0.0.1 | ||
| + | listen on ::1 | ||
| + | |||
| + | |||
| + | ===== zyklischer NTP-Restart ===== | ||
| + | |||
| + | |||
| + | ==== das NTP - Problem ==== | ||
| + | |||
| + | Der NTPD kann die Zeit nur in recht kleinen Schritten korrigieren. Diese Schritte sind so klein, dass eine Differenz von 300 Sekunden erst nach mehr als einer Woche korrigiert wäre! | ||
| + | |||
| + | Da manche RTCs eine so starke Ungenauigkeit haben, dass der NTPD diese nicht korrigieren kann und deshalb die Systemzeit immer wieder aus der Synkronität läuft, wird der NTPD immer sterben, wenn eine Zeitdifferenz von 15 Sekunden erreicht wurde. | ||
| + | |||
| + | Bei VMWare ist noch zu beachten, dass die Einstellung " | ||
| + | Sonst laufen //NTP// und //RTC// schon nach weniger als 30 Minuten so stark auseinander, | ||
| + | |||
| + | |||
| + | ==== Holzhammermethode ==== | ||
| + | |||
| + | Um die Zeit in regelmäßigen Abständen (z.B. immer um 00:00 Uhr) auf die harte Tour zu syncronisieren, | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | Hier stellen wir die täglichen Aufgaben von 6:25 auf 0:00 Uhr: | ||
| + | |||
| + | ... | ||
| + | 00 0 * * * | ||
| + | ... | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | Und hier legen wir eine weitere tägliche Aufgabe an: | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | SHELL=/ | ||
| + | PATH=/ | ||
| + | | ||
| + | if [ -e / | ||
| + | / | ||
| + | elif [ -e / | ||
| + | / | ||
| + | elif [ -e / | ||
| + | / | ||
| + | fi | ||
| + | | ||
| + | cat / | ||
| + | do | ||
| + | ntpdate ${NTPSERVER} | ||
| + | done | ||
| + | | ||
| + | hwclock --systohc | ||
| + | | ||
| + | if [ -e / | ||
| + | / | ||
| + | elif [ -e / | ||
| + | / | ||
| + | elif [ -e / | ||
| + | / | ||
| + | fi | ||
| + | |||
| + | # chmod 0755 / | ||
| + | |||
| + | |||
| + | ===== SystemD-TimeSyncD ===== | ||
| + | |||
| + | > vi / | ||
| + | [Time] | ||
| + | NTP=10.144.119.140 | ||
| + | FallbackNTP=ntp.ubuntu.com | ||
| + | RootDistanceMaxSec=5 | ||
| + | PollIntervalMinSec=32 | ||
| + | PollIntervalMaxSec=2048 | ||
| + | | ||
| + | > systemctl status systemd-timesyncd | ||
| + | ... | ||
| + | | ||
| + | ... | ||
| + | | ||
| + | > service systemd-timesyncd restart | ||
| + | > service systemd-timesyncd status | ||
| + | |||
| + | > timedatectl set-ntp 0 # | ||
| + | > timedatectl set-ntp 1 #aktivieren | ||
| + | |||
