Windows

Befindet sich der Windows Server in einer AD-Domäne erfolgt die Zeitsynchronisation automatisch nach der Domänen-Hierarchie. D.h. ein normaler Client/Server bezieht die Zeit von einem beliebigen Domaincontroller. Die Domaincontroller selbst beziehen die Zeit von dem DC der die PDC-Emulator Rolle hat.

Welcher das ist kann z.B. dem nachfolgenden Befehl ermittelt werden.

Get-ADDomain | Select-Object PDCEmulator

Für die Zeit in einer ActiveDirectory Domäne ist also vor allem die Konfiguration am DC mit der PDC-Emulator Rolle entscheidend.

Konfiguration: PDC-Emulator oder Nicht-Domänenmitglieder

w32tm /config /update /manualpeerlist:"ptbtime1.ptb.de ptbtime2.ptb.de ptbtime3.ptb.de" /syncfromflags:MANUAL

Warnung

Selbst wenn keine Synchronisation des DCs mit einer externen Quelle oder aber über eine lokal angeschlossene Funkuhr konfiguriert wurde, so sollte man die Konfiguration des PDC-Emulators genauer prüfen. Ggf. sollte der PDC-Emulator dann als verlässliche (reliable) Zeitquelle markiert werden. Da sich sonst ggf. andere Systeme nicht wie gewünscht mit dem Server synchronisieren.

Mehr Details sind in der Windows Server Dokumentation beschrieben.

Konfiguration: Domänenmitglieder

An allen anderen Domänenmitgliedern sollte die Zeitsynchronisation auf den Standardwerten belassen werden.

w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time

Konfig prüfen

aktuelle Zeitquelle und Status anzeigen:

[dc1]: PS C:\Users\dp\Documents> w32tm /query /status /verbose
Leap Indicator: 0(no warning)
Stratum: 2 (secondary reference - syncd by (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0161973s
Root Dispersion: 3.7661822s
ReferenceId: 0xC0356767 (source IP:  192.53.103.103)
Last Successful Sync Time: 24.01.2022 22:43:27
Source: ptbtime3.ptb.de
Poll Interval: 10 (1024s)

Phase Offset: -0.0000016s
ClockRate: 0.0156247s
State Machine: 2 (Sync)
Time Source Flags: 0 (None)
Server Role: 64 (Time Service)
Last Sync Error: 0 (The command completed successfully.)
Time since Last Good Sync Time: 142.9479126s

alle Quellen (Peers) anzeigen lassen:

[dc1]: PS C:\Users\dp\Documents> w32tm /query /peers
#Peers: 3

Peer: ptbtime1.ptb.de
State: Active
Time Remaining: 677.1841485s
Mode: 1 (Symmetric Active)
Stratum: 1 (primary reference - syncd by radio clock)
PeerPoll Interval: 15 (32768s)
HostPoll Interval: 10 (1024s)

Peer: ptbtime2.ptb.de
State: Active
Time Remaining: 677.1921965s
Mode: 1 (Symmetric Active)
Stratum: 1 (primary reference - syncd by radio clock)
PeerPoll Interval: 15 (32768s)
HostPoll Interval: 10 (1024s)

Peer: ptbtime3.ptb.de
State: Active
Time Remaining: 677.2108465s
Mode: 1 (Symmetric Active)
Stratum: 1 (primary reference - syncd by radio clock)
PeerPoll Interval: 15 (32768s)
HostPoll Interval: 10 (1024s)

Linux

Wie immer gibt es mehrere Lösungen um die Zeit zu synchronisieren.

Debian / Ubuntu & systemd-timesyncd

Eine eigentlich recht einfache und komfortable Möglichkeit ist die in systemd integrierte Zeitsynchronisation zu nutzen.

Die zu verwendenden NTP Server werden in der Datei /etc/systemd/timesyncd.conf konfiguriert.

# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
NTP=ptbtime1.ptb.de ptbtime2.ptb.de ptbtime3.ptb.de
FallbackNTP=0.de.pool.ntp.org

Aktiviert wird der NTP Sync mit timedatectl set-ntp true, außerdem muss natürlich der entsprechende systemd Service laufen. systemctl status systemd-timesyncd.service

Leider sind die Möglichkeiten zum abfragen mit timedatectl je nach systemd Version doch recht eingeschränkt.

Die einfachste Form der Abfrage (wird die Uhr überhaupt synchronisiert) kann mit timedatectl status abgefragt werden.

root@ubuntu1:~# timedatectl status
                      Local time: Mon 2022-01-24 23:18:26 CET
                  Universal time: Mon 2022-01-24 22:18:26 UTC
                        RTC time: Mon 2022-01-24 22:18:26
                       Time zone: Europe/Berlin (CET, +0100)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Die detaillierte Ausgabe ist erst mit neueren systemd Versionen verfügbar.

root@fhem:~# timedatectl timesync-status
       Server: ptbtime1.ptb.de (192.53.103.108)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 1
    Reference: PTB
    Precision: 1us (-25)
Root distance: 22us (max: 5s)
       Offset: -70us
        Delay: 21.623ms
       Jitter: 2.052ms
 Packet count: 3492
    Frequency: +11.630ppm

Debian / Ubuntu & ntpd

Alternativ kann auch der ntpd genutzt werden. Die Konfiguration erfolgt in der Datei /etc/ntp.conf

...
# Specify one or more NTP servers.

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
server ptbtime1.ptb.de iburst
server ptbtime2.ptb.de iburst
server ptbtime3.ptb.de iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com
...

Nachdem die Konfiguration angepasst wurde ist ein Neustart des ntpd notwendig: systemctl restart ntp

Die Funktionsweise kann mit ntpq geprüft werden. Im einfachsten Fall lässt man sich hierzu die ntp Peers anzeigen

root@mon1:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
*ptbtime1.ptb.de .PTB.            1 u   22   64    3   21.373   -0.261   1.642
+ptbtime2.ptb.de .PTB.            1 u   18   64    3   19.436   -0.950   2.573
+ptbtime3.ptb.de .PTB.            1 u   18   64    3   20.224   -1.315   2.054
 chilipepper.can 17.253.34.123    2 u   17   64    3   34.062    5.128   0.175
 alphyn.canonica 17.253.34.253    2 u   21   64    3  100.181    0.764   0.473
 pugot.canonical 17.253.108.125   2 u   16   64    3   35.809    3.230   1.867
 golem.canonical 145.238.203.14   2 u   81   64    2   35.487    3.091   0.000

Info

Der mit dem * markierte NTP Server ist der aktuell für die Synchronisation genutzte Server. Die mit + gekennzeichneten Systeme kommen als Ausweich-Kandiaten in Frage.

CentOS, RedHat, …

Die RPM-Distributionen verwenden häufig chronyd als Dienst zur Zeitsynchronisation.

Die Konfiguration wird in der Datei /etc/chrony.conf vorgenommen.

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
server ptbtime1.ptb.de iburst
server ptbtime2.ptb.de iburst
server ptbtime3.ptb.de iburst

Auch hier muss ggf. der chronyd aktiviert und gestartet werden.

systemctl enable chronyd
systemctl start chronyd
systemctl status chronyd

Der Status der Zeit-Quellen kann mit chronyc abgefragt werden:

[root@dpa-cryptshare-c8 ~]# chronyc activity
200 OK
5 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
[root@dpa-cryptshare-c8 ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ptbtime1.ptb.de               1   6   377    23   +231us[ +163us] +/- 8447us
^* ptbtime2.ptb.de               1   6   377    23    -70us[ -139us] +/- 8021us
^+ ptbtime3.ptb.de               1   6   377    23    +40us[  +40us] +/- 7887us