1 changed files with 118 additions and 0 deletions
@ -0,0 +1,118 @@ |
|||
--- |
|||
title: "Is my NTP daemon working?" |
|||
date: 2019-03-29T00:00:00+02:00 |
|||
opensource: |
|||
- Fedora |
|||
--- |
|||
|
|||
If the time on your workstation or server is not stable, strange errors might |
|||
appear, such as: |
|||
|
|||
```raw |
|||
$ tar zxvf /tmp/archive.tgz |
|||
tar: my-file: time stamp 2019-03-28 14:04:45 is 0.042713488 s in the future |
|||
``` |
|||
|
|||
This can happen when your [NTP](https://en.wikipedia.org/wiki/Network_Time_Protocol) |
|||
daemon is not synchronized. This means it cannot reliably determine the current |
|||
time. |
|||
|
|||
First, make sure your NTP daemon is started: |
|||
|
|||
```sh |
|||
$ sudo systemctl status ntpd |
|||
● ntpd.service - Network Time Service |
|||
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) |
|||
Active: active (running) since Thu 2019-03-28 17:13:10 CET; 16h ago |
|||
Process: 33844 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) |
|||
Main PID: 33845 (ntpd) |
|||
Tasks: 1 |
|||
Memory: 924.0K |
|||
CGroup: /system.slice/ntpd.service |
|||
└─33845 /usr/sbin/ntpd -u ntp:ntp -g |
|||
``` |
|||
|
|||
For your NTP daemon to be started, the state must be `active (running)`. |
|||
|
|||
Then, you can query its status with the `ntpdc` command: |
|||
|
|||
```raw |
|||
$ sudo ntpdc -c sysinfo |
|||
system peer: www.almaprovence.fr |
|||
system peer mode: client |
|||
leap indicator: 00 |
|||
stratum: 3 |
|||
precision: -25 |
|||
root distance: 0.00130 s |
|||
root dispersion: 0.02950 s |
|||
reference ID: [212.83.145.32] |
|||
reference time: e0485cce.58fb4baf Fri, Mar 29 2019 9:58:54.347 |
|||
system flags: auth ntp kernel stats |
|||
jitter: 0.000259 s |
|||
stability: 0.000 ppm |
|||
broadcastdelay: 0.000000 s |
|||
authdelay: 0.000000 s |
|||
``` |
|||
|
|||
In this output, you need to check the **stratum**. |
|||
|
|||
The stratum tells you how far you are from the reference clock (the world |
|||
[atomic clock](https://en.wikipedia.org/wiki/Atomic_clock)). The closer you are, |
|||
the lower is the `stratum` and the more stable your clock will be. |
|||
|
|||
Usually, your stratum will be between 3 and 5. By convention, 16 means |
|||
"unsynchronized". |
|||
|
|||
You can query the list of peers your NTP daemon is synchronized to with the |
|||
`ntpq` command: |
|||
|
|||
```raw |
|||
$ sudo ntpq -c peers |
|||
remote refid st t when poll reach delay offset jitter |
|||
============================================================================== |
|||
-stardust.ploup. 195.13.23.5 3 u 782 1024 377 4.272 -1.984 2.479 |
|||
+server.bertold. 193.190.230.66 2 u 679 1024 377 4.235 -0.152 0.629 |
|||
*www.almaprovenc 145.238.203.14 2 u 854 1024 377 0.321 -0.225 0.502 |
|||
+ns.rail.eu.org 138.96.64.10 2 u 563 1024 377 0.455 0.413 0.630 |
|||
``` |
|||
|
|||
Again, check the `st` column (abbreviation for `stratum`) and make sure your |
|||
peers have a correct stratum. As above, 16 means "unsynchronized". |
|||
|
|||
The `offset` and `jitter` column are also useful: |
|||
|
|||
- the `offset` tells you how far away in time your peers are. |
|||
- the `jitter` tells you how stable your peers are. |
|||
|
|||
Last but not least, you can troubleshoot network issues with the `ntpdate` |
|||
command. |
|||
|
|||
For the test to be meaningful, you need to shut down temporarily the NTP |
|||
daemon: |
|||
|
|||
```sh |
|||
sudo systemctl stop ntpd |
|||
``` |
|||
|
|||
Then, run the ntpdate command: |
|||
|
|||
```sh |
|||
$ sudo ntpdate -q 0.rhel.pool.ntp.org |
|||
server 91.121.88.161, stratum 2, offset -0.000393, delay 0.02974 |
|||
server 129.250.35.251, stratum 2, offset 0.004071, delay 0.02733 |
|||
server 5.196.192.58, stratum 2, offset -0.005378, delay 0.03003 |
|||
server 51.15.182.163, stratum 2, offset 0.000207, delay 0.02658 |
|||
29 Mar 10:45:09 ntpdate[121271]: adjust time server 51.15.182.163 offset 0.000207 sec |
|||
``` |
|||
|
|||
It is important to shut down the NTP daemon and run the `ntpdate` command |
|||
with `sudo` in order for ntpdate to successfully bind to the NTP port, `123`. |
|||
|
|||
If the `ntpdate` command fails, it is a strong indication that there is a network |
|||
issue between your host and the NTP peers. |
|||
|
|||
After this step, do not forget to restart your NTP daemon: |
|||
|
|||
```sh |
|||
sudo systemctl start ntpd |
|||
``` |
|||
Loading…
Reference in new issue