Chrony doesn't appear to be syncing with the servers I've specified

Chris Williams asked:

I have set Chrony to sync with 4 NTP servers (config file below). When I run chronyc tracking and chronyc sources, it looks like the servers my machine is connecting to for NTP are not correct. I’d expect to see the list of servers I specify in the chronyd.conf file when I ask what server is being tracked and which sources it’s using.

Tracking:

$ chronyc tracking
Reference ID    : 216.152.240.220 (216.152.240.220)
Stratum         : 3
Ref time (UTC)  : Thu Feb 18 19:05:11 2016
System time     : 0.000564536 seconds fast of NTP time
Last offset     : +0.000280794 seconds
RMS offset      : 0.000322653 seconds
Frequency       : 19.616 ppm fast
Residual freq   : +0.003 ppm
Skew            : 0.053 ppm
Root delay      : 0.039604 seconds
Root dispersion : 0.000406 seconds
Update interval : 1042.6 seconds
Leap status     : Normal

Sources:

$ chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp.newfxlabs.com             2  10   377   754   -415us[ -143us] +/-   31ms
^* 216.152.240.220               2  10   377   221  +1823us[+2104us] +/-   21ms
^- nox.prolixium.com             2  10   273    22  +4137us[+4137us] +/-   93ms
^- triangle.kansas.net           2  10   376   34m  -2860us[-2291us] +/-  103ms

Config file (all defaults except for the server portion at the top):

$ cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.rhel.pool.ntp.org iburst
##server 1.rhel.pool.ntp.org iburst
##server 2.rhel.pool.ntp.org iburst
##server 3.rhel.pool.ntp.org iburst
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

# Ignore stratum in source selection.
stratumweight 0

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
rtcsync

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
makestep 10 3

# Allow NTP client access from local network.
#allow 192.168/16

# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.
#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
commandkey 1

# Generate command key if missing.
generatecommandkey

# Disable logging of client accesses.
noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5

logdir /var/log/chrony
#log measurements statistics tracking

timedatectl:

$ timedatectl
      Local time: Thu 2016-02-18 14:13:33 EST
  Universal time: Thu 2016-02-18 19:13:33 UTC
        RTC time: Thu 2016-02-18 19:13:33
       Time zone: America/New_York (EST, -0500)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2015-11-01 01:59:59 EDT
                  Sun 2015-11-01 01:00:00 EST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2016-03-13 01:59:59 EST
                  Sun 2016-03-13 03:00:00 EDT

My answer:


The servers you’ve specified:

server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

are, as the names suggest, pools. When you look up one of these names, you may get any of hundreds of public NTP servers in the US, (and thousands worldwide if you chose some other countries) which are part of the pool. These are delivered via round-robin DNS.

When you view chronyc sources, you see the actual servers in the pool which were used.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.