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
| Task | Command |
|---|---|
| Install Chrony | yum install chrony / apt install chrony |
| Start Service | systemctl start chronyd |
| Check Status | systemctl status chronyd |
| Check Sync | chronyc tracking |
| View Sources | chronyc sources -v |
| Allow Clients | allow <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.