chrony.conf(5) - chronyd configuration file



  • CHRONY.CONF(5)		      Configuration Files		CHRONY.CONF(5)
    
    
    
    NAME
           chrony.conf - chronyd configuration file
    
    SYNOPSIS
           chrony.conf
    
    DESCRIPTION
           This file configures the chronyd daemon. The compiled-in location is
           /etc/chrony.conf, but other locations can be specified on the chronyd
           command line with the -f option.
    
           Each directive in the configuration file is placed on a separate line.
           The following sections describe each of the directives in turn. The
           directives can occur in any order in the file and they are not
           case-sensitive.
    
           The configuration directives can also be specified directly on the
           chronyd command line. In this case each argument is parsed as a new
           line and the configuration file is ignored.
    
           While the number of supported directives is large, only a few of them
           are typically needed. See the EXAMPLES section for configuration in
           typical operating scenarios.
    
           The configuration file might contain comment lines. A comment line is
           any line that starts with zero or more spaces followed by any one of
           the following characters: !, ;, #, %. Any line with this format will be
           ignored.
    
    DIRECTIVES
       Time sources
           server hostname [option]...
    	   The server directive specifies an NTP server which can be used as a
    	   time source. The client-server relationship is strictly
    	   hierarchical: a client might synchronise its system time to that of
    	   the server, but the server’s system time will never be influenced
    	   by that of a client.
    
    	   The server directive is immediately followed by either the name of
    	   the server, or its IP address. The server directive supports the
    	   following options:
    
    	   minpoll poll
    	       Although chronyd will trim the rate at which it samples the
    	       server during normal operation, the user might want to
    	       constrain the minimum polling interval. This is always defined
    	       as a power of 2, so minpoll 5 would mean that the polling
    	       interval cannot drop below 32 seconds. The default is 6 (64
    	       seconds), the minimum is -4 (1/16th of a second), and the
    	       maximum is 24 (6 months). Note that intervals shorter than 6
    	       (64 seconds) should generally not be used with public servers
    	       on the Internet, because it might be considered abuse.
    
    	   maxpoll poll
    	       In a similar way, the user might want to constrain the maximum
    	       polling interval. Again this is specified as a power of 2,
    	       maxpoll 9 indicates that the polling interval must stay at or
    	       below 512 seconds. The default is 10 (1024 seconds), the
    	       minimum is 0 (1 second), and the maximum is 24 (6 months).
    
    	   iburst
    	       If this option is set, the interval between the first four
    	       polls will be 2 seconds instead of minpoll. This is useful to
    	       quickly get the first update of the clock after chronyd is
    	       started.
    
    	   key id
    	       The NTP protocol supports the inclusion of checksums in the
    	       packets, to prevent computers having their system time upset by
    	       rogue packets being sent to them. The checksums are generated
    	       as a function of a password, using the cryptographic hash
    	       function set in the key file, which is specified by the keyfile
    	       directive.
    
    	       If the key option is present, chronyd will attempt to use
    	       authenticated packets when communicating with this server. The
    	       key number used will be the single argument to the key option
    	       (an unsigned integer in the range 1 through 2^32-1). The server
    	       must have the same password for this key number configured,
    	       otherwise no relationship between the computers will be
    	       possible.
    
    	   maxdelay delay
    	       chronyd uses the network round-trip delay to the server to
    	       determine how accurate a particular measurement is likely to
    	       be. Long round-trip delays indicate that the request, or the
    	       response, or both were delayed. If only one of the messages was
    	       delayed the measurement error is likely to be substantial.
    
    	       For small variations in the round-trip delay, chronyd uses a
    	       weighting scheme when processing the measurements. However,
    	       beyond a certain level of delay the measurements are likely to
    	       be so corrupted as to be useless. (This is particularly so on
    	       dial-up or other slow links, where a long delay probably
    	       indicates a highly asymmetric delay caused by the response
    	       waiting behind a lot of packets related to a download of some
    	       sort).
    
    	       If the user knows that round trip delays above a certain level
    	       should cause the measurement to be ignored, this level can be
    	       defined with the maxdelay option. For example, maxdelay 0.3
    	       would indicate that measurements with a round-trip delay of 0.3
    	       seconds or more should be ignored. The default value is 3
    	       seconds and the maximum value is 1000 seconds.
    
    	   maxdelayratio ratio
    	       This option is similar to the maxdelay option above. chronyd
    	       keeps a record of the minimum round-trip delay amongst the
    	       previous measurements that it has buffered. If a measurement
    	       has a round trip delay that is greater than the maxdelayratio
    	       times the minimum delay, it will be rejected.
    
    	   maxdelaydevratio ratio
    	       If a measurement has a ratio of the increase in the round-trip
    	       delay from the minimum delay amongst the previous measurements
    	       to the standard deviation of the previous measurements that is
    	       greater than the specified ratio, it will be rejected. The
    	       default is 10.0.
    
    	   mindelay delay
    	       This options specifies a fixed minimum round-trip delay to be
    	       used instead of the minimum amongst the previous measurements.
    	       This can be useful in networks with static configuration to
    	       improve the stability of corrections for asymmetric jitter,
    	       weighting of the measurements, and the maxdelayratio and
    	       maxdelaydevratio tests. The value should be set accurately in
    	       order to have a positive effect on the synchronisation.
    
    	   asymmetry ratio
    	       This options specifies the asymmetry of the network jitter on
    	       the path to the source, which is used to correct the measured
    	       offset according to the delay. The asymmetry can be between
    	       -0.5 and +0.5. A negative value means the delay of packets sent
    	       to the source is more variable than the delay of packets sent
    	       from the source back. By default, chronyd estimates the
    	       asymmetry automatically.
    
    	   offset offset
    	       This option specifies a correction (in seconds) which will be
    	       applied to offsets measured with this source. It’s particularly
    	       useful to compensate for a known asymmetry in network delay or
    	       timestamping errors. For example, if packets sent to the source
    	       were on average delayed by 100 microseconds more than packets
    	       sent from the source back, the correction would be -0.00005
    	       (-50 microseconds). The default is 0.0.
    
    	   minsamples samples
    	       Set the minimum number of samples kept for this source. This
    	       overrides the minsamples directive.
    
    	   maxsamples samples
    	       Set the maximum number of samples kept for this source. This
    	       overrides the maxsamples directive.
    
    	   offline
    	       If the server will not be reachable when chronyd is started,
    	       the offline option can be specified. chronyd will not try to
    	       poll the server until it is enabled to do so (by using the
    	       online command in chronyc).
    
    	   auto_offline
    	       If this option is set, the server will be assumed to have gone
    	       offline when 2 requests have been sent to it without receiving
    	       a response. This option avoids the need to run the offline
    	       command from chronyc when disconnecting the network link. (It
    	       will still be necessary to use the online command when the link
    	       has been established, to enable measurements to start.)
    
    	   prefer
    	       Prefer this source over sources without prefer option.
    
    	   noselect
    	       Never select this source. This is particularly useful for
    	       monitoring.
    
    	   trust
    	       Assume time from this source is always true. It can be rejected
    	       as a falseticker in the source selection only if another source
    	       with this option does not agree with it.
    
    	   require
    	       Require that at least one of the sources specified with this
    	       option is selectable (i.e. recently reachable and not a
    	       falseticker) before updating the clock. Together with the trust
    	       option this might be useful to allow a trusted authenticated
    	       source to be safely combined with unauthenticated sources in
    	       order to improve the accuracy of the clock. They can be
    	       selected and used for synchronisation only if they agree with
    	       the trusted and required source.
    
    	   xleave
    	       This option enables an interleaved mode which allows the server
    	       or the peer to send transmit timestamps captured after the
    	       actual transmission (e.g. when the server or the peer is
    	       running chronyd with software (kernel) or hardware
    	       timestamping). This can significantly improve the accuracy of
    	       the measurements.
    
    	       The interleaved mode is compatible with servers that support
    	       only the basic mode, but peers must both support and have
    	       enabled the interleaved mode, otherwise the synchronisation
    	       will work only in one direction. Note that even servers that
    	       support the interleaved mode might respond in the basic mode as
    	       the interleaved mode requires the servers to keep some state
    	       for each client and the state might be dropped when there are
    	       too many clients (e.g. clientloglimit is too small), or it
    	       might be overwritten by other clients that have the same IP
    	       address (e.g. computers behind NAT or someone sending requests
    	       with a spoofed source address).
    
    	       The xleave option can be combined with the presend option in
    	       order to shorten the interval in which the server has to keep
    	       the state to be able to respond in the interleaved mode.
    
    	   polltarget target
    	       Target number of measurements to use for the regression
    	       algorithm which chronyd will try to maintain by adjusting the
    	       polling interval between minpoll and maxpoll. A higher target
    	       makes chronyd prefer shorter polling intervals. The default is
    	       8 and a useful range is from 6 to 60.
    
    	   port port
    	       This option allows the UDP port on which the server understands
    	       NTP requests to be specified. For normal servers this option
    	       should not be required (the default is 123, the standard NTP
    	       port).
    
    	   presend poll
    	       If the timing measurements being made by chronyd are the only
    	       network data passing between two computers, you might find that
    	       some measurements are badly skewed due to either the client or
    	       the server having to do an ARP lookup on the other party prior
    	       to transmitting a packet. This is more of a problem with long
    	       sampling intervals, which might be similar in duration to the
    	       lifetime of entries in the ARP caches of the machines.
    
    	       In order to avoid this problem, the presend option can be used.
    	       It takes a single integer argument, which is the smallest
    	       polling interval for which an extra pair of NTP packets will be
    	       exchanged between the client and the server prior to the actual
    	       measurement. For example, with the following option included in
    	       a server directive:
    
    		   presend 9
    
    	       when the polling interval is 512 seconds or more, an extra NTP
    	       client packet will be sent to the server a short time (2
    	       seconds) before making the actual measurement.
    
    	       The presend option cannot be used in the peer directive. If it
    	       is used with the xleave option, chronyd will send two extra
    	       packets instead of one.
    
    	   minstratum stratum
    	       When the synchronisation source is selected from available
    	       sources, sources with lower stratum are normally slightly
    	       preferred. This option can be used to increase stratum of the
    	       source to the specified minimum, so chronyd will avoid
    	       selecting that source. This is useful with low stratum sources
    	       that are known to be unreliable or inaccurate and which should
    	       be used only when other sources are unreachable.
    
    	   version version
    	       This option sets the NTP version of packets sent to the server.
    	       This can be useful when the server runs an old NTP
    	       implementation that does not respond to requests using a newer
    	       version. The default version depends on whether a key is
    	       specified by the key option and which authentication hash
    	       function the key is using. If the output size of the hash
    	       function is longer than 160 bits, the default version is 3 for
    	       compatibility with older chronyd servers. Otherwise, the
    	       default version is 4.
    
           pool name [option]...
    	   The syntax of this directive is similar to that for the server
    	   directive, except that it is used to specify a pool of NTP servers
    	   rather than a single NTP server. The pool name is expected to
    	   resolve to multiple addresses which might change over time.
    
    	   All options valid in the server directive can be used in this
    	   directive too. There is one option specific to the pool directive:
    	   maxsources sets the maximum number of sources that can be used from
    	   the pool, the default value is 4.
    
    	   On start, when the pool name is resolved, chronyd will add up to 16
    	   sources, one for each resolved address. When the number of sources
    	   from which at least one valid reply was received reaches the number
    	   specified by the maxsources option, the other sources will be
    	   removed. When a pool source is unreachable, marked as a
    	   falseticker, or has a distance larger than the limit set by the
    	   maxdistance directive, chronyd will try to replace the source with
    	   a newly resolved address from the pool.
    
    	   An example of the pool directive is
    
    	       pool pool.ntp.org iburst maxsources 3
    
           peer hostname [option]...
    	   The syntax of this directive is identical to that for the server
    	   directive, except that it specifies a symmetric association with an
    	   NTP peer instead of a client/server association with an NTP server.
    	   A single symmetric association allows the peers to be both servers
    	   and clients to each other. This is mainly useful when the NTP
    	   implementation of the peer (e.g. ntpd) supports ephemeral symmetric
    	   associations and does not need to be configured with an address of
    	   this host. chronyd does not support ephemeral associations.
    
    	   When a key is specified by the key option to enable authentication,
    	   both peers must use the same key and the same key number.
    
    	   Note that the symmetric mode is less secure than the client/server
    	   mode. A denial-of-service attack is possible on unauthenticated
    	   symmetric associations, i.e. when the peer was specified without
    	   the key option. An attacker who does not see network traffic
    	   between two hosts, but knows that they are peering with each other,
    	   can periodically send them unauthenticated packets with spoofed
    	   source addresses in order to disrupt their NTP state and prevent
    	   them from synchronising to each other. When the association is
    	   authenticated, an attacker who does see the network traffic, but
    	   cannot prevent the packets from reaching the other host, can still
    	   disrupt the state by replaying old packets. The attacker has
    	   effectively the same power as a man-in-the-middle attacker. A
    	   partial protection against this attack is implemented in chronyd,
    	   which can protect the peers if they are using the same polling
    	   interval and they never sent an authenticated packet with a
    	   timestamp from future, but it should not be relied on as it is
    	   difficult to ensure the conditions are met. If two hosts should be
    	   able to synchronise to each other in both directions, it is
    	   recommended to use two separate client/server associations
    	   (specified by the server directive on both hosts) instead.
    
           initstepslew step-threshold [hostname]...
    	   In normal operation, chronyd slews the time when it needs to adjust
    	   the system clock. For example, to correct a system clock which is 1
    	   second slow, chronyd slightly increases the amount by which the
    	   system clock is advanced on each clock interrupt, until the error
    	   is removed. Note that at no time does time run backwards with this
    	   method.
    
    	   On most Unix systems it is not desirable to step the system clock,
    	   because many programs rely on time advancing monotonically
    	   forwards.
    
    	   When the chronyd daemon is initially started, it is possible that
    	   the system clock is considerably in error. Attempting to correct
    	   such an error by slewing might not be sensible, since it might take
    	   several hours to correct the error by this means.
    
    	   The purpose of the initstepslew directive is to allow chronyd to
    	   make a rapid measurement of the system clock error at boot time,
    	   and to correct the system clock by stepping before normal operation
    	   begins. Since this would normally be performed only at an
    	   appropriate point in the system boot sequence, no other software
    	   should be adversely affected by the step.
    
    	   If the correction required is less than a specified threshold, a
    	   slew is used instead. This makes it safer to restart chronyd whilst
    	   the system is in normal operation.
    
    	   The initstepslew directive takes a threshold and a list of NTP
    	   servers as arguments. Each of the servers is rapidly polled several
    	   times, and a majority voting mechanism used to find the most likely
    	   range of system clock error that is present. A step or slew is
    	   applied to the system clock to correct this error. chronyd then
    	   enters its normal operating mode.
    
    	   An example of the use of the directive is:
    
    	       initstepslew 30 foo.example.net bar.example.net
    
    	   where 2 NTP servers are used to make the measurement. The 30
    	   indicates that if the system’s error is found to be 30 seconds or
    	   less, a slew will be used to correct it; if the error is above 30
    	   seconds, a step will be used.
    
    	   The initstepslew directive can also be used in an isolated LAN
    	   environment, where the clocks are set manually. The most stable
    	   computer is chosen as the master, and the other computers are
    	   slaved to it. If each of the slaves is configured with the local
    	   directive, the master can be set up with an initstepslew directive
    	   which references some or all of the slaves. Then, if the master
    	   machine has to be rebooted, the slaves can be relied on to act
    	   analogously to a flywheel and preserve the time for a short period
    	   while the master completes its reboot.
    
    	   The initstepslew directive is functionally similar to a combination
    	   of the makestep and server directives with the iburst option. The
    	   main difference is that the initstepslew servers are used only
    	   before normal operation begins and that the foreground chronyd
    	   process waits for initstepslew to finish before exiting. This is
    	   useful to prevent programs started in the boot sequence after
    	   chronyd from reading the clock before it has been stepped.
    
           refclock driver parameter[:option,...] [option]...
    	   The refclock directive specifies a hardware reference clock to be
    	   used as a time source. It has two mandatory parameters, a driver
    	   name and a driver-specific parameter. The two parameters are
    	   followed by zero or more refclock options. Some drivers have
    	   special options, which can be appended to the driver-specific
    	   parameter (separated by the : and , characters).
    
    	   There are four drivers included in chronyd:
    
    	   PPS
    	       Driver for the kernel PPS (pulse per second) API. The parameter
    	       is the path to the PPS device (typically /dev/pps?). As PPS
    	       refclocks do not supply full time, another time source (e.g.
    	       NTP server or non-PPS refclock) is needed to complete samples
    	       from the PPS refclock. An alternative is to enable the local
    	       directive to allow synchronisation with some unknown but
    	       constant offset. The driver supports the following option:
    
    	       clear
    		   By default, the PPS refclock uses assert events (rising
    		   edge) for synchronisation. With this option, it will use
    		   clear events (falling edge) instead.
    
    
    	       Examples:
    
    		   refclock PPS /dev/pps0 lock NMEA refid GPS
    		   refclock SHM 0 offset 0.5 delay 0.2 refid NMEA noselect
    		   refclock PPS /dev/pps1:clear refid GPS2
    
    	   SHM
    	       NTP shared memory driver. This driver uses a shared memory
    	       segment to receive samples from another process (e.g. gpsd).
    	       The parameter is the number of the shared memory segment,
    	       typically a small number like 0, 1, 2, or 3. The driver
    	       supports the following option:
    
    	       perm=mode
    		   This option specifies the permissions of the shared memory
    		   segment created by chronyd. They are specified as a numeric
    		   mode. The default value is 0600 (read-write access for
    		   owner only).
    
    
    
    	       Examples:
    
    		   refclock SHM 0 poll 3 refid GPS1
    		   refclock SHM 1:perm=0644 refid GPS2
    
    	   SOCK
    	       Unix domain socket driver. It is similar to the SHM driver, but
    	       samples are received from a Unix domain socket instead of
    	       shared memory and the messages have a different format. The
    	       parameter is the path to the socket, which chronyd creates on
    	       start. An advantage over the SHM driver is that SOCK does not
    	       require polling and it can receive PPS samples with incomplete
    	       time. The format of the messages is described in the
    	       refclock_sock.c file in the chrony source code.
    
    	       An application which supports the SOCK protocol is the gpsd
    	       daemon. The path where gpsd expects the socket to be created is
    	       described in the gpsd(8) man page. For example:
    
    		   refclock SOCK /var/run/chrony.ttyS0.sock
    
    	   PHC
    	       PTP hardware clock (PHC) driver. The parameter is the path to
    	       the device of the PTP clock which should be used as a time
    	       source. If the clock is kept in TAI instead of UTC (e.g. it is
    	       synchronised by a PTP daemon), the current UTC-TAI offset needs
    	       to be specified by the offset option. Alternatively, the pps
    	       refclock option can be enabled to treat the PHC as a PPS
    	       refclock, using only the sub-second offset for synchronisation.
    	       The driver supports the following options:
    
    	       nocrossts
    		   This option disables use of precise cross timestamping.
    
    	       extpps
    		   This option enables a PPS mode in which the PTP clock is
    		   timestamping pulses of an external PPS signal connected to
    		   the clock. The clock does not need to be synchronised, but
    		   another time source is needed to complete the PPS samples.
    		   Note that some PTP clocks cannot be configured to timestamp
    		   only assert or clear events, and it is necessary to use the
    		   width option to filter wrong PPS samples.
    
    	       pin=index
    		   This option specifies the index of the pin to which is
    		   connected the PPS signal. The default value is 0.
    
    	       channel=index
    		   This option specifies the index of the channel for the PPS
    		   mode. The default value is 0.
    
    	       clear
    		   This option enables timestamping of clear events (falling
    		   edge) instead of assert events (rising edge) in the PPS
    		   mode. This may not work with some clocks.
    
    
    
    	       Examples:
    
    		   refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37
    		   refclock PHC /dev/ptp1:nocrossts poll 3 pps
    		   refclock PHC /dev/ptp2:extpps,pin=1 width 0.2 poll 2
    
    
    	   The refclock directive supports the following options:
    
    	   poll poll
    	       Timestamps produced by refclock drivers are not used
    	       immediately, but they are stored and processed by a median
    	       filter in the polling interval specified by this option. This
    	       is defined as a power of 2 and can be negative to specify a
    	       sub-second interval. The default is 4 (16 seconds). A shorter
    	       interval allows chronyd to react faster to changes in the
    	       frequency of the system clock, but it might have a negative
    	       effect on its accuracy if the samples have a lot of jitter.
    
    	   dpoll dpoll
    	       Some drivers do not listen for external events and try to
    	       produce samples in their own polling interval. This is defined
    	       as a power of 2 and can be negative to specify a sub-second
    	       interval. The default is 0 (1 second).
    
    	   refid refid
    	       This option is used to specify the reference ID of the
    	       refclock, as up to four ASCII characters. The default reference
    	       ID is composed from the first three characters of the driver
    	       name and the number of the refclock. Each refclock must have a
    	       unique reference ID.
    
    	   lock refid
    	       This option can be used to lock a PPS refclock to another
    	       refclock, which is specified by its reference ID. In this mode
    	       received PPS samples are paired directly with raw samples from
    	       the specified refclock.
    
    	   rate rate
    	       This option sets the rate of the pulses in the PPS signal (in
    	       Hz). This option controls how the pulses will be completed with
    	       real time. To actually receive more than one pulse per second,
    	       a negative dpoll has to be specified (-3 for a 5Hz signal). The
    	       default is 1.
    
    	   maxlockage pulses
    	       This option specifies in number of pulses how old can be
    	       samples from the refclock specified by the lock option to be
    	       paired with the pulses. Increasing this value is useful when
    	       the samples are produced at a lower rate than the pulses. The
    	       default is 2.
    
    	   width width
    	       This option specifies the width of the pulses (in seconds). It
    	       is used to filter PPS samples when the driver provides samples
    	       for both rising and falling edges. Note that it reduces the
    	       maximum allowed error of the time source which completes the
    	       PPS samples. If the duty cycle is configurable, 50% should be
    	       preferred in order to maximise the allowed error.
    
    	   pps
    	       This options forces chronyd to treat any refclock (e.g. SHM or
    	       PHC) as a PPS refclock. This can be useful when the refclock
    	       provides time with a variable offset of a whole number of
    	       seconds (e.g. it uses TAI instead of UTC). Another time source
    	       is needed to complete samples from the refclock.
    
    	   offset offset
    	       This option can be used to compensate for a constant error. The
    	       specified offset (in seconds) is applied to all samples
    	       produced by the reference clock. The default is 0.0.
    
    	   delay delay
    	       This option sets the NTP delay of the source (in seconds). Half
    	       of this value is included in the maximum assumed error which is
    	       used in the source selection algorithm. Increasing the delay is
    	       useful to avoid having no majority in the source selection or
    	       to make it prefer other sources. The default is 1e-9 (1
    	       nanosecond).
    
    	   precision precision
    	       This option sets the precision of the reference clock (in
    	       seconds). The default value is the estimated precision of the
    	       system clock.
    
    	   maxdispersion dispersion
    	       Maximum allowed dispersion for filtered samples (in seconds).
    	       Samples with larger estimated dispersion are ignored. By
    	       default, this limit is disabled.
    
    	   filter samples
    	       This option sets the length of the median filter which is used
    	       to reduce the noise in the measurements. With each poll about
    	       40 percent of the stored samples are discarded and one final
    	       sample is calculated as an average of the remaining samples. If
    	       the length is 4 or more, at least 4 samples have to be
    	       collected between polls. For lengths below 4, the filter has to
    	       be full. The default is 64.
    
    	   prefer
    	       Prefer this source over sources without the prefer option.
    
    	   noselect
    	       Never select this source. This is useful for monitoring or with
    	       sources which are not very accurate, but are locked with a PPS
    	       refclock.
    
    	   trust
    	       Assume time from this source is always true. It can be rejected
    	       as a falseticker in the source selection only if another source
    	       with this option does not agree with it.
    
    	   require
    	       Require that at least one of the sources specified with this
    	       option is selectable (i.e. recently reachable and not a
    	       falseticker) before updating the clock. Together with the trust
    	       option this can be useful to allow a trusted, but not very
    	       precise, reference clock to be safely combined with
    	       unauthenticated NTP sources in order to improve the accuracy of
    	       the clock. They can be selected and used for synchronisation
    	       only if they agree with the trusted and required source.
    
    	   minsamples samples
    	       Set the minimum number of samples kept for this source. This
    	       overrides the minsamples directive.
    
    	   maxsamples samples
    	       Set the maximum number of samples kept for this source. This
    	       overrides the maxsamples directive.
    
           manual
    	   The manual directive enables support at run-time for the settime
    	   command in chronyc. If no manual directive is included, any attempt
    	   to use the settime command in chronyc will be met with an error
    	   message.
    
    	   Note that the settime command can be enabled at run-time using the
    	   manual command in chronyc. (The idea of the two commands is that
    	   the manual command controls the manual clock driver’s behaviour,
    	   whereas the settime command allows samples of manually entered time
    	   to be provided.)
    
           acquisitionport port
    	   By default, chronyd uses a separate client socket for each
    	   configured server and their source port is chosen arbitrarily by
    	   the operating system. However, you can use the acquisitionport
    	   directive to explicitly specify a port and use only one socket (per
    	   IPv4 or IPv6 address family) for all configured servers. This can
    	   be useful for getting through some firewalls. If set to 0, the
    	   source port of the socket will be chosen arbitrarily.
    
    	   It can be set to the same port as is used by the NTP server (which
    	   can be configured with the port directive) to use only one socket
    	   for all NTP packets.
    
    	   An example of the acquisitionport directive is:
    
    	       acquisitionport 1123
    
    	   This would change the source port used for client requests to UDP
    	   port 1123. You could then persuade the firewall administrator to
    	   open that port.
    
           bindacqaddress address
    	   The bindacqaddress directive sets the network interface to which
    	   chronyd will bind its NTP client sockets. The syntax is similar to
    	   the bindaddress and bindcmdaddress directives.
    
    	   For each of the IPv4 and IPv6 protocols, only one bindacqaddress
    	   directive can be specified.
    
           dumpdir directory
    	   To compute the rate of gain or loss of time, chronyd has to store a
    	   measurement history for each of the time sources it uses.
    
    	   All supported systems, with the exception of macOS 10.12 and
    	   earlier, have operating system support for setting the rate of gain
    	   or loss to compensate for known errors. (On macOS 10.12 and
    	   earlier, chronyd must simulate such a capability by periodically
    	   slewing the system clock forwards or backwards by a suitable amount
    	   to compensate for the error built up since the previous slew.)
    
    	   For such systems, it is possible to save the measurement history
    	   across restarts of chronyd (assuming no changes are made to the
    	   system clock behaviour whilst it is not running). The dumpdir
    	   directive defines the directory where the measurement histories are
    	   saved when chronyd exits, or the dump command in chronyc is issued.
    
    	   An example of the directive is:
    
    	       dumpdir /var/run/chrony
    
    	   A source whose IP address is 1.2.3.4 would have its measurement
    	   history saved in the file /var/run/chrony/1.2.3.4.dat. History of
    	   reference clocks is saved to files named by their reference ID in
    	   form of refid:XXXXXXXX.dat.
    
           maxsamples samples
    	   The maxsamples directive sets the default maximum number of samples
    	   that chronyd should keep for each source. This setting can be
    	   overridden for individual sources in the server and refclock
    	   directives. The default value is 0, which disables the configurable
    	   limit. The useful range is 4 to 64.
    
           minsamples samples
    	   The minsamples directive sets the default minimum number of samples
    	   that chronyd should keep for each source. This setting can be
    	   overridden for individual sources in the server and refclock
    	   directives. The default value is 6. The useful range is 4 to 64.
    
       Source selection
           combinelimit limit
    	   When chronyd has multiple sources available for synchronisation, it
    	   has to select one source as the synchronisation source. The
    	   measured offsets and frequencies of the system clock relative to
    	   the other sources, however, can be combined with the selected
    	   source to improve the accuracy of the system clock.
    
    	   The combinelimit directive limits which sources are included in the
    	   combining algorithm. Their synchronisation distance has to be
    	   shorter than the distance of the selected source multiplied by the
    	   value of the limit. Also, their measured frequencies have to be
    	   close to the frequency of the selected source.
    
    	   By default, the limit is 3. Setting the limit to 0 effectively
    	   disables the source combining algorithm and only the selected
    	   source will be used to control the system clock.
    
           maxdistance distance
    	   The maxdistance directive sets the maximum allowed root distance of
    	   the sources to not be rejected by the source selection algorithm.
    	   The distance includes the accumulated dispersion, which might be
    	   large when the source is no longer synchronised, and half of the
    	   total round-trip delay to the primary source.
    
    	   By default, the maximum root distance is 3 seconds.
    
    	   Setting maxdistance to a larger value can be useful to allow
    	   synchronisation with a server that only has a very infrequent
    	   connection to its sources and can accumulate a large dispersion
    	   between updates of its clock.
    
           maxjitter jitter
    	   The maxjitter directive sets the maximum allowed jitter of the
    	   sources to not be rejected by the source selection algorithm. This
    	   prevents synchronisation with sources that have a small root
    	   distance, but their time is too variable.
    
    	   By default, the maximum jitter is 1 second.
    
           minsources sources
    	   The minsources directive sets the minimum number of sources that
    	   need to be considered as selectable in the source selection
    	   algorithm before the local clock is updated. The default value is
    	   1.
    
    	   Setting this option to a larger number can be used to improve the
    	   reliability. More sources will have to agree with each other and
    	   the clock will not be updated when only one source (which could be
    	   serving incorrect time) is reachable.
    
           reselectdist distance
    	   When chronyd selects a synchronisation source from available
    	   sources, it will prefer the one with the shortest synchronisation
    	   distance. However, to avoid frequent reselecting when there are
    	   sources with similar distance, a fixed distance is added to the
    	   distance for sources that are currently not selected. This can be
    	   set with the reselectdist directive. By default, the distance is
    	   100 microseconds.
    
           stratumweight distance
    	   The stratumweight directive sets how much distance should be added
    	   per stratum to the synchronisation distance when chronyd selects
    	   the synchronisation source from available sources.
    
    	   By default, the weight is 0.001 seconds. This means that the
    	   stratum of the sources in the selection process matters only when
    	   the differences between the distances are in milliseconds.
    
       System clock
           corrtimeratio ratio
    	   When chronyd is slewing the system clock to correct an offset, the
    	   rate at which it is slewing adds to the frequency error of the
    	   clock. On all supported systems, with the exception of macOS 12 and
    	   earlier, this rate can be controlled.
    
    	   The corrtimeratio directive sets the ratio between the duration in
    	   which the clock is slewed for an average correction according to
    	   the source history and the interval in which the corrections are
    	   done (usually the NTP polling interval). Corrections larger than
    	   the average take less time and smaller corrections take more time,
    	   the amount of the correction and the correction time are inversely
    	   proportional.
    
    	   Increasing corrtimeratio improves the overall frequency error of
    	   the system clock, but increases the overall time error as the
    	   corrections take longer.
    
    	   By default, the ratio is set to 3, the time accuracy of the clock
    	   is preferred over its frequency accuracy.
    
    	   The maximum allowed slew rate can be set by the maxslewrate
    	   directive. The current remaining correction is shown in the
    	   tracking report as the System time value.
    
           driftfile file
    	   One of the main activities of the chronyd program is to work out
    	   the rate at which the system clock gains or loses time relative to
    	   real time.
    
    	   Whenever chronyd computes a new value of the gain or loss rate, it
    	   is desirable to record it somewhere. This allows chronyd to begin
    	   compensating the system clock at that rate whenever it is
    	   restarted, even before it has had a chance to obtain an equally
    	   good estimate of the rate during the new run. (This process can
    	   take many minutes, at least.)
    
    	   The driftfile directive allows a file to be specified into which
    	   chronyd can store the rate information. Two parameters are recorded
    	   in the file. The first is the rate at which the system clock gains
    	   or loses time, expressed in parts per million, with gains positive.
    	   Therefore, a value of 100.0 indicates that when the system clock
    	   has advanced by a second, it has gained 100 microseconds in reality
    	   (so the true time has only advanced by 999900 microseconds). The
    	   second is an estimate of the error bound around the first value in
    	   which the true rate actually lies.
    
    	   An example of the driftfile directive is:
    
    	       driftfile /var/lib/chrony/drift
    
           fallbackdrift min-interval max-interval
    	   Fallback drifts are long-term averages of the system clock drift
    	   calculated over exponentially increasing intervals. They are used
    	   when the clock is no longer synchronised to avoid quickly drifting
    	   away from true time if there was a short-term deviation in the
    	   drift before the synchronisation was lost.
    
    	   The directive specifies the minimum and maximum interval since the
    	   last clock update to switch between fallback drifts. They are
    	   defined as a power of 2 (in seconds). The syntax is as follows:
    
    	       fallbackdrift 16 19
    
    	   In this example, the minimum interval is 16 (18 hours) and the
    	   maximum interval is 19 (6 days). The system clock frequency will be
    	   set to the first fallback 18 hours after last clock update, to the
    	   second after 36 hours, etc. This might be a good setting to cover
    	   daily and weekly temperature fluctuations.
    
    	   By default (or if the specified maximum or minimum is 0), no
    	   fallbacks are used and the clock frequency changes only with new
    	   measurements from NTP sources, reference clocks, or manual input.
    
           leapsecmode mode
    	   A leap second is an adjustment that is occasionally applied to UTC
    	   to keep it close to the mean solar time. When a leap second is
    	   inserted, the last day of June or December has an extra second
    	   23:59:60.
    
    	   For computer clocks that is a problem. The Unix time is defined as
    	   number of seconds since 00:00:00 UTC on 1 January 1970 without leap
    	   seconds. The system clock cannot have time 23:59:60, every minute
    	   has 60 seconds and every day has 86400 seconds by definition. The
    	   inserted leap second is skipped and the clock is suddenly ahead of
    	   UTC by one second. The leapsecmode directive selects how that error
    	   is corrected. There are four options:
    
    	   system
    	       When inserting a leap second, the kernel steps the system clock
    	       backwards by one second when the clock gets to 00:00:00 UTC.
    	       When deleting a leap second, it steps forward by one second
    	       when the clock gets to 23:59:59 UTC. This is the default mode
    	       when the system driver supports leap seconds (i.e. all
    	       supported systems with the exception of macOS 12 and earlier).
    
    	   step
    	       This is similar to the system mode, except the clock is stepped
    	       by chronyd instead of the kernel. It can be useful to avoid
    	       bugs in the kernel code that would be executed in the system
    	       mode. This is the default mode when the system driver does not
    	       support leap seconds.
    
    	   slew
    	       The clock is corrected by slewing started at 00:00:00 UTC when
    	       a leap second is inserted or 23:59:59 UTC when a leap second is
    	       deleted. This might be preferred over the system and step modes
    	       when applications running on the system are sensitive to jumps
    	       in the system time and it is acceptable that the clock will be
    	       off for a longer time. On Linux with the default maxslewrate
    	       value the correction takes 12 seconds.
    
    	   ignore
    	       No correction is applied to the clock for the leap second. The
    	       clock will be corrected later in normal operation when new
    	       measurements are made and the estimated offset includes the one
    	       second error.
    
    
    
    	   When serving time to NTP clients that cannot be configured to
    	   correct their clocks for a leap second by slewing, or to clients
    	   that would correct at slightly different rates when it is necessary
    	   to keep them close together, the slew mode can be combined with the
    	   smoothtime directive to enable a server leap smear.
    
    	   When smearing a leap second, the leap status is suppressed on the
    	   server and the served time is corrected slowly be slewing instead
    	   of stepping. The clients do not need any special configuration as
    	   they do not know there is any leap second and they follow the
    	   server time which eventually brings them back to UTC. Care must be
    	   taken to ensure they use only NTP servers which smear the leap
    	   second in exactly the same way for synchronisation.
    
    	   This feature must be used carefully, because the server is
    	   intentionally not serving its best estimate of the true time.
    
    	   A recommended configuration to enable a server leap smear is:
    
    	       leapsecmode slew
    	       maxslewrate 1000
    	       smoothtime 400 0.001 leaponly
    
    	   The first directive is necessary to disable the clock step which
    	   would reset the smoothing process. The second directive limits the
    	   slewing rate of the local clock to 1000 ppm, which improves the
    	   stability of the smoothing process when the local correction starts
    	   and ends. The third directive enables the server time smoothing
    	   process. It will start when the clock gets to 00:00:00 UTC and it
    	   will take 17 hours 34 minutes to finish. The frequency offset will
    	   be changing by 0.001 ppm per second and will reach a maximum of
    	   31.623 ppm. The leaponly option makes the duration of the leap
    	   smear constant and allows the clients to safely synchronise with
    	   multiple identically configured leap smearing servers.
    
           leapsectz timezone
    	   This directive specifies a timezone in the system tz database which
    	   chronyd can use to determine when will the next leap second occur
    	   and what is the current offset between TAI and UTC. It will
    	   periodically check if 23:59:59 and 23:59:60 are valid times in the
    	   timezone. This typically works with the right/UTC timezone.
    
    	   When a leap second is announced, the timezone needs to be updated
    	   at least 12 hours before the leap second. It is not necessary to
    	   restart chronyd.
    
    	   This directive is useful with reference clocks and other time
    	   sources which do not announce leap seconds, or announce them too
    	   late for an NTP server to forward them to its own clients. Clients
    	   of leap smearing servers must not use this directive.
    
    	   It is also useful when the system clock is required to have correct
    	   TAI-UTC offset. Note that the offset is set only when leap seconds
    	   are handled by the kernel, i.e. leapsecmode is set to system.
    
    	   An example of the directive is:
    
    	       leapsectz right/UTC
    
    	   The following shell command verifies that the timezone contains
    	   leap seconds and can be used with this directive:
    
    	       $ TZ=right/UTC date -d 'Dec 31 2008 23:59:60'
    	       Wed Dec 31 23:59:60 UTC 2008
    
           makestep threshold limit
    	   Normally chronyd will cause the system to gradually correct any
    	   time offset, by slowing down or speeding up the clock as required.
    	   In certain situations, the system clock might be so far adrift that
    	   this slewing process would take a very long time to correct the
    	   system clock.
    
    	   This directive forces chronyd to step the system clock if the
    	   adjustment is larger than a threshold value, but only if there were
    	   no more clock updates since chronyd was started than a specified
    	   limit (a negative value can be used to disable the limit).
    
    	   This is particularly useful when using reference clocks, because
    	   the initstepslew directive works only with NTP sources.
    
    	   An example of the use of this directive is:
    
    	       makestep 0.1 3
    
    	   This would step the system clock if the adjustment is larger than
    	   0.1 seconds, but only in the first three clock updates.
    
           maxchange offset start ignore
    	   This directive sets the maximum allowed offset corrected on a clock
    	   update. The check is performed only after the specified number of
    	   updates to allow a large initial adjustment of the system clock.
    	   When an offset larger than the specified maximum occurs, it will be
    	   ignored for the specified number of times and then chronyd will
    	   give up and exit (a negative value can be used to never exit). In
    	   both cases a message is sent to syslog.
    
    	   An example of the use of this directive is:
    
    	       maxchange 1000 1 2
    
    	   After the first clock update, chronyd will check the offset on
    	   every clock update, it will ignore two adjustments larger than 1000
    	   seconds and exit on another one.
    
           maxclockerror error-in-ppm
    	   The maxclockerror directive sets the maximum assumed frequency
    	   error that the system clock can gain on its own between clock
    	   updates. It describes the stability of the clock.
    
    	   By default, the maximum error is 1 ppm.
    
    	   Typical values for error-in-ppm might be 10 for a low quality clock
    	   and 0.1 for a high quality clock using a temperature compensated
    	   crystal oscillator.
    
           maxdrift drift-in-ppm
    	   This directive specifies the maximum assumed drift (frequency
    	   error) of the system clock. It limits the frequency adjustment that
    	   chronyd is allowed to use to correct the measured drift. It is an
    	   additional limit to the maximum adjustment that can be set by the
    	   system driver (100000 ppm on Linux, 500 ppm on FreeBSD, NetBSD, and
    	   macOS 10.13+, 32500 ppm on Solaris).
    
    	   By default, the maximum assumed drift is 500000 ppm, i.e. the
    	   adjustment is limited by the system driver rather than this
    	   directive.
    
           maxupdateskew skew-in-ppm
    	   One of chronyd’s tasks is to work out how fast or slow the
    	   computer’s clock runs relative to its reference sources. In
    	   addition, it computes an estimate of the error bounds around the
    	   estimated value.
    
    	   If the range of error is too large, it probably indicates that the
    	   measurements have not settled down yet, and that the estimated gain
    	   or loss rate is not very reliable.
    
    	   The maxupdateskew directive sets the threshold for determining
    	   whether an estimate might be so unreliable that it should not be
    	   used. By default, the threshold is 1000 ppm.
    
    	   Typical values for skew-in-ppm might be 100 for a dial-up
    	   connection to servers over a phone line, and 5 or 10 for a computer
    	   on a LAN.
    
    	   It should be noted that this is not the only means of protection
    	   against using unreliable estimates. At all times, chronyd keeps
    	   track of both the estimated gain or loss rate, and the error bound
    	   on the estimate. When a new estimate is generated following another
    	   measurement from one of the sources, a weighted combination
    	   algorithm is used to update the master estimate. So if chronyd has
    	   an existing highly-reliable master estimate and a new estimate is
    	   generated which has large error bounds, the existing master
    	   estimate will dominate in the new master estimate.
    
           maxslewrate rate-in-ppm
    	   The maxslewrate directive sets the maximum rate at which chronyd is
    	   allowed to slew the time. It limits the slew rate controlled by the
    	   correction time ratio (which can be set by the corrtimeratio
    	   directive) and is effective only on systems where chronyd is able
    	   to control the rate (i.e. all supported systems with the exception
    	   of macOS 12 or earlier).
    
    	   For each system there is a maximum frequency offset of the clock
    	   that can be set by the driver. On Linux it is 100000 ppm, on
    	   FreeBSD, NetBSD and macOS 10.13+ it is 5000 ppm, and on Solaris it
    	   is 32500 ppm. Also, due to a kernel limitation, setting maxslewrate
    	   on FreeBSD, NetBSD, macOS 10.13+ to a value between 500 ppm and
    	   5000 ppm will effectively set it to 500 ppm.
    
    	   In early beta releases of macOS 13 this capability is disabled
    	   because of a system kernel bug. When the kernel bug is fixed,
    	   chronyd will detect this and re-enable the capability (see above
    	   limitations) with no recompilation required.
    
    	   By default, the maximum slew rate is set to 83333.333 ppm (one
    	   twelfth).
    
           tempcomp file interval T0 k0 k1 k2, tempcomp file interval points-file
    	   Normally, changes in the rate of drift of the system clock are
    	   caused mainly by changes in the temperature of the crystal
    	   oscillator on the motherboard.
    
    	   If there are temperature measurements available from a sensor close
    	   to the oscillator, the tempcomp directive can be used to compensate
    	   for the changes in the temperature and improve the stability and
    	   accuracy of the clock.
    
    	   The result depends on many factors, including the resolution of the
    	   sensor, the amount of noise in the measurements, the polling
    	   interval of the time source, the compensation update interval, how
    	   well the compensation is specified, and how close the sensor is to
    	   the oscillator. When it is working well, the frequency reported in
    	   the tracking.log file is more stable and the maximum reached offset
    	   is smaller.
    
    	   There are two forms of the directive. The first one has six
    	   parameters: a path to the file containing the current temperature
    	   from the sensor (in text format), the compensation update interval
    	   (in seconds), and temperature coefficients T0, k0, k1, k2.
    
    	   The frequency compensation is calculated (in ppm) as
    
    	       k0 + (T - T0) * k1 + (T - T0)^2 * k2
    
    	   The result has to be between -10 ppm and 10 ppm, otherwise the
    	   measurement is considered invalid and will be ignored. The k0
    	   coefficient can be adjusted to keep the compensation in that range.
    
    	   An example of the use is:
    
    	       tempcomp /sys/class/hwmon/hwmon0/temp2_input 30 26000 0.0 0.000183 0.0
    
    	   The measured temperature will be read from the file in the Linux
    	   sysfs filesystem every 30 seconds. When the temperature is 26000
    	   (26 degrees Celsius), the frequency correction will be zero. When
    	   it is 27000 (27 degrees Celsius), the clock will be set to run
    	   faster by 0.183 ppm, etc.
    
    	   The second form has three parameters: the path to the sensor file,
    	   the update interval, and a path to a file containing a list of
    	   (temperature, compensation) points, from which the compensation is
    	   linearly interpolated or extrapolated.
    
    	   An example is:
    
    	       tempcomp /sys/class/hwmon/hwmon0/temp2_input 30 /etc/chrony.tempcomp
    
    	   where the /etc/chrony.tempcomp file could have
    
    	       20000 1.0
    	       21000 0.64
    	       22000 0.36
    	       23000 0.16
    	       24000 0.04
    	       25000 0.0
    	       26000 0.04
    	       27000 0.16
    	       28000 0.36
    	       29000 0.64
    	       30000 1.0
    
    	   Valid measurements with corresponding compensations are logged to
    	   the tempcomp.log file if enabled by the log tempcomp directive.
    
       NTP server
           allow [all] [subnet]
    	   The allow directive is used to designate a particular subnet from
    	   which NTP clients are allowed to access the computer as an NTP
    	   server.
    
    	   The default is that no clients are allowed access, i.e. chronyd
    	   operates purely as an NTP client. If the allow directive is used,
    	   chronyd will be both a client of its servers, and a server to other
    	   clients.
    
    	   Examples of the use of the directive are as follows:
    
    	       allow 1.2.3.4
    	       allow 1.2
    	       allow 3.4.5
    	       allow 6.7.8/22
    	       allow 6.7.8.9/22
    	       allow 2001:db8::/32
    	       allow 0/0
    	       allow ::/0
    	       allow
    
    	   The first directive allows a node with IPv4 address 1.2.3.4 to be
    	   an NTP client of this computer. The second directive allows any
    	   node with an IPv4 address of the form 1.2.x.y (with x and y
    	   arbitrary) to be an NTP client of this computer. Likewise, the
    	   third directive allows any node with an IPv4 address of the form
    	   3.4.5.x to have client NTP access. The fourth and fifth forms allow
    	   access from any node with an IPv4 address of the form 6.7.8.x,
    	   6.7.9.x, 6.7.10.x or 6.7.11.x (with x arbitrary), i.e. the value 22
    	   is the number of bits defining the specified subnet. In the fifth
    	   form, the final byte is ignored. The sixth form is used for IPv6
    	   addresses. The seventh and eighth forms allow access by any IPv4
    	   and IPv6 node respectively. The ninth forms allows access by any
    	   node (IPv4 or IPv6).
    
    	   A second form of the directive, allow all, has a greater effect,
    	   depending on the ordering of directives in the configuration file.
    	   To illustrate the effect, consider the two examples:
    
    	       allow 1.2.3.4
    	       deny 1.2.3
    	       allow 1.2
    
    	   and
    
    	       allow 1.2.3.4
    	       deny 1.2.3
    	       allow all 1.2
    
    	   In the first example, the effect is the same regardless of what
    	   order the three directives are given in. So the 1.2.x.y subnet is
    	   allowed access, except for the 1.2.3.x subnet, which is denied
    	   access, however the host 1.2.3.4 is allowed access.
    
    	   In the second example, the allow all 1.2 directives overrides the
    	   effect of any previous directive relating to a subnet within the
    	   specified subnet. Within a configuration file this capability is
    	   probably rather moot; however, it is of greater use for
    	   reconfiguration at run-time via chronyc with the allow all command.
    
    	   The directive allows a hostname to be specified instead of an IP
    	   address, but the name must be resolvable when chronyd is started
    	   (i.e. chronyd needs to be started when the network is already up
    	   and DNS is working).
    
    	   Note, if the initstepslew directive is used in the configuration
    	   file, each of the computers listed in that directive must allow
    	   client access by this computer for it to work.
    
           deny [all] [subnet]
    	   This is similar to the allow directive, except that it denies NTP
    	   client access to a particular subnet or host, rather than allowing
    	   it.
    
    	   The syntax is identical.
    
    	   There is also a deny all directive with similar behaviour to the
    	   allow all directive.
    
           bindaddress address
    	   The bindaddress directive binds the socket on which chronyd listens
    	   for NTP requests to a local address of the computer. On systems
    	   other than Linux, the address of the computer needs to be already
    	   configured when chronyd is started.
    
    	   An example of the use of the directive is:
    
    	       bindaddress 192.168.1.1
    
    	   Currently, for each of the IPv4 and IPv6 protocols, only one
    	   bindaddress directive can be specified. Therefore, it is not useful
    	   on computers which should serve NTP on multiple network interfaces.
    
           broadcast interval address [port]
    	   The broadcast directive is used to declare a broadcast address to
    	   which chronyd should send packets in the NTP broadcast mode (i.e.
    	   make chronyd act as a broadcast server). Broadcast clients on that
    	   subnet will be able to synchronise.
    
    	   The syntax is as follows:
    
    	       broadcast 30 192.168.1.255
    	       broadcast 60 192.168.2.255 12123
    	       broadcast 60 ff02::101
    
    	   In the first example, the destination port defaults to UDP port 123
    	   (the normal NTP port). In the second example, the destination port
    	   is specified as 12123. The first parameter in each case (30 or 60
    	   respectively) is the interval in seconds between broadcast packets
    	   being sent. The second parameter in each case is the broadcast
    	   address to send the packet to. This should correspond to the
    	   broadcast address of one of the network interfaces on the computer
    	   where chronyd is running.
    
    	   You can have more than 1 broadcast directive if you have more than
    	   1 network interface onto which you want to send NTP broadcast
    	   packets.
    
    	   chronyd itself cannot act as a broadcast client; it must always be
    	   configured as a point-to-point client by defining specific NTP
    	   servers and peers. This broadcast server feature is intended for
    	   providing a time source to other NTP implementations.
    
    	   If ntpd is used as the broadcast client, it will try to measure the
    	   round-trip delay between the server and client with normal client
    	   mode packets. Thus, the broadcast subnet should also be the subject
    	   of an allow directive.
    
           clientloglimit limit
    	   This directive specifies the maximum amount of memory that chronyd
    	   is allowed to allocate for logging of client accesses and the state
    	   that chronyd as an NTP server needs to support the interleaved mode
    	   for its clients. The default limit is 524288 bytes, which is
    	   sufficient for monitoring about four thousand clients at the same
    	   time.
    
    	   In older chrony versions if the limit was set to 0, the memory
    	   allocation was unlimited.
    
    	   An example of the use of this directive is:
    
    	       clientloglimit 1048576
    
           noclientlog
    	   This directive, which takes no arguments, specifies that client
    	   accesses are not to be logged. Normally they are logged, allowing
    	   statistics to be reported using the clients command in chronyc.
    	   This option also effectively disables server support for the NTP
    	   interleaved mode.
    
           local [option]...
    	   The local directive enables a local reference mode, which allows
    	   chronyd operating as an NTP server to appear synchronised to real
    	   time (from the viewpoint of clients polling it), even when it was
    	   never synchronised or the last update of the clock happened a long
    	   time ago.
    
    	   This directive is normally used in an isolated network, where
    	   computers are required to be synchronised to one another, but not
    	   necessarily to real time. The server can be kept vaguely in line
    	   with real time by manual input.
    
    	   The local directive has the following options:
    
    	   stratum stratum
    	       This option sets the stratum of the server which will be
    	       reported to clients when the local reference is active. The
    	       specified value is in the range 1 through 15, and the default
    	       value is 10. It should be larger than the maximum expected
    	       stratum in the network when external NTP servers are
    	       accessible.
    
    	       Stratum 1 indicates a computer that has a true real-time
    	       reference directly connected to it (e.g. GPS, atomic clock,
    	       etc.), such computers are expected to be very close to real
    	       time. Stratum 2 computers are those which have a stratum 1
    	       server; stratum 3 computers have a stratum 2 server and so on.
    	       A value of 10 indicates that the clock is so many hops away
    	       from a reference clock that its time is fairly unreliable.
    
    	   distance distance
    	       This option sets the threshold for the root distance which will
    	       activate the local reference. If chronyd was synchronised to
    	       some source, the local reference will not be activated until
    	       its root distance reaches the specified value (the rate at
    	       which the distance is increasing depends on how well the clock
    	       was tracking the source). The default value is 1 second.
    
    	       The current root distance can be calculated from root delay and
    	       root dispersion (reported by the tracking command in chronyc)
    	       as:
    
    		   distance = delay / 2 + dispersion
    
    	   orphan
    	       This option enables a special ‘orphan’ mode, where sources with
    	       stratum equal to the local stratum are assumed to not serve
    	       real time. They are ignored unless no other source is
    	       selectable and their reference IDs are smaller than the local
    	       reference ID.
    
    	       This allows multiple servers in the network to use the same
    	       local configuration and to be synchronised to one another,
    	       without confusing clients that poll more than one server. Each
    	       server needs to be configured to poll all other servers with
    	       the local directive. This ensures only the server with the
    	       smallest reference ID has the local reference active and others
    	       are synchronised to it. When that server fails, another will
    	       take over.
    
    	       The orphan mode is compatible with the ntpd’s orphan mode
    	       (enabled by the tos orphan command).
    
    
    
    	   An example of the directive is:
    
    	       local stratum 10 orphan
    
           ntpsigndsocket directory
    	   This directive specifies the location of the Samba ntp_signd socket
    	   when it is running as a Domain Controller (DC). If chronyd is
    	   compiled with this feature, responses to MS-SNTP clients will be
    	   signed by the smbd daemon.
    
    	   Note that MS-SNTP requests are not authenticated and any client
    	   that is allowed to access the server by the allow directive, or the
    	   allow command in chronyc, can get an MS-SNTP response signed with a
    	   trust account’s password and try to crack the password in a
    	   brute-force attack. Access to the server should be carefully
    	   controlled.
    
    	   An example of the directive is:
    
    	       ntpsigndsocket /var/lib/samba/ntp_signd
    
           port port
    	   This option allows you to configure the port on which chronyd will
    	   listen for NTP requests. The port will be open only when an address
    	   is allowed by the allow directive or the allow command in chronyc,
    	   an NTP peer is configured, or the broadcast server mode is enabled.
    
    	   The default value is 123, the standard NTP port. If set to 0,
    	   chronyd will never open the server port and will operate strictly
    	   in a client-only mode. The source port used in NTP client requests
    	   can be set by the acquisitionport directive.
    
           ratelimit [option]...
    	   This directive enables response rate limiting for NTP packets. Its
    	   purpose is to reduce network traffic with misconfigured or broken
    	   NTP clients that are polling the server too frequently. The limits
    	   are applied to individual IP addresses. If multiple clients share
    	   one IP address (e.g. multiple hosts behind NAT), the sum of their
    	   traffic will be limited. If a client that increases its polling
    	   rate when it does not receive a reply is detected, its rate
    	   limiting will be temporarily suspended to avoid increasing the
    	   overall amount of traffic. The maximum number of IP addresses which
    	   can be monitored at the same time depends on the memory limit set
    	   by the clientloglimit directive.
    
    	   The ratelimit directive supports a number of options (which can be
    	   defined in any order):
    
    	   interval
    	       This option sets the minimum interval between responses. It is
    	       defined as a power of 2 in seconds. The default value is 3 (8
    	       seconds). The minimum value is -19 (524288 packets per second)
    	       and the maximum value is 12 (one packet per 4096 seconds). Note
    	       that with values below -4 the rate limiting is coarse
    	       (responses are allowed in bursts, even if the interval between
    	       them is shorter than the specified interval).
    
    	   burst
    	       This option sets the maximum number of responses that can be
    	       sent in a burst, temporarily exceeding the limit specified by
    	       the interval option. This is useful for clients that make rapid
    	       measurements on start (e.g. chronyd with the iburst option).
    	       The default value is 8. The minimum value is 1 and the maximum
    	       value is 255.
    
    	   leak
    	       This option sets the rate at which responses are randomly
    	       allowed even if the limits specified by the interval and burst
    	       options are exceeded. This is necessary to prevent an attacker
    	       who is sending requests with a spoofed source address from
    	       completely blocking responses to that address. The leak rate is
    	       defined as a power of 1/2 and it is 2 by default, i.e. on
    	       average at least every fourth request has a response. The
    	       minimum value is 1 and the maximum value is 4.
    
    
    
    	   An example use of the directive is:
    
    	       ratelimit interval 1 burst 16
    
    	   This would reduce the response rate for IP addresses sending
    	   packets on average more than once per 2 seconds, or sending packets
    	   in bursts of more than 16 packets, by up to 75% (with default leak
    	   of 2).
    
           smoothtime max-freq max-wander [leaponly]
    	   The smoothtime directive can be used to enable smoothing of the
    	   time that chronyd serves to its clients to make it easier for them
    	   to track it and keep their clocks close together even when large
    	   offset or frequency corrections are applied to the server’s clock,
    	   for example after being offline for a longer time.
    
    	   BE WARNED: The server is intentionally not serving its best
    	   estimate of the true time. If a large offset has been accumulated,
    	   it can take a very long time to smooth it out. This directive
    	   should be used only when the clients are not configured to also
    	   poll another NTP server, because they could reject this server as a
    	   falseticker or fail to select a source completely.
    
    	   The smoothing process is implemented with a quadratic spline
    	   function with two or three pieces. It is independent from any
    	   slewing applied to the local system clock, but the accumulated
    	   offset and frequency will be reset when the clock is corrected by
    	   stepping, e.g. by the makestep directive or the makestep command in
    	   chronyc. The process can be reset without stepping the clock by the
    	   smoothtime reset command.
    
    	   The first two arguments of the directive are the maximum frequency
    	   offset of the smoothed time to the tracked NTP time (in ppm) and
    	   the maximum rate at which the frequency offset is allowed to change
    	   (in ppm per second). leaponly is an optional third argument which
    	   enables a mode where only leap seconds are smoothed out and normal
    	   offset and frequency changes are ignored. The leaponly option is
    	   useful in a combination with the leapsecmode slew directive to
    	   allow the clients to use multiple time smoothing servers safely.
    
    	   The smoothing process is activated automatically when 1/10000 of
    	   the estimated skew of the local clock falls below the maximum rate
    	   of frequency change. It can be also activated manually by the
    	   smoothtime activate command, which is particularly useful when the
    	   clock is synchronised only with manual input and the skew is always
    	   larger than the threshold. The smoothing command can be used to
    	   monitor the process.
    
    	   An example suitable for clients using ntpd and 1024 second polling
    	   interval could be:
    
    	       smoothtime 400 0.001
    
    	   An example suitable for clients using chronyd on Linux could be:
    
    	       smoothtime 50000 0.01
    
       Command and monitoring access
           bindcmdaddress address
    	   The bindcmdaddress directive allows you to specify an IP address of
    	   an interface on which chronyd will listen for monitoring command
    	   packets (issued by chronyc). On systems other than Linux, the
    	   address of the interface needs to be already configured when
    	   chronyd is started.
    
    	   This directive can also change the path of the Unix domain command
    	   socket, which is used by chronyc to send configuration commands.
    	   The socket must be in a directory that is accessible only by the
    	   root or chrony user. The directory will be created on start if it
    	   does not exist. The compiled-in default path of the socket is
    	   /var/run/chrony/chronyd.sock. The socket can be disabled by setting
    	   the path to /.
    
    	   By default, chronyd binds to the loopback interface (with addresses
    	   127.0.0.1 and ::1). This blocks all access except from localhost.
    	   To listen for command packets on all interfaces, you can add the
    	   lines:
    
    	       bindcmdaddress 0.0.0.0
    	       bindcmdaddress ::
    
    	   to the configuration file.
    
    	   For each of the IPv4, IPv6, and Unix domain protocols, only one
    	   bindcmdaddress directive can be specified.
    
    	   An example that sets the path of the Unix domain command socket is:
    
    	       bindcmdaddress /var/run/chrony/chronyd.sock
    
           cmdallow [all] [subnet]
    	   This is similar to the allow directive, except that it allows
    	   monitoring access (rather than NTP client access) to a particular
    	   subnet or host. (By ‘monitoring access’ is meant that chronyc can
    	   be run on those hosts and retrieve monitoring data from chronyd on
    	   this computer.)
    
    	   The syntax is identical to the allow directive.
    
    	   There is also a cmdallow all directive with similar behaviour to
    	   the allow all directive (but applying to monitoring access in this
    	   case, of course).
    
    	   Note that chronyd has to be configured with the bindcmdaddress
    	   directive to not listen only on the loopback interface to actually
    	   allow remote access.
    
           cmddeny [all] [subnet]
    	   This is similar to the cmdallow directive, except that it denies
    	   monitoring access to a particular subnet or host, rather than
    	   allowing it.
    
    	   The syntax is identical.
    
    	   There is also a cmddeny all directive with similar behaviour to the
    	   cmdallow all directive.
    
           cmdport port
    	   The cmdport directive allows the port that is used for run-time
    	   monitoring (via the chronyc program) to be altered from its default
    	   (323). If set to 0, chronyd will not open the port, this is useful
    	   to disable chronyc access from the Internet. (It does not disable
    	   the Unix domain command socket.)
    
    	   An example shows the syntax:
    
    	       cmdport 257
    
    	   This would make chronyd use UDP 257 as its command port. (chronyc
    	   would need to be run with the -p 257 switch to inter-operate
    	   correctly.)
    
           cmdratelimit [option]...
    	   This directive enables response rate limiting for command packets.
    	   It is similar to the ratelimit directive, except responses to
    	   localhost are never limited and the default interval is -4 (16
    	   packets per second).
    
    	   An example of the use of the directive is:
    
    	       cmdratelimit interval 2
    
       Real-time clock (RTC)
           hwclockfile file
    	   The hwclockfile directive sets the location of the adjtime file
    	   which is used by the hwclock program on Linux. chronyd parses the
    	   file to find out if the RTC keeps local time or UTC. It overrides
    	   the rtconutc directive.
    
    	   The compiled-in default value is '/etc/adjtime'.
    
    	   An example of the directive is:
    
    	       hwclockfile /etc/adjtime
    
           rtcautotrim threshold
    	   The rtcautotrim directive is used to keep the RTC close to the
    	   system clock automatically. When the system clock is synchronised
    	   and the estimated error between the two clocks is larger than the
    	   specified threshold, chronyd will trim the RTC as if the trimrtc
    	   command in chronyc was issued.
    
    	   This directive is effective only with the rtcfile directive.
    
    	   An example of the use of this directive is:
    
    	       rtcautotrim 30
    
    	   This would set the threshold error to 30 seconds.
    
           rtcdevice device
    	   The rtcdevice directive sets the path to the device file for
    	   accessing the RTC. The default path is /dev/rtc.
    
           rtcfile file
    	   The rtcfile directive defines the name of the file in which chronyd
    	   can save parameters associated with tracking the accuracy of the
    	   RTC.
    
    	   An example of the directive is:
    
    	       rtcfile /var/lib/chrony/rtc
    
    	   chronyd saves information in this file when it exits and when the
    	   writertc command is issued in chronyc. The information saved is the
    	   RTC’s error at some epoch, that epoch (in seconds since January 1
    	   1970), and the rate at which the RTC gains or loses time.
    
    	   So far, the support for real-time clocks is limited; their code is
    	   even more system-specific than the rest of the software. You can
    	   only use the RTC facilities (the rtcfile directive and the -s
    	   command-line option to chronyd) if the following three conditions
    	   apply:
    
    	    1. You are running Linux.
    
    	    2. The kernel is compiled with extended real-time clock support
    	       (i.e. the /dev/rtc device is capable of doing useful things).
    
    	    3. You do not have other applications that need to make use of
    	       /dev/rtc at all.
    
           rtconutc
    	   chronyd assumes by default that the RTC keeps local time (including
    	   any daylight saving changes). This is convenient on PCs running
    	   Linux which are dual-booted with Windows.
    
    	   If you keep the RTC on local time and your computer is off when
    	   daylight saving (summer time) starts or ends, the computer’s system
    	   time will be one hour in error when you next boot and start
    	   chronyd.
    
    	   An alternative is for the RTC to keep Universal Coordinated Time
    	   (UTC). This does not suffer from the 1 hour problem when daylight
    	   saving starts or ends.
    
    	   If the rtconutc directive appears, it means the RTC is required to
    	   keep UTC. The directive takes no arguments. It is equivalent to
    	   specifying the -u switch to the Linux hwclock program.
    
    	   Note that this setting is overridden when the hwclockfile directive
    	   is specified.
    
           rtcsync
    	   The rtcsync directive enables a mode where the system time is
    	   periodically copied to the RTC and chronyd does not try to track
    	   its drift. This directive cannot be used with the rtcfile
    	   directive.
    
    	   On Linux, the RTC copy is performed by the kernel every 11 minutes.
    
    	   On macOS, chronyd will perform the RTC copy every 60 minutes when
    	   the system clock is in a synchronised state.
    
    	   On other systems this directive does nothing.
    
       Logging
           log [option]...
    	   The log directive indicates that certain information is to be
    	   logged. The log files are written to the directory specified by the
    	   logdir directive. A banner is periodically written to the files to
    	   indicate the meanings of the columns.
    
    	   rawmeasurements
    	       This option logs the raw NTP measurements and related
    	       information to a file called measurements.log. An entry is made
    	       for each packet received from the source. This can be useful
    	       when debugging a problem. An example line (which actually
    	       appears as a single line in the file) from the log file is
    	       shown below.
    
    		   2016-11-09 05:40:50 203.0.113.15    N  2 111 111 1111  10 10 1.0 \
    		      -4.966e-03  2.296e-01  1.577e-05	1.615e-01  7.446e-03 CB00717B 4B D K
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above):
    
    		1. Date [2015-10-13]
    
    		2. Hour:Minute:Second. Note that the date-time pair is
    		   expressed in UTC, not the local time zone. [05:40:50]
    
    		3. IP address of server or peer from which measurement came
    		   [203.0.113.15]
    
    		4. Leap status (N means normal, + means that the last minute
    		   of the current month has 61 seconds, - means that the last
    		   minute of the month has 59 seconds, ? means the remote
    		   computer is not currently synchronised.) [N]
    
    		5. Stratum of remote computer. [2]
    
    		6. RFC 5905 tests 1 through 3 (1=pass, 0=fail) [111]
    
    		7. RFC 5905 tests 5 through 7 (1=pass, 0=fail) [111]
    
    		8. Tests for maximum delay, maximum delay ratio and maximum
    		   delay dev ratio, against defined parameters, and a test for
    		   synchronisation loop (1=pass, 0=fail) [1111]
    
    		9. Local poll [10]
    
    		10. Remote poll [10]
    
    		11. ‘Score’ (an internal score within each polling level used
    		   to decide when to increase or decrease the polling level.
    		   This is adjusted based on number of measurements currently
    		   being used for the regression algorithm). [1.0]
    
    		12. The estimated local clock error (theta in RFC 5905).
    		   Positive indicates that the local clock is slow of the
    		   remote source. [-4.966e-03]
    
    		13. The peer delay (delta in RFC 5905). [2.296e-01]
    
    		14. The peer dispersion (epsilon in RFC 5905). [1.577e-05]
    
    		15. The root delay (DELTA in RFC 5905). [1.615e-01]
    
    		16. The root dispersion (EPSILON in RFC 5905). [7.446e-03]
    
    		17. Reference ID of the server’s source as a hexadecimal
    		   number. [CB00717B]
    
    		18. NTP mode of the received packet (1=active peer, 2=passive
    		   peer, 4=server, B=basic, I=interleaved). [4B]
    
    		19. Source of the local transmit timestamp (D=daemon,
    		   K=kernel, H=hardware). [D]
    
    		20. Source of the local receive timestamp (D=daemon, K=kernel,
    		   H=hardware). [K]
    
    	   measurements
    	       This option is identical to the rawmeasurements option, except
    	       it logs only valid measurements from synchronised sources, i.e.
    	       measurements which passed the RFC 5905 tests 1 through 7. This
    	       can be useful for producing graphs of the source’s performance.
    
    	   statistics
    	       This option logs information about the regression processing to
    	       a file called statistics.log. An example line (which actually
    	       appears as a single line in the file) from the log file is
    	       shown below.
    
    		   2016-08-10 05:40:50 203.0.113.15	6.261e-03 -3.247e-03 \
    			2.220e-03  1.874e-06  1.080e-06 7.8e-02	 16   0	  8  0.00
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above):
    
    		1. Date [2015-07-22]
    
    		2. Hour:Minute:Second. Note that the date-time pair is
    		   expressed in UTC, not the local time zone. [05:40:50]
    
    		3. IP address of server or peer from which measurement comes
    		   [203.0.113.15]
    
    		4. The estimated standard deviation of the measurements from
    		   the source (in seconds). [6.261e-03]
    
    		5. The estimated offset of the source (in seconds, positive
    		   means the local clock is estimated to be fast, in this
    		   case). [-3.247e-03]
    
    		6. The estimated standard deviation of the offset estimate (in
    		   seconds). [2.220e-03]
    
    		7. The estimated rate at which the local clock is gaining or
    		   losing time relative to the source (in seconds per second,
    		   positive means the local clock is gaining). This is
    		   relative to the compensation currently being applied to the
    		   local clock, not to the local clock without any
    		   compensation. [1.874e-06]
    
    		8. The estimated error in the rate value (in seconds per
    		   second). [1.080e-06].
    
    		9. The ratio of |old_rate - new_rate| / old_rate_error. Large
    		   values indicate the statistics are not modelling the source
    		   very well. [7.8e-02]
    
    		10. The number of measurements currently being used for the
    		   regression algorithm. [16]
    
    		11. The new starting index (the oldest sample has index 0;
    		   this is the method used to prune old samples when it no
    		   longer looks like the measurements fit a linear model). [0,
    		   i.e. no samples discarded this time]
    
    		12. The number of runs. The number of runs of regression
    		   residuals with the same sign is computed. If this is too
    		   small it indicates that the measurements are no longer
    		   represented well by a linear model and that some older
    		   samples need to be discarded. The number of runs for the
    		   data that is being retained is tabulated. Values of
    		   approximately half the number of samples are expected. [8]
    
    		13. The estimated or configured asymmetry of network jitter on
    		   the path to the source which was used to correct the
    		   measured offsets. The asymmetry can be between -0.5 and
    		   +0.5. A negative value means the delay of packets sent to
    		   the source is more variable than the delay of packets sent
    		   from the source back. [0.00, i.e. no correction for
    		   asymmetry]
    
    	   tracking
    	       This option logs changes to the estimate of the system’s gain
    	       or loss rate, and any slews made, to a file called
    	       tracking.log. An example line (which actually appears as a
    	       single line in the file) from the log file is shown below.
    
    		   2017-08-22 13:22:36 203.0.113.15	2     -3.541	  0.075 -8.621e-06 N \
    			       2  2.940e-03 -2.084e-04	1.534e-02  3.472e-04  8.304e-03
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above) :
    
    		1. Date [2017-08-22]
    
    		2. Hour:Minute:Second. Note that the date-time pair is
    		   expressed in UTC, not the local time zone. [13:22:36]
    
    		3. The IP address of the server or peer to which the local
    		   system is synchronised. [203.0.113.15]
    
    		4. The stratum of the local system. [2]
    
    		5. The local system frequency (in ppm, positive means the
    		   local system runs fast of UTC). [-3.541]
    
    		6. The error bounds on the frequency (in ppm). [0.075]
    
    		7. The estimated local offset at the epoch, which is normally
    		   corrected by slewing the local clock (in seconds, positive
    		   indicates the clock is fast of UTC). [-8.621e-06]
    
    		8. Leap status (N means normal, + means that the last minute
    		   of this month has 61 seconds, - means that the last minute
    		   of the month has 59 seconds, ? means the clock is not
    		   currently synchronised.) [N]
    
    		9. The number of combined sources. [2]
    
    		10. The estimated standard deviation of the combined offset
    		   (in seconds). [2.940e-03]
    
    		11. The remaining offset correction from the previous update
    		   (in seconds, positive means the system clock is slow of
    		   UTC). [-2.084e-04]
    
    		12. The total of the network path delays to the reference
    		   clock to which the local clock is ultimately synchronised
    		   (in seconds). [1.534e-02]
    
    		13. The total dispersion accumulated through all the servers
    		   back to the reference clock to which the local clock is
    		   ultimately synchronised (in seconds). [3.472e-04]
    
    		14. The maximum estimated error of the system clock in the
    		   interval since the previous update (in seconds). It
    		   includes the offset, remaining offset correction, root
    		   delay, and dispersion from the previous update with the
    		   dispersion which accumulated in the interval. [8.304e-03]
    
    	   rtc
    	       This option logs information about the system’s real-time
    	       clock. An example line (which actually appears as a single line
    	       in the file) from the rtc.log file is shown below.
    
    		   2015-07-22 05:40:50	   -0.037360 1	     -0.037434\
    			     -37.948  12   5  120
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above):
    
    		1. Date [2015-07-22]
    
    		2. Hour:Minute:Second. Note that the date-time pair is
    		   expressed in UTC, not the local time zone. [05:40:50]
    
    		3. The measured offset between the RTC and the system clock in
    		   seconds. Positive indicates that the RTC is fast of the
    		   system time [-0.037360].
    
    		4. Flag indicating whether the regression has produced valid
    		   coefficients. (1 for yes, 0 for no). [1]
    
    		5. Offset at the current time predicted by the regression
    		   process. A large difference between this value and the
    		   measured offset tends to indicate that the measurement is
    		   an outlier with a serious measurement error. [-0.037434]
    
    		6. The rate at which the RTC is losing or gaining time
    		   relative to the system clock. In ppm, with positive
    		   indicating that the RTC is gaining time. [-37.948]
    
    		7. The number of measurements used in the regression. [12]
    
    		8. The number of runs of regression residuals of the same
    		   sign. Low values indicate that a straight line is no longer
    		   a good model of the measured data and that older
    		   measurements should be discarded. [5]
    
    		9. The measurement interval used prior to the measurement
    		   being made (in seconds). [120]
    
    	   refclocks
    	       This option logs the raw and filtered reference clock
    	       measurements to a file called refclocks.log. An example line
    	       (which actually appears as a single line in the file) from the
    	       log file is shown below.
    
    		   2009-11-30 14:33:27.000000 PPS2    7 N 1  4.900000e-07 -6.741777e-07	 1.000e-06
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above):
    
    		1. Date [2009-11-30]
    
    		2. Hour:Minute:Second.Microsecond. Note that the date-time
    		   pair is expressed in UTC, not the local time zone.
    		   [14:33:27.000000]
    
    		3. Reference ID of the reference clock from which the
    		   measurement came. [PPS2]
    
    		4. Sequence number of driver poll within one polling interval
    		   for raw samples, or - for filtered samples. [7]
    
    		5. Leap status (N means normal, + means that the last minute
    		   of the current month has 61 seconds, - means that the last
    		   minute of the month has 59 seconds). [N]
    
    		6. Flag indicating whether the sample comes from PPS source.
    		   (1 for yes, 0 for no, or - for filtered sample). [1]
    
    		7. Local clock error measured by reference clock driver, or -
    		   for filtered sample. [4.900000e-07]
    
    		8. Local clock error with applied corrections. Positive
    		   indicates that the local clock is slow. [-6.741777e-07]
    
    		9. Assumed dispersion of the sample. [1.000e-06]
    
    	   tempcomp
    	       This option logs the temperature measurements and system rate
    	       compensations to a file called tempcomp.log. An example line
    	       (which actually appears as a single line in the file) from the
    	       log file is shown below.
    
    		   2015-04-19 10:39:48	2.8000e+04  3.6600e-01
    
    	       The columns are as follows (the quantities in square brackets
    	       are the values from the example line above):
    
    		1. Date [2015-04-19]
    
    		2. Hour:Minute:Second. Note that the date-time pair is
    		   expressed in UTC, not the local time zone. [10:39:48]
    
    		3. Temperature read from the sensor. [2.8000e+04]
    
    		4. Applied compensation in ppm, positive means the system
    		   clock is running faster than it would be without the
    		   compensation. [3.6600e-01]
    
    
    	   An example of the directive is:
    
    	       log measurements statistics tracking
    
           logbanner entries
    	   A banner is periodically written to the log files enabled by the
    	   log directive to indicate the meanings of the columns.
    
    	   The logbanner directive specifies after how many entries in the log
    	   file should be the banner written. The default is 32, and 0 can be
    	   used to disable it entirely.
    
           logchange threshold
    	   This directive sets the threshold for the adjustment of the system
    	   clock that will generate a syslog message. Clock errors detected
    	   via NTP packets, reference clocks, or timestamps entered via the
    	   settime command of chronyc are logged.
    
    	   By default, the threshold is 1 second.
    
    	   An example of the use is:
    
    	       logchange 0.1
    
    	   which would cause a syslog message to be generated if a system
    	   clock error of over 0.1 seconds starts to be compensated.
    
           logdir directory
    	   This directive allows the directory where log files are written to
    	   be specified.
    
    	   An example of the use of this directive is:
    
    	       logdir /var/log/chrony
    
           mailonchange email threshold
    	   This directive defines an email address to which mail should be
    	   sent if chronyd applies a correction exceeding a particular
    	   threshold to the system clock.
    
    	   An example of the use of this directive is:
    
    	       mailonchange root@localhost 0.5
    
    	   This would send a mail message to root if a change of more than 0.5
    	   seconds were applied to the system clock.
    
    	   This directive cannot be used when a system call filter is enabled
    	   by the -F option as the chronyd process will not be allowed to fork
    	   and execute the sendmail binary.
    
       Miscellaneous
           hwtimestamp interface [option]...
    	   This directive enables hardware timestamping of NTP packets sent to
    	   and received from the specified network interface. The network
    	   interface controller (NIC) uses its own clock to accurately
    	   timestamp the actual transmissions and receptions, avoiding
    	   processing and queueing delays in the kernel, network driver, and
    	   hardware. This can significantly improve the accuracy of the
    	   timestamps and the measured offset, which is used for
    	   synchronisation of the system clock. In order to get the best
    	   results, both sides receiving and sending NTP packets (i.e. server
    	   and client, or two peers) need to use HW timestamping. If the
    	   server or peer supports the interleaved mode, it needs to be
    	   enabled by the xleave option in the server or the peer directive.
    
    	   This directive is supported on Linux. The NIC must support HW
    	   timestamping, which can be verified with the ethtool -T command.
    	   The list of capabilities should include
    	   SOF_TIMESTAMPING_RAW_HARDWARE, SOF_TIMESTAMPING_TX_HARDWARE, and
    	   SOF_TIMESTAMPING_RX_HARDWARE. Receive filter HWTSTAMP_FILTER_ALL,
    	   or HWTSTAMP_FILTER_NTP_ALL, is necessary for timestamping of
    	   received packets. When chronyd is running, no other process (e.g. a
    	   PTP daemon) should be working with the NIC clock.
    
    	   If the kernel supports software timestamping, it will be enabled
    	   for all interfaces. The source of timestamps (i.e. hardware,
    	   kernel, or daemon) is indicated in the measurements.log file if
    	   enabled by the log measurements directive, and the ntpdata report
    	   in chronyc.
    
    	   If the specified interface is *, chronyd will try to enable HW
    	   timestamping on all available interfaces.
    
    	   The hwtimestamp directive has the following options:
    
    	   minpoll poll
    	       This option specifies the minimum interval between readings of
    	       the NIC clock. It’s defined as a power of two. It should
    	       correspond to the minimum polling interval of all NTP sources
    	       and the minimum expected polling interval of NTP clients. The
    	       default value is 0 (1 second) and the minimum value is -6
    	       (1/64th of a second).
    
    	   precision precision
    	       This option specifies the assumed precision of reading of the
    	       NIC clock. The default value is 100e-9 (100 nanoseconds).
    
    	   txcomp compensation
    	       This option specifies the difference in seconds between the
    	       actual transmission time at the physical layer and the reported
    	       transmit timestamp. This value will be added to transmit
    	       timestamps obtained from the NIC. The default value is 0.
    
    	   rxcomp compensation
    	       This option specifies the difference in seconds between the
    	       reported receive timestamp and the actual reception time at the
    	       physical layer. This value will be subtracted from receive
    	       timestamps obtained from the NIC. The default value is 0.
    
    	   nocrossts
    	       Some hardware can precisely cross timestamp the NIC clock with
    	       the system clock. This option disables the use of the cross
    	       timestamping.
    
    	   rxfilter filter
    	       This option selects the receive timestamping filter. The filter
    	       can be one of the following:
    
    	       all
    		   Enables timestamping of all received packets.
    
    	       ntp
    		   Enables timestamping of received NTP packets.
    
    	       none
    		   Disables timestamping of received packets.
    
    
    	       The most specific filter for timestamping NTP packets which is
    	       supported by the NIC is selected by default. Some NICs can
    	       timestamp only PTP packets, which limits the selection to the
    	       none filter. Forcing timestamping of all packets with the all
    	       filter when the NIC supports both all and ntp filters can be
    	       useful when packets are received from or on a non-standard UDP
    	       port (e.g. specified by the port directive).
    
    
    
    	   Examples of the directive are:
    
    	       hwtimestamp eth0
    	       hwtimestamp eth1 txcomp 300e-9 rxcomp 645e-9
    	       hwtimestamp *
    
           include pattern
    	   The include directive includes a configuration file or multiple
    	   configuration files if a wildcard pattern is specified. This can be
    	   useful when maintaining configuration on multiple hosts to keep the
    	   differences in separate files.
    
    	   An example of the directive is:
    
    	       include /etc/chrony.d/*.conf
    
           keyfile file
    	   This directive is used to specify the location of the file
    	   containing ID-key pairs for authentication of NTP packets.
    
    	   The format of the directive is shown in the example below:
    
    	       keyfile /etc/chrony.keys
    
    	   The argument is simply the name of the file containing the ID-key
    	   pairs. The format of the file is shown below:
    
    	       10 tulip
    	       11 hyacinth
    	       20 MD5 ASCII:crocus
    	       25 SHA1 HEX:1dc764e0791b11fa67efc7ecbc4b0d73f68a070c
    		...
    
    	   Each line consists of an ID, name of an authentication hash
    	   function (optional), and a password. The ID can be any unsigned
    	   integer in the range 1 through 2^32-1. The default hash function is
    	   MD5. Depending on how chronyd was compiled, other supported
    	   functions might be SHA1, SHA256, SHA384, SHA512, RMD128, RMD160,
    	   RMD256, RMD320, TIGER, and WHIRLPOOL. The password can be specified
    	   as a string of characters not containing white space with an
    	   optional ASCII: prefix, or as a hexadecimal number with the HEX:
    	   prefix. The maximum length of the line is 2047 characters.
    
    	   The password is used with the hash function to generate and verify
    	   a message authentication code (MAC) in NTP packets. It is
    	   recommended to use SHA1, or stronger, hash function with random
    	   passwords specified in the hexadecimal format that have at least
    	   128 bits. chronyd will log a warning to syslog on start if a source
    	   is specified in the configuration file with a key that has password
    	   shorter than 80 bits.
    
    	   The keygen command of chronyc can be used to generate random keys
    	   for the key file. By default, it generates 160-bit MD5 or SHA1
    	   keys.
    
           lock_all
    	   The lock_all directive will lock chronyd into RAM so that it will
    	   never be paged out. This mode is only supported on Linux. This
    	   directive uses the Linux mlockall() system call to prevent chronyd
    	   from ever being swapped out. This should result in lower and more
    	   consistent latency. It should not have significant impact on
    	   performance as chronyd’s memory usage is modest. The mlockall(2)
    	   man page has more details.
    
           pidfile file
    	   chronyd always writes its process ID (PID) to a file, and checks
    	   this file on startup to see if another chronyd might already be
    	   running on the system. By default, the file used is
    	   /var/run/chronyd.pid. The pidfile directive allows the name to be
    	   changed, e.g.:
    
    	       pidfile /run/chronyd.pid
    
           sched_priority priority
    	   On Linux, the sched_priority directive will select the SCHED_FIFO
    	   real-time scheduler at the specified priority (which must be
    	   between 0 and 100). On macOS, this option must have either a value
    	   of 0 (the default) to disable the thread time constraint policy or
    	   1 for the policy to be enabled. Other systems do not support this
    	   option.
    
    	   On Linux, this directive uses the sched_setscheduler() system call
    	   to instruct the kernel to use the SCHED_FIFO first-in, first-out
    	   real-time scheduling policy for chronyd with the specified
    	   priority. This means that whenever chronyd is ready to run it will
    	   run, interrupting whatever else is running unless it is a higher
    	   priority real-time process. This should not impact performance as
    	   chronyd resource requirements are modest, but it should result in
    	   lower and more consistent latency since chronyd will not need to
    	   wait for the scheduler to get around to running it. You should not
    	   use this unless you really need it. The sched_setscheduler(2) man
    	   page has more details.
    
    	   On macOS, this directive uses the thread_policy_set() kernel call
    	   to specify real-time scheduling. As noted for Linux, you should not
    	   use this directive unless you really need it.
    
           user user
    	   The user directive sets the name of the system user to which
    	   chronyd will switch after start in order to drop root privileges.
    
    	   On Linux, chronyd needs to be compiled with support for the libcap
    	   library. On macOS, FreeBSD, NetBSD and Solaris chronyd forks into
    	   two processes. The child process retains root privileges, but can
    	   only perform a very limited range of privileged system calls on
    	   behalf of the parent.
    
    	   The compiled-in default value is chrony.
    
    EXAMPLES
       NTP client with permanent connection to NTP servers
           This section shows how to configure chronyd for computers that are
           connected to the Internet (or to any network containing true NTP
           servers which ultimately derive their time from a reference clock)
           permanently or most of the time.
    
           To operate in this mode, you will need to know the names of the NTP
           servers you want to use. You might be able to find names of suitable
           servers by one of the following methods:
    
           ·   Your institution might already operate servers on its network.
    	   Contact your system administrator to find out.
    
           ·   Your ISP probably has one or more NTP servers available for its
    	   customers.
    
           ·   Somewhere under the NTP homepage there is a list of public stratum
    	   1 and stratum 2 servers. You should find one or more servers that
    	   are near to you. Check that their access policy allows you to use
    	   their facilities.
    
           ·   Use public servers from the pool.ntp.org <http://www.pool.ntp.org/>
    	   project.
    
           Assuming	  that	 your	NTP   servers	are   called  foo.example.net,
           bar.example.net	and  baz.example.net,  your  chrony.conf  file	 could
           contain as a minimum:
    
    	   server foo.example.net
    	   server bar.example.net
    	   server baz.example.net
    
           However,	  you  will  probably  want  to	 include  some	of  the	 other
           directives. The driftfile, makestep and rtcsync might  be  particularly
           useful.	Also,  the  iburst option of the server directive is useful to
           speed up the initial synchronisation. The smallest useful configuration
           file would look something like:
    
    	   server foo.example.net iburst
    	   server bar.example.net iburst
    	   server baz.example.net iburst
    	   driftfile /var/lib/chrony/drift
    	   makestep 1.0 3
    	   rtcsync
    
           When using a pool of NTP servers (one name is used for multiple servers
           which might change over time), it is better to specify  them  with  the
           pool directive instead of multiple server directives. The configuration
           file could in this case look like:
    
    	   pool pool.ntp.org iburst
    	   driftfile /var/lib/chrony/drift
    	   makestep 1.0 3
    	   rtcsync
    
       NTP client with infrequent connection to NTP servers
           This section shows how to configure chronyd  for	 computers  that  have
           occasional connections to NTP servers. In this case, you will need some
           additional configuration to tell chronyd when the  connection  goes  up
           and  down.  This saves the program from continuously trying to poll the
           servers when they are inaccessible.
    
           Again, assuming that  your  NTP	servers	 are  called  foo.example.net,
           bar.example.net	and  baz.example.net,  your chrony.conf file would now
           contain:
    
    	   server foo.example.net offline
    	   server bar.example.net offline
    	   server baz.example.net offline
    	   driftfile /var/lib/chrony/drift
    	   makestep 1.0 3
    	   rtcsync
    
           The offline keyword indicates that the  servers	start  in  an  offline
           state,  and  that  they	should not be contacted until chronyd receives
           notification from chronyc that the link to the Internet is present.  To
           tell  chronyd when to start and finish sampling the servers, the online
           and offline commands of chronyc need to be used.
    
           To give an example of their use, assuming  that	pppd  is  the  program
           being  used  to	connect	 to  the  Internet  and	 that chronyc has been
           installed at /usr/bin/chronyc, the script /etc/ppp/ip-up would include:
    
    	   /usr/bin/chronyc online
    
           and the script /etc/ppp/ip-down would include:
    
    	   /usr/bin/chronyc offline
    
           chronyd’s polling of the	 servers  would	 now  only  occur  whilst  the
           machine is actually connected to the Internet.
    
       Isolated networks
           This  section  shows  how to configure chronyd for computers that never
           have network conectivity to any computer which ultimately  derives  its
           time from a reference clock.
    
           In   this  situation,  one  computer  is	 selected  to  be  the	master
           timeserver. The other  computers	 are  either  direct  clients  of  the
           master, or clients of clients.
    
           The  local  directive  enables  a  local	 reference  mode, which allows
           chronyd to appear synchronised even when it is not.
    
           The rate value in the master’s drift  file  needs  to  be  set  to  the
           average	rate at which the master gains or loses time. chronyd includes
           support for this, in the form of the manual directive and  the  settime
           command in the chronyc program.
    
           If  the master is rebooted, chronyd can re-read the drift rate from the
           drift file. However, the master has no accurate estimate of the current
           time.  To  get  around  this,  the system can be configured so that the
           master can initially  set  itself  to  a	 ‘majority-vote’  of  selected
           clients'	 times; this allows the clients to ‘flywheel’ the master while
           it is rebooting.
    
           The smoothtime directive is useful when the clocks of the clients  need
           to  stay	 close together when the local time is adjusted by the settime
           command. The smoothing process needs to be activated by the  smoothtime
           activate	 command when the local time is ready to be served. After that
           point, any adjustments will be smoothed out.
    
           A typical configuration file for the master (called  master)  might  be
           (assuming the clients and the master are in the 192.168.165.x subnet):
    
    	   initstepslew 1 client1 client3 client6
    	   driftfile /var/lib/chrony/drift
    	   local stratum 8
    	   manual
    	   allow 192.168.165.0/24
    	   smoothtime 400 0.01
    	   rtcsync
    
           For the clients that have to resynchronise the master when it restarts,
           the configuration file might be:
    
    	   server master iburst
    	   driftfile /var/lib/chrony/drift
    	   allow 192.168.165.0/24
    	   makestep 1.0 3
    	   rtcsync
    
           The rest of the clients would  be  the  same,  except  that  the	 allow
           directive is not required.
    
           If  there  is  no  suitable computer to be designated as the master, or
           there is a requirement to keep the clients synchronised	even  when  it
           fails,  the orphan option of the local directive enables a special mode
           where the master is selected  from  multiple  computers	automatically.
           They all need to use the same local configuration and poll one another.
           The server with the smallest reference ID (which is  based  on  its  IP
           address)	 will  take  the  role	of  the	 master	 and  others  will  be
           synchronised to it. When it fails, the server with the second  smallest
           reference ID will take over and so on.
    
           A  configuration file for the first server might be (assuming there are
           three servers called master1, master2, and master3):
    
    	   initstepslew 1 master2 master3
    	   server master2
    	   server master3
    	   driftfile /var/lib/chrony/drift
    	   local stratum 8 orphan
    	   manual
    	   allow 192.168.165.0/24
    	   rtcsync
    
           The other servers would be  the	same,  except  the  hostnames  in  the
           initstepslew  and  server  directives  would be modified to specify the
           other servers. Their clients might be  configured  to  poll  all	 three
           servers.
    
       RTC tracking
           This  section  considers a computer which has occasional connections to
           the Internet and is  turned  off	 between  ‘sessions’.  In  this	 case,
           chronyd	relies	on the computer’s RTC to maintain the time between the
           periods when it is powered up. It assumes that Linux is run exclusively
           on  the	computer.  Dual-boot  systems  might work; it depends what (if
           anything) the other system does to the RTC. On 2.6 and  later  kernels,
           if   your  motherboard  has  a  HPET,  you  will	 need  to  enable  the
           HPET_EMULATE_RTC	 option	 in  your  kernel  configuration.   Otherwise,
           chronyd	will not be able to interact with the RTC device and will give
           up using it.
    
           When the computer is connected to the Internet, chronyd has  access  to
           external	  NTP	servers	  which	 it  makes  measurements  from.	 These
           measurements are saved, and straight-line fits are performed on them to
           provide an estimate of the computer’s time error and rate of gaining or
           losing time.
    
           When the computer is taken offline from the Internet, the best estimate
           of the gain or loss rate is used to free-run the computer until it next
           goes online.
    
           Whilst the computer is running, chronyd makes measurements of  the  RTC
           (via  the  /dev/rtc interface, which must be compiled into the kernel).
           An estimate is made of the RTC error at a particular  RTC  second,  and
           the rate at which the RTC gains or loses time relative to true time.
    
           When  the  computer  is powered down, the measurement histories for all
           the NTP servers are saved to files, and the RTC tracking information is
           also  saved  to	a  file (if the rtcfile directive has been specified).
           These pieces of information are also saved if  the  dump	 and  writertc
           commands respectively are issued through chronyc.
    
           When  the  computer is rebooted, chronyd reads the current RTC time and
           the RTC information saved at the last  shutdown.	 This  information  is
           used  to	 set  the  system  clock to the best estimate of what its time
           would have been	now,  had  it  been  left  running  continuously.  The
           measurement histories for the servers are then reloaded.
    
           The  next  time	the  computer  goes  online,  the  previous  sessions'
           measurements can contribute to the line-fitting process, which gives  a
           much better estimate of the computer’s gain or loss rate.
    
           One  problem with saving the measurements and RTC data when the machine
           is shut down is what happens if there is	 a  power  failure;  the  most
           recent  data  will  not	be saved. Although chronyd is robust enough to
           cope with this, some performance might be lost. (The main danger arises
           if  the	RTC  has  been	changed	 during	 the session, with the trimrtc
           command in chronyc. Because of this, trimrtc  will  make	 sure  that  a
           meaningful RTC file is saved after the change is completed).
    
           The  easiest  protection	 against  power failure is to put the dump and
           writertc commands in the same place as the offline command is issued to
           take   chronyd	offline;  because  chronyd  free-runs  between	online
           sessions, no parameters will change significantly between going offline
           from the Internet and any power failure.
    
           A  final	 point	regards	 computers which are left running for extended
           periods and where it is desired to spin down the hard disc when	it  is
           not  in	use  (e.g. when not accessed for 15 minutes). chronyd has been
           planned so it supports such operation; this is the reason why  the  RTC
           tracking	 parameters are not saved to disc after every update, but only
           when the user requests such a write, or during the  shutdown  sequence.
           The  only other facility that will generate periodic writes to the disc
           is the log rtc facility in the configuration file; this	option	should
           not be used if you want your disc to spin down.
    
           To illustrate how a computer might be configured for this case, example
           configuration files are shown.
    
           For the chrony.conf file, the following can be used as an example.
    
    	   server foo.example.net maxdelay 0.4 offline
    	   server bar.example.net maxdelay 0.4 offline
    	   server baz.example.net maxdelay 0.4 offline
    	   logdir /var/log/chrony
    	   log statistics measurements tracking
    	   driftfile /var/lib/chrony/drift
    	   makestep 1.0 3
    	   maxupdateskew 100.0
    	   dumpdir /var/lib/chrony
    	   rtcfile /var/lib/chrony/rtc
    
           pppd is used for connecting to the  Internet.  This  runs  two  scripts
           /etc/ppp/ip-up  and  /etc/ppp/ip-down  when  the	 link  goes online and
           offline respectively.
    
           The relevant part of the /etc/ppp/ip-up file is:
    
    	   /usr/bin/chronyc online
    
           and the relevant part of the /etc/ppp/ip-down script is:
    
    	   /usr/bin/chronyc -m offline dump writertc
    
           chronyd is started during the boot sequence with the -r and -s options.
           It  might  need	to  be started before any software that depends on the
           system  clock  not  jumping  or	moving	backwards,  depending  on  the
           directives in chronyd’s configuration file.
    
           For  the	 system	 shutdown,  chronyd  should  receive a SIGTERM several
           seconds before the final SIGKILL; the SIGTERM  causes  the  measurement
           histories and RTC information to be saved.
    
       Public NTP server
           chronyd	can  be	 configured to operate as a public NTP server, e.g. to
           join the pool.ntp.org  <http://www.pool.ntp.org/en/join.html>  project.
           The   configuration  is	similar	 to  the  NTP  client  with  permanent
           connection, except it needs to allow client access from all  addresses.
           It  is  recommended  to	find at least four good servers (e.g. from the
           pool, or on the NTP homepage). If the server has a  hardware  reference
           clock  (e.g.  a	GPS  receiver),	 it  can  be specified by the refclock
           directive.
    
           The amount of memory used for logging client accesses can be  increased
           in  order  to  enable clients to use the interleaved mode even when the
           server has a large number of clients, and better support rate  limiting
           if  it  is  enabled  by	the  ratelimit	directive. The system timezone
           database, if it is kept up to date and includes the right/UTC timezone,
           can  be	used as a reliable source to determine when a leap second will
           be applied to UTC. The -r option with the  dumpdir  directive  shortens
           the time in which chronyd will not be able to serve time to its clients
           when it needs to be restarted (e.g. after upgrading to a newer version,
           or a change in the configuration).
    
           The configuration file could look like:
    
    	   server foo.example.net iburst
    	   server bar.example.net iburst
    	   server baz.example.net iburst
    	   server qux.example.net iburst
    	   makestep 1.0 3
    	   rtcsync
    	   allow
    	   clientloglimit 100000000
    	   leapsectz right/UTC
    	   driftfile /var/lib/chrony/drift
    	   dumpdir /var/run/chrony
    
    SEE ALSO
           chronyc(1), chronyd(8)
    
    BUGS
           For instructions on how to report bugs, please visit <https://
           chrony.tuxfamily.org/>.
    
    AUTHORS
           chrony was written by Richard Curnow, Miroslav Lichvar, and others.
    
    
    
    chrony 3.2			  2017-09-15			CHRONY.CONF(5)
    

Log in to reply
 

© Lightnetics 2024