Private NTP Server
Serve disciplined time safely to systems on a private LAN.
Serve time to a private LAN
This guide turns the Chrony instance on a ROKO observer or ordinary Linux host into a restricted NTP server for home/lab computers.
It does not expose ROKO PTP² to LAN clients. PTP² and NTP are separate protocols.
Prerequisites
- the server has a stable LAN address;
- Chrony already uses at least three or four permitted, diverse sources;
chronyc trackingreports synchronized;- the host firewall can distinguish the LAN interface/subnet from the Internet.
Use time.roko.network as one source, not the only source.
Chrony configuration
Create a dedicated fragment using your actual LAN values:
# Upstream sources
server time.roko.network iburst
pool pool.ntp.org iburst maxsources 3
minsources 2
makestep 0.1 3
rtcsync
# Serve only the private LAN
allow <LAN_CIDR>
binddevice <LAN_INTERFACE>
# Disable the remote chronyc UDP command port
cmdport 0
# Limit abusive/misconfigured clients
ratelimit interval 3 burst 8 leak 2
Do not copy <LAN_CIDR> or <LAN_INTERFACE> literally. Use a narrow subnet; do not use allow all or 0/0.
cmdport 0 disables the remote UDP command interface. Local administration continues through Chrony's Unix socket.
Firewall
Permit UDP/123 only from <LAN_CIDR> on <LAN_INTERFACE>. Drop it on public interfaces. The exact command depends on your firewall manager; verify the effective rules after every reboot.
Do not open UDP/319 or UDP/320. ROKO PTP² is not IEEE 1588 PTP.
Validate the server
On the server:
sudo chronyc reload sources
chronyc tracking
chronyc sources -v
chronyc clients
On a LAN Linux client, add:
server <LAN_TIME_SERVER> iburst
Then inspect chronyc sources -v and chronyc tracking. macOS and Windows clients can use <LAN_TIME_SERVER> through their normal network time settings.
Test both sides of the boundary:
- a LAN client receives NTP replies and converges;
- a host outside the allowed subnet receives no reply;
- a reboot restores firewall rules, upstream sync, and LAN service;
- if upstream sources are unhealthy, the server does not claim a false local reference clock.
Security and accuracy notes
- NTP representation and actual accuracy are different. Wi-Fi, NAT, queueing, and asymmetric paths add error.
- Standard NTP is unauthenticated unless NTS or another authenticated design is configured. Do not add
ntsto a source that has not been verified to support it. - Do not mix leap-smeared and non-smeared upstreams.
- Monitor loss of synchronization, root distance, falsetickers, reach, and unexpected client volume.
- Follow RFC 8633 and the Chrony configuration reference.