How to Set the Timezone and Configure NTP on Rocky Linux
Introduction
Accurate time is essential for any production server and the Network Time Protocol (NTP) is the standard way to keep the system clocks synchronized to accurate sources. NTP uses the intersection algorithm to mitigate the effects of variable network latency and keep your system clock within a few milliseconds of Coordinated Universal Time (UTC). Linux systems typically keep the time in UTC, but you can also set the timezone to your local timezone. This article explains how to set the timezone on an Ubuntu Linux cloud server and use NTP to synchronize the time.
Prerequisites
- Launch a Rocky Linux Server Instance on Vultr.
- Use SSH to access the server as a non-root user with sudo rights.
- Update the server.
Set the Timezone
To check your current timezone, log in to your server and display the date and time.
$ timedatectl
You'll see output similar to this:
Local time: Sat 2022-04-02 00:44:18 UTC
Universal time: Sat 2022-04-02 00:44:18 UTC
RTC time: Sat 2022-04-02 00:44:17
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
By default, a Vultr Rocky Linux server uses the UTC timezone, which is usually preferable if you manage servers in different locations. However, you can set the server to your local timezone by following these steps.
View a list of all timezones.
$ timedatectl list-timezones
Select your desired timezone and take note of the exact name and capitalization. You can use Space and B to page forward and backward or your arrow keys to move one line at a time through the list. When finished, type Q to exit the list.
For this example, choose Antarctica/South_Pole.
Set the timezone with
timedatectl
.$ sudo timedatectl set-timezone Antarctica/South_Pole
Verify the timezone by viewing
/etc/timezone
.$ cat /etc/timezone Antarctica/South_Pole
Check the time to verify the changes.
$ date Sat 02 Apr 2022 04:22:00 AM NZST
Notice the timezone now shows NZST, indicating the time at the South Pole.
If you decide to return to UTC later, run timedatectl
again with the UTC timezone.
$ sudo timedatectl set-timezone Etc/UTC
Use NTP to Synchronize the Time
Vultr's Rocky Linux systems have the timesyncd
service enabled by default to synchronize their time with an NTP server. You can verify this by running timedatectl
.
$ timedatectl status
Local time: Sat 2022-04-09 04:23:00 NZST
Universal time: Fri 2022-04-08 16:23:00 UTC
RTC time: Fri 2022-04-08 16:23:00
Time zone: Antarctica/South_Pole (NZST, +1200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
The System clock synchronized: yes and NTP service: active lines confirm that the system clock has synchronized with an NTP server. If you see these, you can proceed to the next section. Otherwise, start the service with timedatectl
. Again, you need to be the root user or use sudo.
$ sudo timedatectl set-ntp on
Wait a few minutes for the timesyncd
service to start, then verify the status.
$ timedatectl status
Advanced NTP Configuration
Vultr configures new servers with constant.com NTP servers, which are low-latency servers on Vultr's network infrastructure. You can examine the configuration by viewing chrony.conf
.
$ cat /etc/chrony.conf
You'll see the default NTP servers:
server 1.time.constant.com iburst
server 2.time.constant.com iburst
server 3.time.constant.com iburst
If you need to use specific NTP servers:
Edit the Chrony configuration file.
$ sudo nano /etc/chrony.conf
Change them according to your needs. You'll find public name servers listed on the NTP support website.. For example, if you want to sync with the public UK pool, you can use the following values:
server 0.uk.pool.ntp.org server 1.uk.pool.ntp.org server 2.uk.pool.ntp.org server 3.uk.pool.ntp.org
Restart the Chrony NTP daemon to load changes.
$ sudo systemctl restart chronyd
Verify the new NTP pools.
$ chronyc sources
Confirm the NTP synchronization status.
$ chronyc tracking
Optional: Setup an NTP Server
Most users do not need to set up an NTP server. However, in some situations, you may want to offer NTP service, perhaps to a Virtual Private Cloud (VPC). If you know that you need an NTP server, follow these steps.
To accept client requests to the server:
Edit the main Chrony configuration file.
$ sudo nano /etc/chrony.conf
Add a line to allow requests from the desired network interface, such as a VPC network address.
allow 10.0.0.0/24
> To allow connections from all interfaces, use the
Allow 0.0.0.0/0
directive.Save and close the file.
Restart Chrony to load changes.
$ sudo systemctl restart chronyd
To accept incoming client requests, allow the NTP service through the firewall.
$ sudo firewall-cmd --permanent --add-service=ntp
Restart the Firewall.
$ sudo firewall-cmd --reload
On each client that should receive time from your NTP server:
Edit the configuration file.
$ sudo nano /etc/chrony.conf
Add a line specifying your NTP time server's IP address. For example:
Server 10.0.0.1
Restart the Chrony NTP daemon to load changes.
$ sudo systemctl restart chronyd
Show available NTP sources:
$ chronyc sources
Verify the NTP synchronization status.
$ chronyc tracking
Output:
Reference ID : 4622FB9A (10.0.0.1.vultrusercontent.com) Stratum : 5 Ref time (UTC) : Fri Apr 08 00:18:17 2022 System time : 0.000303299 seconds fast of NTP time Last offset : +0.000142631 seconds RMS offset : 0.000152918 seconds Frequency : 6.807 ppm slow Residual freq : +0.007 ppm Skew : 0.219 ppm Root delay : 0.048402909 seconds Root dispersion : 0.011339894 seconds Update interval : 64.1 seconds Leap status : Normal
From your NTP server, confirm the clients have connected by running the following command:
$ chronyc clients
Output:
Hostname NTP Drop Int IntL Last Cmd Drop Int Last =============================================================================== 10.0.0.1.vultruser> 2 0 6 - 8 0 0 - -
Conclusion
You have set up the timezone and configured NTP on Rocky Linux. For more information, please see these resources: