#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

OpenWrt: Router als NTP-Server einrichten

Anstatt das Clients ihre Systemzeit über die im System hinterlegten NTP-Server synchronisieren, kann alternativ auch der eigene OpenWrt-Router als NTP-Server fungieren. Standardmäßig ist die NTP-Server-Funktionalität in OpenWrt deaktiviert, kann aber über die Weboberfläche LuCI aktiviert werden. Zusätzlich kann man den DHCP-Dienst so konfigurieren, dass er den NTP-Server des Routers bei DHCP-Antworten mitliefert. Clients, die diese DHCP-Option berücksichtigen, verwenden dann automatisch den eigenen Router als NTP-Server. Andernfalls, wie in meinem Fall bei meinem Arch-Linux-System, muss der eigene Router manuell als NTP-Server hinterlegt werden.

Folgende Hardware bzw. Software wurde verwendet:
  • Spitz 4G LTE Smart Router - GL-X750C6
  • OpenWrt v21.02.3
  • Notebook mit Arch Linux

OpenWrt - NTP-Server aktivieren

Öffnet die Weboberfläche eures OpenWrt-Routers und wechselt auf die Einstellungsseite System. Hier wechselt zum Tab Time Synchronization und aktiviert die Einstellung Provide NTP server. Abschließend klickt noch auf Save & Apply, um die Änderungen zu übernehmen.

OpenWrt: NTP-Server aktivieren

OpenWrt - DHCP-Option für NTP-Server einrichten

DHCP ermöglicht es dem Client über diverse Optionen weitere Informationen bzw. Anweisungen mitzugeben. Die DHCP-Option 42 dient bspw. dazu den Clients verfügbare bzw. bevorzugte NTP-Server mitzuteilen. In OpenWrt lässt sich das für den DHCP-Dienst mit folgenden Befehlen umsetzen (tragt die IP eures Routers ein):

uci add_list dhcp.lan.dhcp_option="42,192.168.1.1"
uci commit dhcp
/etc/init.d/dnsmasq restart
Terminal / Konsole

Clients, die die DHCP-Option 42 berücksichtigen sollten fortan nun euren Router als NTP-Server verwenden.

systemd-timesyncd-Dienst - NTP-Server manuell hinterlegen

Für die Zeitsynchronisation unter systemd-Systemen, wie z.B. Arch Linux, kommt im Allgemeinen der Dienst systemd-timesyncd zum Einsatz. In Verbindung mit aktivierten systemd-netword sollten Clients automatisch die per DHCP kommunizierten NTP-Server berücksichtigen. Ich selbst verwende aber bspw. nicht systemd-networkd, sondern den Network Manager, der diese Information aber leider nicht direkt an systemd-timesynd weiterreicht. Aus diesem Grund muss die Adresse des Routers manuell als NTP-Server hinterlegt werden. Dazu muss nur die /etc/systemd/timesyncd.conf entsprechend angepasst werden:

[Time]
NTP=192.168.1.1
Datei: /etc/systemd/timesyncd.conf

Status der Zeitsynchronisation anzeigen

Zum Anzeigen des Status von systemd-timesyncd gibt es mehrere Möglichkeiten, wie z.B.:

sudo systemctl status systemd-timesyncd.service
systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-05-29 11:18:19 CEST; 1h 19min ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 756 (systemd-timesyn)
     Status: "Contacted time server 192.168.1.1:123 (192.168.1.1)."
      Tasks: 2 (limit: 38150)
     Memory: 1.3M
        CPU: 60ms
     CGroup: /system.slice/systemd-timesyncd.service
             └─756 /usr/lib/systemd/systemd-timesyncd

Mai 29 11:18:19 slnb systemd[1]: Starting Network Time Synchronization...
Mai 29 11:18:19 slnb systemd[1]: Started Network Time Synchronization.
Mai 29 11:18:52 slnb systemd-timesyncd[756]: Contacted time server 192.168.1.1:123 (192.168.1.1).
Mai 29 11:18:52 slnb systemd-timesyncd[756]: Initial clock synchronization to Sun 2022-05-29 11:18:52.210606 CEST.
Terminal / Konsole

Alternativ können sonst auch die folgende Befehle verwendet werden:

timedatectl status
timedatectl timesync-status
Terminal / Konsole

Fazit

Ein OpenWrt-Router kann auch als NTP-Server für alle Clients im eigenen Heimnetzwerk zum Einsatz kommen.