doc: update and improve FAQ
This commit is contained in:
parent
983b0723f6
commit
c9b8f8bc70
1 changed files with 162 additions and 84 deletions
246
doc/faq.adoc
246
doc/faq.adoc
|
@ -24,17 +24,20 @@
|
||||||
|
|
||||||
=== How does `chrony` compare to `ntpd`?
|
=== How does `chrony` compare to `ntpd`?
|
||||||
|
|
||||||
`chronyd` was designed to work well in a wide range of conditions and it can
|
`chrony` and `ntpd` are two different implementations of the Network Time
|
||||||
usually synchronise the system clock faster and with better time accuracy. It
|
Protocol (NTP).
|
||||||
doesn't implement some of the less useful NTP modes like broadcast client or
|
|
||||||
multicast server/client.
|
`chrony` is a newer implementation, which was designed to work well in a wider
|
||||||
|
range of conditions. It can usually synchronise the system clock faster and
|
||||||
|
with better time accuracy. It has many features, but it does not implement some
|
||||||
|
of the less useful NTP modes like broadcast client or multicast server/client.
|
||||||
|
|
||||||
If your computer is connected to the Internet only for few minutes at a time,
|
If your computer is connected to the Internet only for few minutes at a time,
|
||||||
the network connection is often congested, you turn your computer off or
|
the network connection is often congested, you turn your computer off or
|
||||||
suspend it frequently, the clock is not very stable (e.g. there are rapid
|
suspend it frequently, the clock is not very stable (e.g. there are rapid
|
||||||
changes in the temperature or it's a virtual machine), or you want to use NTP
|
changes in the temperature or it is a virtual machine), or you want to use NTP
|
||||||
on an isolated network with no hardware reference clocks in sight, `chrony`
|
on an isolated network with no hardware reference clocks in sight, `chrony`
|
||||||
will probably work much better for you.
|
will probably work better for you.
|
||||||
|
|
||||||
For a more detailed comparison of features and performance, see the
|
For a more detailed comparison of features and performance, see the
|
||||||
https://chrony.tuxfamily.org/comparison.html[comparison page] on the `chrony`
|
https://chrony.tuxfamily.org/comparison.html[comparison page] on the `chrony`
|
||||||
|
@ -59,7 +62,7 @@ slewing, which would take a very long time. The `makestep` directive does
|
||||||
that.
|
that.
|
||||||
|
|
||||||
In order to keep the real-time clock (RTC) close to the true time, so the
|
In order to keep the real-time clock (RTC) close to the true time, so the
|
||||||
system time is reasonably close to the true time when it's initialised on the
|
system time is reasonably close to the true time when it is initialised on the
|
||||||
next boot from the RTC, the `rtcsync` directive enables a mode in which the
|
next boot from the RTC, the `rtcsync` directive enables a mode in which the
|
||||||
system time is periodically copied to the RTC. It is supported on Linux and
|
system time is periodically copied to the RTC. It is supported on Linux and
|
||||||
macOS.
|
macOS.
|
||||||
|
@ -75,52 +78,36 @@ makestep 1 3
|
||||||
rtcsync
|
rtcsync
|
||||||
----
|
----
|
||||||
|
|
||||||
=== How do I make an NTP server from an NTP client?
|
=== How do I make an NTP server?
|
||||||
|
|
||||||
You need to add an `allow` directive to the _chrony.conf_ file in order to open
|
You need to add an `allow` directive to the _chrony.conf_ file in order to open
|
||||||
the NTP port and allow `chronyd` to reply to client requests. `allow` with no
|
the NTP port and allow `chronyd` to reply to client requests. `allow` with no
|
||||||
specified subnet allows access from all IPv4 and IPv6 addresses.
|
specified subnet allows access from all IPv4 and IPv6 addresses.
|
||||||
|
|
||||||
=== I have several computers on a LAN. Should be all clients of an external server?
|
=== Should all computers on a LAN be clients of an external server?
|
||||||
|
|
||||||
The best configuration is usually to make one computer the server, with
|
It depends on the requirements. Usually, the best configuration is to make one
|
||||||
the others as clients of it. Add a `local` directive to the server's
|
computer the server, with the others as clients of it. Add a `local` directive
|
||||||
_chrony.conf_ file. This configuration will be better because
|
to the server's _chrony.conf_ file. This configuration will be better because
|
||||||
|
|
||||||
* the load on the external connection is less
|
* the load on the external connection is less
|
||||||
* the load on the external NTP server(s) is less
|
* the load on the external NTP server(s) is less
|
||||||
* if your external connection goes down, the computers on the LAN
|
* if your external connection goes down, the computers on the LAN
|
||||||
will maintain a common time with each other.
|
will maintain a common time with each other.
|
||||||
|
|
||||||
=== Must I specify servers by IP address if DNS is not available on chronyd start?
|
=== Must I specify servers by IP address if DNS is not available on `chronyd` start?
|
||||||
|
|
||||||
No. Starting from version 1.25, `chronyd` will keep trying to resolve
|
No, `chronyd` will keep trying to resolve
|
||||||
the names specified by the `server`, `pool`, and `peer` directives in an
|
the names specified by the `server`, `pool`, and `peer` directives in an
|
||||||
increasing interval until it succeeds. The `online` command can be issued from
|
increasing interval until it succeeds. The `online` command can be issued from
|
||||||
`chronyc` to force `chronyd` to try to resolve the names immediately.
|
`chronyc` to force `chronyd` to try to resolve the names immediately.
|
||||||
|
|
||||||
=== How can I make `chronyd` more secure?
|
=== How can I make `chronyd` more secure?
|
||||||
|
|
||||||
If you don't need to serve time to NTP clients or peers, you can add `port 0`
|
If you do not need to use `chronyc`, or you want to run `chronyc` only
|
||||||
to the _chrony.conf_ file to completely disable the NTP server functionality
|
|
||||||
and prevent NTP requests from reaching `chronyd`. Starting from version 2.0,
|
|
||||||
the NTP server port is open only when client access is allowed by the `allow`
|
|
||||||
directive or command, an NTP peer is configured, or the `broadcast` directive
|
|
||||||
is used.
|
|
||||||
|
|
||||||
If you don't need to use `chronyc` remotely, you can add the following
|
|
||||||
directives to the configuration file to bind the command sockets to the
|
|
||||||
loopback interface. This is done by default since version 2.0.
|
|
||||||
|
|
||||||
----
|
|
||||||
bindcmdaddress 127.0.0.1
|
|
||||||
bindcmdaddress ::1
|
|
||||||
----
|
|
||||||
|
|
||||||
If you don't need to use `chronyc` at all or you need to run `chronyc` only
|
|
||||||
under the root or _chrony_ user (which can access `chronyd` through a Unix
|
under the root or _chrony_ user (which can access `chronyd` through a Unix
|
||||||
domain socket since version 2.2), you can disable the internet command sockets
|
domain socket), you can disable the IPv4 and IPv6 command sockets (by default
|
||||||
completely by adding `cmdport 0` to the configuration file.
|
listening on localhost) by adding `cmdport 0` to the configuration file.
|
||||||
|
|
||||||
You can specify an unprivileged user with the `-u` option, or the `user`
|
You can specify an unprivileged user with the `-u` option, or the `user`
|
||||||
directive in the _chrony.conf_ file, to which `chronyd` will switch after start
|
directive in the _chrony.conf_ file, to which `chronyd` will switch after start
|
||||||
|
@ -133,23 +120,23 @@ a very limited range of privileged system calls on behalf of the parent.
|
||||||
Also, if `chronyd` is compiled with support for the Linux secure computing
|
Also, if `chronyd` is compiled with support for the Linux secure computing
|
||||||
(seccomp) facility, you can enable a system call filter with the `-F` option.
|
(seccomp) facility, you can enable a system call filter with the `-F` option.
|
||||||
It will significantly reduce the kernel attack surface and possibly prevent
|
It will significantly reduce the kernel attack surface and possibly prevent
|
||||||
kernel exploits from the `chronyd` process if it's compromised. It's
|
kernel exploits from the `chronyd` process if it is compromised. It is
|
||||||
recommended to enable the filter only when it's known to work on the version of
|
recommended to enable the filter only when it is known to work on the version of
|
||||||
the system where `chrony` is installed as the filter needs to allow also system
|
the system where `chrony` is installed as the filter needs to allow also system
|
||||||
calls made from libraries that `chronyd` is using (e.g. libc) and different
|
calls made from libraries that `chronyd` is using (e.g. libc) and different
|
||||||
versions or implementations of the libraries may make different system calls.
|
versions or implementations of the libraries might make different system calls.
|
||||||
If the filter is missing some system call, `chronyd` could be killed even in
|
If the filter is missing some system call, `chronyd` could be killed even in
|
||||||
normal operation.
|
normal operation.
|
||||||
|
|
||||||
=== How can I improve the accuracy of the system clock with NTP sources?
|
=== How can I improve the accuracy of the system clock with NTP sources?
|
||||||
|
|
||||||
Select NTP servers that are well synchronised, stable and close to your
|
Select NTP servers that are well synchronised, stable and close to your
|
||||||
network. It's better to use more than one server, three or four is usually
|
network. It is better to use more than one server, three or four is usually
|
||||||
recommended as the minimum, so `chronyd` can detect servers that serve false
|
recommended as the minimum, so `chronyd` can detect servers that serve false
|
||||||
time and combine measurements from multiple sources.
|
time and combine measurements from multiple sources.
|
||||||
|
|
||||||
If you have a network card with hardware timestamping supported on Linux, it
|
If you have a network card with hardware timestamping supported on Linux, it
|
||||||
can be enabled by the *hwtimestamp* directive in the _chrony.conf_ file. It
|
can be enabled by the `hwtimestamp` directive in the _chrony.conf_ file. It
|
||||||
should make local receive and transmit timestamps of NTP packets much more
|
should make local receive and transmit timestamps of NTP packets much more
|
||||||
accurate.
|
accurate.
|
||||||
|
|
||||||
|
@ -163,8 +150,8 @@ default values are 6 (64 seconds) for `minpoll`, 10 (1024 seconds) for
|
||||||
`maxpoll` and 8 (samples) for `polltarget`. The default values should be used
|
`maxpoll` and 8 (samples) for `polltarget`. The default values should be used
|
||||||
for general servers on the Internet. With your own NTP servers, or if you have
|
for general servers on the Internet. With your own NTP servers, or if you have
|
||||||
permission to poll some servers more frequently, setting these options for
|
permission to poll some servers more frequently, setting these options for
|
||||||
shorter polling intervals may significantly improve the accuracy of the system
|
shorter polling intervals might significantly improve the accuracy of the
|
||||||
clock.
|
system clock.
|
||||||
|
|
||||||
The optimal polling interval depends mainly on two factors, stability of the
|
The optimal polling interval depends mainly on two factors, stability of the
|
||||||
network latency and stability of the system clock (which mainly depends on the
|
network latency and stability of the system clock (which mainly depends on the
|
||||||
|
@ -174,7 +161,7 @@ temperature change).
|
||||||
Generally, if the `sourcestats` command usually reports a small number of
|
Generally, if the `sourcestats` command usually reports a small number of
|
||||||
samples retained for a source (e.g. fewer than 16), a shorter polling interval
|
samples retained for a source (e.g. fewer than 16), a shorter polling interval
|
||||||
should be considered. If the number of samples is usually at the maximum of 64,
|
should be considered. If the number of samples is usually at the maximum of 64,
|
||||||
a longer polling interval may work better.
|
a longer polling interval might work better.
|
||||||
|
|
||||||
An example of the directive for an NTP server on the Internet that you are
|
An example of the directive for an NTP server on the Internet that you are
|
||||||
allowed to poll frequently could be
|
allowed to poll frequently could be
|
||||||
|
@ -210,7 +197,7 @@ server ntp.local minpoll 2 maxpoll 4 xleave
|
||||||
|
|
||||||
When combined with local hardware timestamping, good network switches, and even
|
When combined with local hardware timestamping, good network switches, and even
|
||||||
shorter polling intervals, a sub-microsecond accuracy and stability of a few
|
shorter polling intervals, a sub-microsecond accuracy and stability of a few
|
||||||
tens of nanoseconds may be possible. For example:
|
tens of nanoseconds might be possible. For example:
|
||||||
|
|
||||||
----
|
----
|
||||||
server ntp.local minpoll 0 maxpoll 0 xleave
|
server ntp.local minpoll 0 maxpoll 0 xleave
|
||||||
|
@ -221,10 +208,11 @@ For best stability, the CPU should be running at a constant frequency (i.e.
|
||||||
disabled power saving and performance boosting). Energy-Efficient Ethernet
|
disabled power saving and performance boosting). Energy-Efficient Ethernet
|
||||||
(EEE) should be disabled in the network. The switches should be configured to
|
(EEE) should be disabled in the network. The switches should be configured to
|
||||||
prioritize NTP packets, especially if the network is expected to be heavily
|
prioritize NTP packets, especially if the network is expected to be heavily
|
||||||
loaded.
|
loaded. The `dscp` directive can be used to set the Differentiated Services
|
||||||
|
Code Point in transmitted NTP packets if needed.
|
||||||
|
|
||||||
If it is acceptable for NTP clients in the network to send requests at an
|
If it is acceptable for NTP clients in the network to send requests at a high
|
||||||
excessive rate, a sub-second polling interval may be specified. A median filter
|
rate, a sub-second polling interval can be specified. A median filter
|
||||||
can be enabled in order to update the clock at a reduced rate with more stable
|
can be enabled in order to update the clock at a reduced rate with more stable
|
||||||
measurements. For example:
|
measurements. For example:
|
||||||
|
|
||||||
|
@ -237,7 +225,7 @@ hwtimestamp eth0 minpoll -6
|
||||||
|
|
||||||
Yes. With the `-q` option `chronyd` will set the system clock once and exit.
|
Yes. With the `-q` option `chronyd` will set the system clock once and exit.
|
||||||
With the `-Q` option it will print the measured offset without setting the
|
With the `-Q` option it will print the measured offset without setting the
|
||||||
clock. If you don't want to use a configuration file, NTP servers can be
|
clock. If you do not want to use a configuration file, NTP servers can be
|
||||||
specified on the command line. For example:
|
specified on the command line. For example:
|
||||||
|
|
||||||
----
|
----
|
||||||
|
@ -249,17 +237,28 @@ well synchronised and responding to all requests. If not synchronised or
|
||||||
responding, it would take about 10 seconds for `chronyd` to give up and exit
|
responding, it would take about 10 seconds for `chronyd` to give up and exit
|
||||||
with a non-zero status. A faster configuration is possible. A single server can
|
with a non-zero status. A faster configuration is possible. A single server can
|
||||||
be used instead of four servers, the number of measurements can be reduced with
|
be used instead of four servers, the number of measurements can be reduced with
|
||||||
the `maxsamples` option, and a timeout can be specified with the `-t` option.
|
the `maxsamples` option to one (supported in `chrony` version 4.0), and a
|
||||||
The following command would take only up to about 1 second.
|
timeout can be specified with the `-t` option. The following command would take
|
||||||
|
only up to about one second.
|
||||||
|
|
||||||
----
|
----
|
||||||
# chronyd -q -t 1 'server pool.ntp.org iburst maxsamples 1'
|
# chronyd -q -t 1 'server pool.ntp.org iburst maxsamples 1'
|
||||||
----
|
----
|
||||||
|
|
||||||
|
It is not recommended to run `chronyd` with the `-q` option periodically (e.g.
|
||||||
|
from a cron job) as a replacement for the daemon mode, because it performs
|
||||||
|
significantly worse (e.g. the clock is stepped and its frequency is not
|
||||||
|
corrected). If you must run it this way and you are using a public NTP server,
|
||||||
|
make sure `chronyd` does not always start around the first second of a minute,
|
||||||
|
e.g. by adding a random sleep before the `chronyd` command. Public servers
|
||||||
|
typically receive large bursts of requests around the first second as there is
|
||||||
|
a large number of NTP clients started from cron with no delay.
|
||||||
|
|
||||||
=== Can `chronyd` be configured to control the clock like `ntpd`?
|
=== Can `chronyd` be configured to control the clock like `ntpd`?
|
||||||
|
|
||||||
It is not possible to perfectly emulate `ntpd`, but there are some options that
|
It is not possible to perfectly emulate `ntpd`, but there are some options that
|
||||||
can configure `chronyd` to behave more like `ntpd`.
|
can configure `chronyd` to behave more like `ntpd` if there is a reason to
|
||||||
|
prefer that.
|
||||||
|
|
||||||
In the following example the `minsamples` directive slows down the response to
|
In the following example the `minsamples` directive slows down the response to
|
||||||
changes in the frequency and offset of the clock. The `maxslewrate` and
|
changes in the frequency and offset of the clock. The `maxslewrate` and
|
||||||
|
@ -279,10 +278,56 @@ maxchange 1000 1 1
|
||||||
maxclockerror 15
|
maxclockerror 15
|
||||||
----
|
----
|
||||||
|
|
||||||
Note that increasing `minsamples` may cause the offsets in the `tracking` and
|
Note that increasing `minsamples` might cause the offsets in the `tracking` and
|
||||||
`sourcestats` reports/logs to be significantly smaller than the actual offsets
|
`sourcestats` reports/logs to be significantly smaller than the actual offsets
|
||||||
and be unsuitable for monitoring.
|
and be unsuitable for monitoring.
|
||||||
|
|
||||||
|
=== Can NTP server be separated from NTP client?
|
||||||
|
|
||||||
|
Yes, it is possible to run multiple instances of `chronyd` on the same
|
||||||
|
computer. One can be configured as an NTP client, and another as a server. They
|
||||||
|
need to use different pidfiles, NTP ports, command ports, and Unix domain
|
||||||
|
command sockets. The server instance should be started with the `-x` option to
|
||||||
|
avoid touching the clock. It can be configured to serve the system time with
|
||||||
|
the `local` directive, or synchronise its NTP clock to the client instance
|
||||||
|
running on localhost using a non-standard NTP port.
|
||||||
|
|
||||||
|
On Linux, starting with `chrony` version 4.0, it is also possible to run
|
||||||
|
multiple server instances sharing a port to utilise multiple cores of the CPU.
|
||||||
|
Note that the client/server interleaved mode requires that all packets from an
|
||||||
|
address are handled by the same server instance.
|
||||||
|
|
||||||
|
=== Should be a leap smear enabled on NTP server?
|
||||||
|
|
||||||
|
With the `smoothtime` and `leapsecmode` directives it is possible to enable a
|
||||||
|
server leap smear in order to hide leap seconds from clients and force them to
|
||||||
|
follow a slow server's adjustment instead.
|
||||||
|
|
||||||
|
This feature should be used only in local networks and only when necessary,
|
||||||
|
e.g. when the clients cannot be configured to handle the leap seconds as
|
||||||
|
needed, or their number is so large that configuring them all would be
|
||||||
|
impractical. The clients should use only one leap-smearing server, or multiple
|
||||||
|
identically configured leap-smearing servers. Note that some clients can get
|
||||||
|
leap seconds from external sources (e.g. with the `leapsectz` directive in
|
||||||
|
`chrony`) and they will not work correctly with a leap smearing server.
|
||||||
|
|
||||||
|
=== Does `chrony` support PTP?
|
||||||
|
|
||||||
|
No, the Precision Time Protocol (PTP) is not supported and there are no plans
|
||||||
|
to support it. It is a complex protocol, which shares some issues with the
|
||||||
|
NTP broadcast mode. One of the main differences between NTP and PTP is that PTP
|
||||||
|
was designed to be easily supported in hardware (e.g. network switches and
|
||||||
|
routers) in order to make more stable and accurate measurements. PTP relies on
|
||||||
|
the hardware support. NTP does not rely on any support in the hardware, but if
|
||||||
|
it had the same support as PTP, it could perform equally well.
|
||||||
|
|
||||||
|
On Linux, `chrony` supports hardware clocks that some NICs have for PTP. They
|
||||||
|
are called PTP hardware clocks (PHC). They can be used as reference clocks
|
||||||
|
(specified by the `refclock` directive) and for hardware timestamping of NTP
|
||||||
|
packets (enabled by the `hwtimestamp` directive) if the NIC can timestamp other
|
||||||
|
packets than PTP, which is usually the case at least for transmitted packets.
|
||||||
|
The `ethtool -T` command can be used to verify the timestamping support.
|
||||||
|
|
||||||
=== What happened to the `commandkey` and `generatecommandkey` directives?
|
=== What happened to the `commandkey` and `generatecommandkey` directives?
|
||||||
|
|
||||||
They were removed in version 2.2. Authentication is no longer supported in the
|
They were removed in version 2.2. Authentication is no longer supported in the
|
||||||
|
@ -299,11 +344,11 @@ following questions.
|
||||||
|
|
||||||
=== Behind a firewall?
|
=== Behind a firewall?
|
||||||
|
|
||||||
Check the `Reach` value printed by the ``chronyc``'s `sources` command. If it's
|
Check the `Reach` value printed by the ``chronyc``'s `sources` command. If it
|
||||||
zero, it means `chronyd` did not get any valid responses from the NTP server
|
is zero, it means `chronyd` did not get any valid responses from the NTP server
|
||||||
you are trying to use. If there is a firewall between you and the server, the
|
you are trying to use. If there is a firewall between you and the server, the
|
||||||
packets may be blocked. Try using a tool like `wireshark` or `tcpdump` to see
|
packets might be blocked. Try using a tool like `wireshark` or `tcpdump` to see
|
||||||
if you're getting any responses from the server.
|
if you are getting any responses from the server.
|
||||||
|
|
||||||
When `chronyd` is receiving responses from the servers, the output of the
|
When `chronyd` is receiving responses from the servers, the output of the
|
||||||
`sources` command issued few minutes after `chronyd` start might look like
|
`sources` command issued few minutes after `chronyd` start might look like
|
||||||
|
@ -320,9 +365,10 @@ MS Name/IP address Stratum Poll Reach LastRx Last sample
|
||||||
|
|
||||||
=== Are NTP servers specified with the `offline` option?
|
=== Are NTP servers specified with the `offline` option?
|
||||||
|
|
||||||
Check that you're using ``chronyc``'s `online` and `offline` commands
|
Check that the ``chronyc``'s `online` and `offline` commands are used
|
||||||
appropriately. The `activity` command prints the number of sources that are
|
appropriately (e.g. in the system networking scripts). The `activity` command
|
||||||
currently online and offline. For example:
|
prints the number of sources that are currently online and offline. For
|
||||||
|
example:
|
||||||
|
|
||||||
----
|
----
|
||||||
200 OK
|
200 OK
|
||||||
|
@ -349,9 +395,9 @@ makestep 1 3
|
||||||
----
|
----
|
||||||
|
|
||||||
the clock would be stepped in the first three updates if its offset was larger
|
the clock would be stepped in the first three updates if its offset was larger
|
||||||
than one second. Normally, it's recommended to allow the step only in the first
|
than one second. Normally, it is recommended to allow the step only in the first
|
||||||
few updates, but in some cases (e.g. a computer without an RTC or virtual
|
few updates, but in some cases (e.g. a computer without an RTC or virtual
|
||||||
machine which can be suspended and resumed with an incorrect time) it may be
|
machine which can be suspended and resumed with an incorrect time) it might be
|
||||||
necessary to allow the step on any clock update. The example above would change
|
necessary to allow the step on any clock update. The example above would change
|
||||||
to
|
to
|
||||||
|
|
||||||
|
@ -363,7 +409,7 @@ makestep 1 -1
|
||||||
|
|
||||||
A common issue with Windows NTP servers is that they report a very large root
|
A common issue with Windows NTP servers is that they report a very large root
|
||||||
dispersion (e.g. three seconds or more), which causes `chronyd` to ignore the
|
dispersion (e.g. three seconds or more), which causes `chronyd` to ignore the
|
||||||
server for being too inaccurate. The `sources` command may show a valid
|
server for being too inaccurate. The `sources` command might show a valid
|
||||||
measurement, but the server is not selected for synchronisation. You can check
|
measurement, but the server is not selected for synchronisation. You can check
|
||||||
the root dispersion of the server with the ``chronyc``'s `ntpdata` command.
|
the root dispersion of the server with the ``chronyc``'s `ntpdata` command.
|
||||||
|
|
||||||
|
@ -374,6 +420,29 @@ synchronisation to such a server. For example:
|
||||||
maxdistance 16.0
|
maxdistance 16.0
|
||||||
----
|
----
|
||||||
|
|
||||||
|
=== An unreachable source is selected?
|
||||||
|
|
||||||
|
When `chronyd` is configured with multiple time sources, it tries to select the
|
||||||
|
most accurate and stable sources for synchronisation of the system clock. They
|
||||||
|
are marked with the _*_ or _+_ symbol in the report printed by the `sources`
|
||||||
|
command.
|
||||||
|
|
||||||
|
When the best source (marked with the _*_ symbol) becomes unreachable (e.g. NTP
|
||||||
|
server stops responding), or the measurements are no longer accepted (e.g. a
|
||||||
|
change in network routing adds a delay), `chronyd` will not immediately switch
|
||||||
|
to the second best source in an attempt to minimise the error of the clock. It
|
||||||
|
will let the clock run free for as long as its estimated error (in terms of
|
||||||
|
root distance) based on previous measurements is smaller than the estimated
|
||||||
|
error of the second source, and there is still an interval which contains some
|
||||||
|
measurements from both sources.
|
||||||
|
|
||||||
|
If the first source was significantly better than the second source, it can
|
||||||
|
take many hours (up to 64 times the maximum polling interval) before the second
|
||||||
|
source is selected. If you do not like this behaviour, you can force a faster
|
||||||
|
reselection by increasing the clock error rate (`maxclockerror` directive),
|
||||||
|
shortening the polling interval (`maxpoll` option), or reducing the number of
|
||||||
|
samples (`maxsamples` option).
|
||||||
|
|
||||||
=== Using a PPS reference clock?
|
=== Using a PPS reference clock?
|
||||||
|
|
||||||
A pulse-per-second (PPS) reference clock requires a non-PPS time source to
|
A pulse-per-second (PPS) reference clock requires a non-PPS time source to
|
||||||
|
@ -409,15 +478,15 @@ to be used for synchronisation.
|
||||||
When accessing `chronyd` remotely, make sure that the _chrony.conf_ file (on
|
When accessing `chronyd` remotely, make sure that the _chrony.conf_ file (on
|
||||||
the computer where `chronyd` is running) has a `cmdallow` entry for the
|
the computer where `chronyd` is running) has a `cmdallow` entry for the
|
||||||
computer you are running `chronyc` on and an appropriate `bindcmdaddress`
|
computer you are running `chronyc` on and an appropriate `bindcmdaddress`
|
||||||
directive. This isn't necessary for localhost.
|
directive. This is not necessary for localhost.
|
||||||
|
|
||||||
Perhaps `chronyd` is not running. Try using the `ps` command (e.g. on Linux,
|
Perhaps `chronyd` is not running. Try using the `ps` command (e.g. on Linux,
|
||||||
`ps -auxw`) to see if it's running. Or try `netstat -a` and see if the ports
|
`ps -auxw`) to see if it is running. Or try `netstat -a` and see if the UDP
|
||||||
123/udp and 323/udp are listening. If `chronyd` is not running, you may have a
|
port 323 is listening. If `chronyd` is not running, you might have a problem
|
||||||
problem with the way you are trying to start it (e.g. at boot time).
|
with the way you are trying to start it (e.g. at boot time).
|
||||||
|
|
||||||
Perhaps you have a firewall set up in a way that blocks packets on port
|
Perhaps you have a firewall set up in a way that blocks packets on the UDP
|
||||||
323/udp. You need to amend the firewall configuration in this case.
|
port 323. You need to amend the firewall configuration in this case.
|
||||||
|
|
||||||
=== I keep getting the error `501 Not authorised`
|
=== I keep getting the error `501 Not authorised`
|
||||||
|
|
||||||
|
@ -426,20 +495,16 @@ socket instead of the Unix domain socket (e.g. _/var/run/chrony/chronyd.sock_),
|
||||||
which is required for some commands. For security reasons, only the root and
|
which is required for some commands. For security reasons, only the root and
|
||||||
_chrony_ users are allowed to access the socket.
|
_chrony_ users are allowed to access the socket.
|
||||||
|
|
||||||
It is also possible that the socket doesn't exist. `chronyd` will not create
|
It is also possible that the socket does not exist. `chronyd` will not create
|
||||||
the socket if the directory has a wrong owner or permissions. In this case
|
the socket if the directory has a wrong owner or permissions. In this case
|
||||||
there should be an error message from `chronyd` in the system log.
|
there should be an error message from `chronyd` in the system log.
|
||||||
|
|
||||||
With versions older than 2.2, which don't use the Unix domain socket, you need
|
=== What is the reference ID reported by the `tracking` command?
|
||||||
to authenticate with the `password` command first,
|
|
||||||
or use the `-a` option to authenticate automatically on start. The
|
|
||||||
configuration file needs to specify a file which contains keys (`keyfile`
|
|
||||||
directive) and which key in the key file should be used for `chronyc`
|
|
||||||
authentication (`commandkey` directive).
|
|
||||||
|
|
||||||
=== Why does `chronyc tracking` always print an IPv4 address as reference ID?
|
The reference ID is a 32-bit value used in NTP to prevent synchronisation
|
||||||
|
loops.
|
||||||
|
|
||||||
The reference ID is a 32-bit value and in versions before 3.0 it was printed in
|
In `chrony` versions before 3.0 it was printed in the
|
||||||
quad-dotted notation, even if the reference source did not actually have an
|
quad-dotted notation, even if the reference source did not actually have an
|
||||||
IPv4 address. For IPv4 addresses, the reference ID is equal to the address, but
|
IPv4 address. For IPv4 addresses, the reference ID is equal to the address, but
|
||||||
for IPv6 addresses it is the first 32 bits of the MD5 sum of the address. For
|
for IPv6 addresses it is the first 32 bits of the MD5 sum of the address. For
|
||||||
|
@ -463,7 +528,7 @@ Only by the source code. See _cmdmon.c_ (`chronyd` side) and _client.c_
|
||||||
=== What is the real-time clock (RTC)?
|
=== What is the real-time clock (RTC)?
|
||||||
|
|
||||||
This is the clock which keeps the time even when your computer is turned off.
|
This is the clock which keeps the time even when your computer is turned off.
|
||||||
It is used to initialise the system clock on boot. It normally doesn't drift
|
It is used to initialise the system clock on boot. It normally does not drift
|
||||||
more than few seconds per day.
|
more than few seconds per day.
|
||||||
|
|
||||||
There are two approaches how `chronyd` can work with it. One is to use the
|
There are two approaches how `chronyd` can work with it. One is to use the
|
||||||
|
@ -478,17 +543,17 @@ monitor the rate at which the RTC gains or loses time. When `chronyd` is
|
||||||
started with the `-s` option on the next boot, it will set the system time from
|
started with the `-s` option on the next boot, it will set the system time from
|
||||||
the RTC and also compensate for the drift it has measured previously. The
|
the RTC and also compensate for the drift it has measured previously. The
|
||||||
`rtcautotrim` directive can be used to keep the RTC close to the true time, but
|
`rtcautotrim` directive can be used to keep the RTC close to the true time, but
|
||||||
it's not strictly necessary if its only purpose is to set the system clock when
|
it is not strictly necessary if its only purpose is to set the system clock when
|
||||||
`chronyd` is started on boot. See the documentation for details.
|
`chronyd` is started on boot. See the documentation for details.
|
||||||
|
|
||||||
=== I want to use ``chronyd``'s RTC support. Must I disable `hwclock`?
|
=== Does `hwclock` have to be disabled?
|
||||||
|
|
||||||
The `hwclock` program is often set-up by default in the boot and shutdown
|
The `hwclock` program is often set-up by default in the boot and shutdown
|
||||||
scripts with many Linux installations. With the kernel RTC synchronisation
|
scripts with many Linux installations. With the kernel RTC synchronisation
|
||||||
(`rtcsync` directive), the RTC will be set also every 11 minutes as long as the
|
(`rtcsync` directive), the RTC will be set also every 11 minutes as long as the
|
||||||
system clock is synchronised. If you want to use ``chronyd``'s RTC monitoring
|
system clock is synchronised. If you want to use ``chronyd``'s RTC monitoring
|
||||||
(`rtcfile` directive), it's important to disable `hwclock` in the shutdown
|
(`rtcfile` directive), it is important to disable `hwclock` in the shutdown
|
||||||
procedure. If you don't, it will over-write the RTC with a new value, unknown
|
procedure. If you do not that, it will over-write the RTC with a new value, unknown
|
||||||
to `chronyd`. At the next reboot, `chronyd` started with the `-s` option will
|
to `chronyd`. At the next reboot, `chronyd` started with the `-s` option will
|
||||||
compensate this (wrong) time with its estimate of how far the RTC has drifted
|
compensate this (wrong) time with its estimate of how far the RTC has drifted
|
||||||
whilst the power was off, giving a meaningless initial system time.
|
whilst the power was off, giving a meaningless initial system time.
|
||||||
|
@ -507,7 +572,7 @@ things
|
||||||
|
|
||||||
=== I get `Could not open /dev/rtc, Device or resource busy` in my syslog file
|
=== I get `Could not open /dev/rtc, Device or resource busy` in my syslog file
|
||||||
|
|
||||||
Some other program running on the system may be using the device.
|
Some other program running on the system might be using the device.
|
||||||
|
|
||||||
=== What if my computer does not have an RTC or backup battery?
|
=== What if my computer does not have an RTC or backup battery?
|
||||||
|
|
||||||
|
@ -522,7 +587,7 @@ observe backward steps.
|
||||||
=== Can `chronyd` be driven from broadcast/multicast NTP servers?
|
=== Can `chronyd` be driven from broadcast/multicast NTP servers?
|
||||||
|
|
||||||
No, the broadcast/multicast client mode is not supported and there is currently
|
No, the broadcast/multicast client mode is not supported and there is currently
|
||||||
no plan to implement it. While the mode may be useful to simplify configuration
|
no plan to implement it. While this mode can simplify configuration
|
||||||
of clients in large networks, it is inherently less accurate and less secure
|
of clients in large networks, it is inherently less accurate and less secure
|
||||||
(even with authentication) than the ordinary client/server mode.
|
(even with authentication) than the ordinary client/server mode.
|
||||||
|
|
||||||
|
@ -539,7 +604,8 @@ thousands of clients using the ordinary client/server mode.
|
||||||
|
|
||||||
Yes, the `broadcast` directive can be used to enable the broadcast server mode
|
Yes, the `broadcast` directive can be used to enable the broadcast server mode
|
||||||
to serve time to clients in the network which support the broadcast client mode
|
to serve time to clients in the network which support the broadcast client mode
|
||||||
(it's not supported in `chronyd`, see the previous question).
|
(it is not supported in `chronyd`). Note that this mode should generally be
|
||||||
|
avoided. See the previous question.
|
||||||
|
|
||||||
=== Can `chronyd` keep the system clock a fixed offset away from real time?
|
=== Can `chronyd` keep the system clock a fixed offset away from real time?
|
||||||
|
|
||||||
|
@ -555,9 +621,21 @@ offline, `chronyd` would make new measurements immediately after issuing the
|
||||||
`online` command.
|
`online` command.
|
||||||
|
|
||||||
Unless the network connection lasts only few minutes (less than the maximum
|
Unless the network connection lasts only few minutes (less than the maximum
|
||||||
polling interval), the delay is usually not a problem, and it may be acceptable
|
polling interval), the delay is usually not a problem, and it might be acceptable
|
||||||
to keep all sources online all the time.
|
to keep all sources online all the time.
|
||||||
|
|
||||||
|
=== Why is an offset measured between two computers synchronised to each another?
|
||||||
|
|
||||||
|
When two computers are synchronised to each other using the client/server or
|
||||||
|
symmetric NTP mode, there is an expectation that NTP measurements between the
|
||||||
|
two computers made on both ends show an average offset close to zero.
|
||||||
|
|
||||||
|
With `chronyd` that can be expected only when the interleaved mode (`xleave`
|
||||||
|
option) is enabled. Otherwise, `chronyd` will use different transmit timestamps
|
||||||
|
(e.g. daemon timestamp vs kernel timestamp) for serving time and
|
||||||
|
synchronisation of its own clock, which creates an asymmetry in the
|
||||||
|
timestamping and causes the other end to measure a significant offset.
|
||||||
|
|
||||||
== Operating systems
|
== Operating systems
|
||||||
|
|
||||||
=== Does `chrony` support Windows?
|
=== Does `chrony` support Windows?
|
||||||
|
|
Loading…
Reference in a new issue