How to Configure Chrony for Accurate Time Synchronization in Linux

Time synchronization is critical for maintaining consistent logs, secure communication, and reliable data transactions across systems.
In modern Linux distributions such as RHEL, CentOS, Rocky, AlmaLinux, Fedora, and Ubuntu, Chrony has become the default service for network time synchronization — replacing the older ntpd.

In this guide, you’ll learn how to install, configure, and verify Chrony for precise and reliable time synchronization on your Linux server or desktop.


What Is Chrony?

Chrony is a versatile implementation of the Network Time Protocol (NTP) that synchronizes your system clock with remote NTP servers.
Unlike traditional NTP daemons, Chrony adapts quickly to network changes and is optimized for systems with intermittent connectivity or virtualized environments.

Chrony includes two key components:

  • chronyd – The daemon that runs in the background and adjusts the system clock.
  • chronyc – A command-line utility to monitor and manage the Chrony service.

Step 1: Install Chrony on Linux

Chrony is available by default in most Linux repositories. Install it using your distribution’s package manager.

On RHEL, CentOS, Oracle, AlmaLinux, or Rocky Linux:

sudo yum install chrony -y

On Ubuntu or Debian-based systems:

sudo apt install chrony -y

Once installed, enable and start the Chrony service:

sudo systemctl enable chronyd
sudo systemctl start chronyd

Check the status:

sudo systemctl status chronyd

You should see “active (running)” if Chrony is successfully running.


Step 2: Configure Chrony Servers

Chrony’s configuration file is located at:

/etc/chrony.conf

Open it with your preferred text editor:

sudo vi /etc/chrony.conf

Look for the server or pool entries. These define which NTP servers your system will synchronize with.
Replace or add your preferred NTP sources, such as Google or NIST time servers:

server time.google.com iburst
server time1.facebook.com iburst
server time.cloudflare.com iburst

The iburst option allows faster initial synchronization when Chrony starts.

After editing the file, restart Chrony:

sudo systemctl restart chronyd

Step 3: Verify Time Synchronization

Use the chronyc command to check the synchronization status:

chronyc tracking

Example output:

Reference ID    : 8.8.8.8 (time.google.com)
Stratum         : 3
System time     : 0.000123456 seconds fast
Last offset     : -0.000005 seconds

Key fields:

  • Reference ID → The current NTP server being used.
  • System time → Difference between your local clock and the reference.
  • Stratum → Indicates how close your server is to the reference time source.

Step 4: Allow NTP Access (Optional)

If you want other machines to sync time from your server, edit /etc/chrony.conf and add:

allow 192.168.1.0/24

This line permits clients in the 192.168.1.x subnet to synchronize with your Chrony server.

Restart Chrony to apply the changes:

sudo systemctl restart chronyd

Step 5: Check Time Sources

You can view all available time sources with:

chronyc sources -v

Example output:

210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* time.google.com              1   6   377    45   -152us[ -140us] +/-  15ms
^- time.cloudflare.com          2   6   377    47   +193us[ +207us] +/-  18ms
^- time1.facebook.com           2   6   377    48   +230us[ +242us] +/-  19ms

Legend:

  • ^* → Primary server currently in use.
  • ^- → Secondary sources (available but not selected).

Step 6: Compare Chrony vs NTP

If you’ve used ntpd before, you’ll notice Chrony:

  • Syncs faster and more accurately.
  • Consumes fewer system resources.
  • Works better on laptops, VMs, and systems with poor connectivity.

For a full technical comparison, check out:
Chrony vs NTP: Key Differences


Step 7: Troubleshooting Common Chrony Issues

1. Time not syncing

Run:

sudo chronyc tracking

If “Not synchronised” appears, restart Chrony:

sudo systemctl restart chronyd

2. No response from time sources

Check your firewall:

sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

3. Verify NTP port (123/UDP)

Ensure the port is open for outbound connections.


Summary

TaskCommand
Install Chronyyum install chrony / apt install chrony
Start Servicesystemctl start chronyd
Check Statussystemctl status chronyd
Check Syncchronyc tracking
View Sourceschronyc sources -v
Allow Clientsallow <subnet>

Conclusion

Chrony is the modern, reliable, and accurate choice for time synchronization in Linux systems.
It’s lightweight, fast, and designed to handle real-world network conditions — whether you’re managing a data center, running cloud VMs, or maintaining personal Linux servers.

By configuring Chrony correctly, you ensure consistent timestamps, secure authentication, and smooth operations across your networked systems.