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.
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 - 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
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.1Status 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.Alternativ können sonst auch die folgende Befehle verwendet werden:
timedatectl status
timedatectl timesync-status
Fazit
Ein OpenWrt-Router kann auch als NTP-Server für alle Clients im eigenen Heimnetzwerk zum Einsatz kommen.