NTP-Anfragen auf localhost umlenken

03.04.2011

Am einfachsten lassen sich Geräte, welche sich beharrlich weigern einen benutzerdefinierten Zeitserver zu verwenden, bändigen, wenn der Internetrouter gleichzeitig NTP-Server ist. In diesem Fall kann eine einfache Firewallregel jede NTP-Anfrage auf den lokalen Server umlenken. So ist sichergestellt, dass - egal welchen NTP-Server das Gerät wirklich ansprechen möchte - immer der lokale NTP-Server antwortet:

iptables -A PREROUTING -p udp --dport 123 -j REDIRECT
iptables -A INPUT -s <Internes Netzwerk>/<Maskenbits> -p udp --dport 123 -j ACCEPT

Die Regel nutzt das REDIRECT-Target um alle Anfragen auf UDP-Port 123 (NTP) auf den lokalen Host umzulenken. Natürlich muss auch eine geeignete INPUT-Regel vorhanden sein, welche die umgelenkten Pakete akzeptiert. Diese ist in der zweiten Zeile zu sehen. Nach dem Parameter -s muss das interne Netzwerk inklusive Netzmaske angegeben werden um den NTP-Server nicht zusätzlich aus dem Internet erreichbar zu machen. Mit dieser Konfiguration werden NTP-Anfragen nicht mehr Richtung Internet geroutet, sondern direkt vom lokalen NTP-Server beantwortet. Das führt zum einen zu einer besseren und schnelleren Zeitsynchronisation und zum andern kann man die Uhrzeit aller Netzwerksysteme zentral über den NTP-Server auf dem Router verwalten.

Wer also eine Linux-Box (z.B. OpenWrt) als Router nutzt, kann hiermit die Zeitsynchronisation leicht und für alle Geräte optimieren.