invoke-ntp.conf.texi revision 298770
1@node ntp.conf Notes
2@section Notes about ntp.conf
3@pindex ntp.conf
4@cindex Network Time Protocol (NTP) daemon configuration file format
5@ignore
6#
7# EDIT THIS FILE WITH CAUTION  (invoke-ntp.conf.texi)
8#
9# It has been AutoGen-ed  April 26, 2016 at 08:28:27 PM by AutoGen 5.18.5
10# From the definitions    ntp.conf.def
11# and the template file   agtexi-file.tpl
12@end ignore
13
14
15
16The
17@code{ntp.conf}
18configuration file is read at initial startup by the
19@code{ntpd(1ntpdmdoc)}
20daemon in order to specify the synchronization sources,
21modes and other related information.
22Usually, it is installed in the
23@file{/etc}
24directory,
25but could be installed elsewhere
26(see the daemon's
27@code{-c}
28command line option).
29
30The file format is similar to other
31@sc{unix}
32configuration files.
33Comments begin with a
34@quoteleft{}#@quoteright{}
35character and extend to the end of the line;
36blank lines are ignored.
37Configuration commands consist of an initial keyword
38followed by a list of arguments,
39some of which may be optional, separated by whitespace.
40Commands may not be continued over multiple lines.
41Arguments may be host names,
42host addresses written in numeric, dotted-quad form,
43integers, floating point numbers (when specifying times in seconds)
44and text strings.
45
46The rest of this page describes the configuration and control options.
47The
48"Notes on Configuring NTP and Setting up an NTP Subnet"
49page
50(available as part of the HTML documentation
51provided in
52@file{/usr/share/doc/ntp})
53contains an extended discussion of these options.
54In addition to the discussion of general
55@ref{Configuration Options},
56there are sections describing the following supported functionality
57and the options used to control it:
58@itemize @bullet
59@item 
60@ref{Authentication Support}
61@item 
62@ref{Monitoring Support}
63@item 
64@ref{Access Control Support}
65@item 
66@ref{Automatic NTP Configuration Options}
67@item 
68@ref{Reference Clock Support}
69@item 
70@ref{Miscellaneous Options}
71@end itemize
72
73Following these is a section describing
74@ref{Miscellaneous Options}.
75While there is a rich set of options available,
76the only required option is one or more
77@code{pool},
78@code{server},
79@code{peer},
80@code{broadcast}
81or
82@code{manycastclient}
83commands.
84@node Configuration Support
85@subsection Configuration Support
86Following is a description of the configuration commands in
87NTPv4.
88These commands have the same basic functions as in NTPv3 and
89in some cases new functions and new arguments.
90There are two
91classes of commands, configuration commands that configure a
92persistent association with a remote server or peer or reference
93clock, and auxiliary commands that specify environmental variables
94that control various related operations.
95@subsubsection Configuration Commands
96The various modes are determined by the command keyword and the
97type of the required IP address.
98Addresses are classed by type as
99(s) a remote server or peer (IPv4 class A, B and C), (b) the
100broadcast address of a local interface, (m) a multicast address (IPv4
101class D), or (r) a reference clock address (127.127.x.x).
102Note that
103only those options applicable to each command are listed below.
104Use
105of options not listed may not be caught as an error, but may result
106in some weird and even destructive behavior.
107
108If the Basic Socket Interface Extensions for IPv6 (RFC-2553)
109is detected, support for the IPv6 address family is generated
110in addition to the default support of the IPv4 address family.
111In a few cases, including the
112@code{reslist}
113billboard generated
114by
115@code{ntpq(1ntpqmdoc)}
116or
117@code{ntpdc(1ntpdcmdoc)},
118IPv6 addresses are automatically generated.
119IPv6 addresses can be identified by the presence of colons
120@quotedblleft{}:@quotedblright{}
121in the address field.
122IPv6 addresses can be used almost everywhere where
123IPv4 addresses can be used,
124with the exception of reference clock addresses,
125which are always IPv4.
126
127Note that in contexts where a host name is expected, a
128@code{-4}
129qualifier preceding
130the host name forces DNS resolution to the IPv4 namespace,
131while a
132@code{-6}
133qualifier forces DNS resolution to the IPv6 namespace.
134See IPv6 references for the
135equivalent classes for that address family.
136@table @asis
137@item @code{pool} @kbd{address} @code{[@code{burst}]} @code{[@code{iburst}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]}
138@item @code{server} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{burst}]} @code{[@code{iburst}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{true}]}
139@item @code{peer} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{true}]} @code{[@code{xleave}]}
140@item @code{broadcast} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{ttl} @kbd{ttl}]} @code{[@code{xleave}]}
141@item @code{manycastclient} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{ttl} @kbd{ttl}]}
142@end table
143
144These five commands specify the time server name or address to
145be used and the mode in which to operate.
146The
147@kbd{address}
148can be
149either a DNS name or an IP address in dotted-quad notation.
150Additional information on association behavior can be found in the
151"Association Management"
152page
153(available as part of the HTML documentation
154provided in
155@file{/usr/share/doc/ntp}).
156@table @asis
157@item @code{pool}
158For type s addresses, this command mobilizes a persistent
159client mode association with a number of remote servers.
160In this mode the local clock can synchronized to the
161remote server, but the remote server can never be synchronized to
162the local clock.
163@item @code{server}
164For type s and r addresses, this command mobilizes a persistent
165client mode association with the specified remote server or local
166radio clock.
167In this mode the local clock can synchronized to the
168remote server, but the remote server can never be synchronized to
169the local clock.
170This command should
171@emph{not}
172be used for type
173b or m addresses.
174@item @code{peer}
175For type s addresses (only), this command mobilizes a
176persistent symmetric-active mode association with the specified
177remote peer.
178In this mode the local clock can be synchronized to
179the remote peer or the remote peer can be synchronized to the local
180clock.
181This is useful in a network of servers where, depending on
182various failure scenarios, either the local or remote peer may be
183the better source of time.
184This command should NOT be used for type
185b, m or r addresses.
186@item @code{broadcast}
187For type b and m addresses (only), this
188command mobilizes a persistent broadcast mode association.
189Multiple
190commands can be used to specify multiple local broadcast interfaces
191(subnets) and/or multiple multicast groups.
192Note that local
193broadcast messages go only to the interface associated with the
194subnet specified, but multicast messages go to all interfaces.
195In broadcast mode the local server sends periodic broadcast
196messages to a client population at the
197@kbd{address}
198specified, which is usually the broadcast address on (one of) the
199local network(s) or a multicast address assigned to NTP.
200The IANA
201has assigned the multicast group address IPv4 224.0.1.1 and
202IPv6 ff05::101 (site local) exclusively to
203NTP, but other nonconflicting addresses can be used to contain the
204messages within administrative boundaries.
205Ordinarily, this
206specification applies only to the local server operating as a
207sender; for operation as a broadcast client, see the
208@code{broadcastclient}
209or
210@code{multicastclient}
211commands
212below.
213@item @code{manycastclient}
214For type m addresses (only), this command mobilizes a
215manycast client mode association for the multicast address
216specified.
217In this case a specific address must be supplied which
218matches the address used on the
219@code{manycastserver}
220command for
221the designated manycast servers.
222The NTP multicast address
223224.0.1.1 assigned by the IANA should NOT be used, unless specific
224means are taken to avoid spraying large areas of the Internet with
225these messages and causing a possibly massive implosion of replies
226at the sender.
227The
228@code{manycastserver}
229command specifies that the local server
230is to operate in client mode with the remote servers that are
231discovered as the result of broadcast/multicast messages.
232The
233client broadcasts a request message to the group address associated
234with the specified
235@kbd{address}
236and specifically enabled
237servers respond to these messages.
238The client selects the servers
239providing the best time and continues as with the
240@code{server}
241command.
242The remaining servers are discarded as if never
243heard.
244@end table
245
246Options:
247@table @asis
248@item @code{autokey}
249All packets sent to and received from the server or peer are to
250include authentication fields encrypted using the autokey scheme
251described in
252@ref{Authentication Options}.
253@item @code{burst}
254when the server is reachable, send a burst of eight packets
255instead of the usual one.
256The packet spacing is normally 2 s;
257however, the spacing between the first and second packets
258can be changed with the
259@code{calldelay}
260command to allow
261additional time for a modem or ISDN call to complete.
262This is designed to improve timekeeping quality
263with the
264@code{server}
265command and s addresses.
266@item @code{iburst}
267When the server is unreachable, send a burst of eight packets
268instead of the usual one.
269The packet spacing is normally 2 s;
270however, the spacing between the first two packets can be
271changed with the
272@code{calldelay}
273command to allow
274additional time for a modem or ISDN call to complete.
275This is designed to speed the initial synchronization
276acquisition with the
277@code{server}
278command and s addresses and when
279@code{ntpd(1ntpdmdoc)}
280is started with the
281@code{-q}
282option.
283@item @code{key} @kbd{key}
284All packets sent to and received from the server or peer are to
285include authentication fields encrypted using the specified
286@kbd{key}
287identifier with values from 1 to 65534, inclusive.
288The
289default is to include no encryption field.
290@item @code{minpoll} @kbd{minpoll}
291@item @code{maxpoll} @kbd{maxpoll}
292These options specify the minimum and maximum poll intervals
293for NTP messages, as a power of 2 in seconds
294The maximum poll
295interval defaults to 10 (1,024 s), but can be increased by the
296@code{maxpoll}
297option to an upper limit of 17 (36.4 h).
298The
299minimum poll interval defaults to 6 (64 s), but can be decreased by
300the
301@code{minpoll}
302option to a lower limit of 4 (16 s).
303@item @code{noselect}
304Marks the server as unused, except for display purposes.
305The server is discarded by the selection algroithm.
306@item @code{preempt}
307Says the association can be preempted.
308@item @code{true}
309Marks the server as a truechimer.
310Use this option only for testing.
311@item @code{prefer}
312Marks the server as preferred.
313All other things being equal,
314this host will be chosen for synchronization among a set of
315correctly operating hosts.
316See the
317"Mitigation Rules and the prefer Keyword"
318page
319(available as part of the HTML documentation
320provided in
321@file{/usr/share/doc/ntp})
322for further information.
323@item @code{true}
324Forces the association to always survive the selection and clustering algorithms.
325This option should almost certainly
326@emph{only}
327be used while testing an association.
328@item @code{ttl} @kbd{ttl}
329This option is used only with broadcast server and manycast
330client modes.
331It specifies the time-to-live
332@kbd{ttl}
333to
334use on broadcast server and multicast server and the maximum
335@kbd{ttl}
336for the expanding ring search with manycast
337client packets.
338Selection of the proper value, which defaults to
339127, is something of a black art and should be coordinated with the
340network administrator.
341@item @code{version} @kbd{version}
342Specifies the version number to be used for outgoing NTP
343packets.
344Versions 1-4 are the choices, with version 4 the
345default.
346@item @code{xleave}
347Valid in
348@code{peer}
349and
350@code{broadcast}
351modes only, this flag enables interleave mode.
352@end table
353@subsubsection Auxiliary Commands
354@table @asis
355@item @code{broadcastclient}
356This command enables reception of broadcast server messages to
357any local interface (type b) address.
358Upon receiving a message for
359the first time, the broadcast client measures the nominal server
360propagation delay using a brief client/server exchange with the
361server, then enters the broadcast client mode, in which it
362synchronizes to succeeding broadcast messages.
363Note that, in order
364to avoid accidental or malicious disruption in this mode, both the
365server and client should operate using symmetric-key or public-key
366authentication as described in
367@ref{Authentication Options}.
368@item @code{manycastserver} @kbd{address} @kbd{...}
369This command enables reception of manycast client messages to
370the multicast group address(es) (type m) specified.
371At least one
372address is required, but the NTP multicast address 224.0.1.1
373assigned by the IANA should NOT be used, unless specific means are
374taken to limit the span of the reply and avoid a possibly massive
375implosion at the original sender.
376Note that, in order to avoid
377accidental or malicious disruption in this mode, both the server
378and client should operate using symmetric-key or public-key
379authentication as described in
380@ref{Authentication Options}.
381@item @code{multicastclient} @kbd{address} @kbd{...}
382This command enables reception of multicast server messages to
383the multicast group address(es) (type m) specified.
384Upon receiving
385a message for the first time, the multicast client measures the
386nominal server propagation delay using a brief client/server
387exchange with the server, then enters the broadcast client mode, in
388which it synchronizes to succeeding multicast messages.
389Note that,
390in order to avoid accidental or malicious disruption in this mode,
391both the server and client should operate using symmetric-key or
392public-key authentication as described in
393@ref{Authentication Options}.
394@item @code{mdnstries} @kbd{number}
395If we are participating in mDNS,
396after we have synched for the first time
397we attempt to register with the mDNS system.
398If that registration attempt fails,
399we try again at one minute intervals for up to
400@code{mdnstries}
401times.
402After all,
403@code{ntpd}
404may be starting before mDNS.
405The default value for
406@code{mdnstries}
407is 5.
408@end table
409@node Authentication Support
410@subsection Authentication Support
411Authentication support allows the NTP client to verify that the
412server is in fact known and trusted and not an intruder intending
413accidentally or on purpose to masquerade as that server.
414The NTPv3
415specification RFC-1305 defines a scheme which provides
416cryptographic authentication of received NTP packets.
417Originally,
418this was done using the Data Encryption Standard (DES) algorithm
419operating in Cipher Block Chaining (CBC) mode, commonly called
420DES-CBC.
421Subsequently, this was replaced by the RSA Message Digest
4225 (MD5) algorithm using a private key, commonly called keyed-MD5.
423Either algorithm computes a message digest, or one-way hash, which
424can be used to verify the server has the correct private key and
425key identifier.
426
427NTPv4 retains the NTPv3 scheme, properly described as symmetric key
428cryptography and, in addition, provides a new Autokey scheme
429based on public key cryptography.
430Public key cryptography is generally considered more secure
431than symmetric key cryptography, since the security is based
432on a private value which is generated by each server and
433never revealed.
434With Autokey all key distribution and
435management functions involve only public values, which
436considerably simplifies key distribution and storage.
437Public key management is based on X.509 certificates,
438which can be provided by commercial services or
439produced by utility programs in the OpenSSL software library
440or the NTPv4 distribution.
441
442While the algorithms for symmetric key cryptography are
443included in the NTPv4 distribution, public key cryptography
444requires the OpenSSL software library to be installed
445before building the NTP distribution.
446Directions for doing that
447are on the Building and Installing the Distribution page.
448
449Authentication is configured separately for each association
450using the
451@code{key}
452or
453@code{autokey}
454subcommand on the
455@code{peer},
456@code{server},
457@code{broadcast}
458and
459@code{manycastclient}
460configuration commands as described in
461@ref{Configuration Options}
462page.
463The authentication
464options described below specify the locations of the key files,
465if other than default, which symmetric keys are trusted
466and the interval between various operations, if other than default.
467
468Authentication is always enabled,
469although ineffective if not configured as
470described below.
471If a NTP packet arrives
472including a message authentication
473code (MAC), it is accepted only if it
474passes all cryptographic checks.
475The
476checks require correct key ID, key value
477and message digest.
478If the packet has
479been modified in any way or replayed
480by an intruder, it will fail one or more
481of these checks and be discarded.
482Furthermore, the Autokey scheme requires a
483preliminary protocol exchange to obtain
484the server certificate, verify its
485credentials and initialize the protocol
486
487The
488@code{auth}
489flag controls whether new associations or
490remote configuration commands require cryptographic authentication.
491This flag can be set or reset by the
492@code{enable}
493and
494@code{disable}
495commands and also by remote
496configuration commands sent by a
497@code{ntpdc(1ntpdcmdoc)}
498program running on
499another machine.
500If this flag is enabled, which is the default
501case, new broadcast client and symmetric passive associations and
502remote configuration commands must be cryptographically
503authenticated using either symmetric key or public key cryptography.
504If this
505flag is disabled, these operations are effective
506even if not cryptographic
507authenticated.
508It should be understood
509that operating with the
510@code{auth}
511flag disabled invites a significant vulnerability
512where a rogue hacker can
513masquerade as a falseticker and seriously
514disrupt system timekeeping.
515It is
516important to note that this flag has no purpose
517other than to allow or disallow
518a new association in response to new broadcast
519and symmetric active messages
520and remote configuration commands and, in particular,
521the flag has no effect on
522the authentication process itself.
523
524An attractive alternative where multicast support is available
525is manycast mode, in which clients periodically troll
526for servers as described in the
527@ref{Automatic NTP Configuration Options}
528page.
529Either symmetric key or public key
530cryptographic authentication can be used in this mode.
531The principle advantage
532of manycast mode is that potential servers need not be
533configured in advance,
534since the client finds them during regular operation,
535and the configuration
536files for all clients can be identical.
537
538The security model and protocol schemes for
539both symmetric key and public key
540cryptography are summarized below;
541further details are in the briefings, papers
542and reports at the NTP project page linked from
543@code{http://www.ntp.org/}.
544@subsubsection Symmetric-Key Cryptography
545The original RFC-1305 specification allows any one of possibly
54665,534 keys, each distinguished by a 32-bit key identifier, to
547authenticate an association.
548The servers and clients involved must
549agree on the key and key identifier to
550authenticate NTP packets.
551Keys and
552related information are specified in a key
553file, usually called
554@file{ntp.keys},
555which must be distributed and stored using
556secure means beyond the scope of the NTP protocol itself.
557Besides the keys used
558for ordinary NTP associations,
559additional keys can be used as passwords for the
560@code{ntpq(1ntpqmdoc)}
561and
562@code{ntpdc(1ntpdcmdoc)}
563utility programs.
564
565When
566@code{ntpd(1ntpdmdoc)}
567is first started, it reads the key file specified in the
568@code{keys}
569configuration command and installs the keys
570in the key cache.
571However,
572individual keys must be activated with the
573@code{trusted}
574command before use.
575This
576allows, for instance, the installation of possibly
577several batches of keys and
578then activating or deactivating each batch
579remotely using
580@code{ntpdc(1ntpdcmdoc)}.
581This also provides a revocation capability that can be used
582if a key becomes compromised.
583The
584@code{requestkey}
585command selects the key used as the password for the
586@code{ntpdc(1ntpdcmdoc)}
587utility, while the
588@code{controlkey}
589command selects the key used as the password for the
590@code{ntpq(1ntpqmdoc)}
591utility.
592@subsubsection Public Key Cryptography
593NTPv4 supports the original NTPv3 symmetric key scheme
594described in RFC-1305 and in addition the Autokey protocol,
595which is based on public key cryptography.
596The Autokey Version 2 protocol described on the Autokey Protocol
597page verifies packet integrity using MD5 message digests
598and verifies the source with digital signatures and any of several
599digest/signature schemes.
600Optional identity schemes described on the Identity Schemes
601page and based on cryptographic challenge/response algorithms
602are also available.
603Using all of these schemes provides strong security against
604replay with or without modification, spoofing, masquerade
605and most forms of clogging attacks.
606
607The Autokey protocol has several modes of operation
608corresponding to the various NTP modes supported.
609Most modes use a special cookie which can be
610computed independently by the client and server,
611but encrypted in transmission.
612All modes use in addition a variant of the S-KEY scheme,
613in which a pseudo-random key list is generated and used
614in reverse order.
615These schemes are described along with an executive summary,
616current status, briefing slides and reading list on the
617@ref{Autonomous Authentication}
618page.
619
620The specific cryptographic environment used by Autokey servers
621and clients is determined by a set of files
622and soft links generated by the
623@code{ntp-keygen(1ntpkeygenmdoc)}
624program.
625This includes a required host key file,
626required certificate file and optional sign key file,
627leapsecond file and identity scheme files.
628The
629digest/signature scheme is specified in the X.509 certificate
630along with the matching sign key.
631There are several schemes
632available in the OpenSSL software library, each identified
633by a specific string such as
634@code{md5WithRSAEncryption},
635which stands for the MD5 message digest with RSA
636encryption scheme.
637The current NTP distribution supports
638all the schemes in the OpenSSL library, including
639those based on RSA and DSA digital signatures.
640
641NTP secure groups can be used to define cryptographic compartments
642and security hierarchies.
643It is important that every host
644in the group be able to construct a certificate trail to one
645or more trusted hosts in the same group.
646Each group
647host runs the Autokey protocol to obtain the certificates
648for all hosts along the trail to one or more trusted hosts.
649This requires the configuration file in all hosts to be
650engineered so that, even under anticipated failure conditions,
651the NTP subnet will form such that every group host can find
652a trail to at least one trusted host.
653@subsubsection Naming and Addressing
654It is important to note that Autokey does not use DNS to
655resolve addresses, since DNS can't be completely trusted
656until the name servers have synchronized clocks.
657The cryptographic name used by Autokey to bind the host identity
658credentials and cryptographic values must be independent
659of interface, network and any other naming convention.
660The name appears in the host certificate in either or both
661the subject and issuer fields, so protection against
662DNS compromise is essential.
663
664By convention, the name of an Autokey host is the name returned
665by the Unix
666@code{gethostname(2)}
667system call or equivalent in other systems.
668By the system design
669model, there are no provisions to allow alternate names or aliases.
670However, this is not to say that DNS aliases, different names
671for each interface, etc., are constrained in any way.
672
673It is also important to note that Autokey verifies authenticity
674using the host name, network address and public keys,
675all of which are bound together by the protocol specifically
676to deflect masquerade attacks.
677For this reason Autokey
678includes the source and destination IP addresses in message digest
679computations and so the same addresses must be available
680at both the server and client.
681For this reason operation
682with network address translation schemes is not possible.
683This reflects the intended robust security model where government
684and corporate NTP servers are operated outside firewall perimeters.
685@subsubsection Operation
686A specific combination of authentication scheme (none,
687symmetric key, public key) and identity scheme is called
688a cryptotype, although not all combinations are compatible.
689There may be management configurations where the clients,
690servers and peers may not all support the same cryptotypes.
691A secure NTPv4 subnet can be configured in many ways while
692keeping in mind the principles explained above and
693in this section.
694Note however that some cryptotype
695combinations may successfully interoperate with each other,
696but may not represent good security practice.
697
698The cryptotype of an association is determined at the time
699of mobilization, either at configuration time or some time
700later when a message of appropriate cryptotype arrives.
701When mobilized by a
702@code{server}
703or
704@code{peer}
705configuration command and no
706@code{key}
707or
708@code{autokey}
709subcommands are present, the association is not
710authenticated; if the
711@code{key}
712subcommand is present, the association is authenticated
713using the symmetric key ID specified; if the
714@code{autokey}
715subcommand is present, the association is authenticated
716using Autokey.
717
718When multiple identity schemes are supported in the Autokey
719protocol, the first message exchange determines which one is used.
720The client request message contains bits corresponding
721to which schemes it has available.
722The server response message
723contains bits corresponding to which schemes it has available.
724Both server and client match the received bits with their own
725and select a common scheme.
726
727Following the principle that time is a public value,
728a server responds to any client packet that matches
729its cryptotype capabilities.
730Thus, a server receiving
731an unauthenticated packet will respond with an unauthenticated
732packet, while the same server receiving a packet of a cryptotype
733it supports will respond with packets of that cryptotype.
734However, unconfigured broadcast or manycast client
735associations or symmetric passive associations will not be
736mobilized unless the server supports a cryptotype compatible
737with the first packet received.
738By default, unauthenticated associations will not be mobilized
739unless overridden in a decidedly dangerous way.
740
741Some examples may help to reduce confusion.
742Client Alice has no specific cryptotype selected.
743Server Bob has both a symmetric key file and minimal Autokey files.
744Alice's unauthenticated messages arrive at Bob, who replies with
745unauthenticated messages.
746Cathy has a copy of Bob's symmetric
747key file and has selected key ID 4 in messages to Bob.
748Bob verifies the message with his key ID 4.
749If it's the
750same key and the message is verified, Bob sends Cathy a reply
751authenticated with that key.
752If verification fails,
753Bob sends Cathy a thing called a crypto-NAK, which tells her
754something broke.
755She can see the evidence using the
756@code{ntpq(1ntpqmdoc)}
757program.
758
759Denise has rolled her own host key and certificate.
760She also uses one of the identity schemes as Bob.
761She sends the first Autokey message to Bob and they
762both dance the protocol authentication and identity steps.
763If all comes out okay, Denise and Bob continue as described above.
764
765It should be clear from the above that Bob can support
766all the girls at the same time, as long as he has compatible
767authentication and identity credentials.
768Now, Bob can act just like the girls in his own choice of servers;
769he can run multiple configured associations with multiple different
770servers (or the same server, although that might not be useful).
771But, wise security policy might preclude some cryptotype
772combinations; for instance, running an identity scheme
773with one server and no authentication with another might not be wise.
774@subsubsection Key Management
775The cryptographic values used by the Autokey protocol are
776incorporated as a set of files generated by the
777@code{ntp-keygen(1ntpkeygenmdoc)}
778utility program, including symmetric key, host key and
779public certificate files, as well as sign key, identity parameters
780and leapseconds files.
781Alternatively, host and sign keys and
782certificate files can be generated by the OpenSSL utilities
783and certificates can be imported from public certificate
784authorities.
785Note that symmetric keys are necessary for the
786@code{ntpq(1ntpqmdoc)}
787and
788@code{ntpdc(1ntpdcmdoc)}
789utility programs.
790The remaining files are necessary only for the
791Autokey protocol.
792
793Certificates imported from OpenSSL or public certificate
794authorities have certian limitations.
795The certificate should be in ASN.1 syntax, X.509 Version 3
796format and encoded in PEM, which is the same format
797used by OpenSSL.
798The overall length of the certificate encoded
799in ASN.1 must not exceed 1024 bytes.
800The subject distinguished
801name field (CN) is the fully qualified name of the host
802on which it is used; the remaining subject fields are ignored.
803The certificate extension fields must not contain either
804a subject key identifier or a issuer key identifier field;
805however, an extended key usage field for a trusted host must
806contain the value
807@code{trustRoot};.
808Other extension fields are ignored.
809@subsubsection Authentication Commands
810@table @asis
811@item @code{autokey} @code{[@kbd{logsec}]}
812Specifies the interval between regenerations of the session key
813list used with the Autokey protocol.
814Note that the size of the key
815list for each association depends on this interval and the current
816poll interval.
817The default value is 12 (4096 s or about 1.1 hours).
818For poll intervals above the specified interval, a session key list
819with a single entry will be regenerated for every message
820sent.
821@item @code{controlkey} @kbd{key}
822Specifies the key identifier to use with the
823@code{ntpq(1ntpqmdoc)}
824utility, which uses the standard
825protocol defined in RFC-1305.
826The
827@kbd{key}
828argument is
829the key identifier for a trusted key, where the value can be in the
830range 1 to 65,534, inclusive.
831@item @code{crypto} @code{[@code{cert} @kbd{file}]} @code{[@code{leap} @kbd{file}]} @code{[@code{randfile} @kbd{file}]} @code{[@code{host} @kbd{file}]} @code{[@code{sign} @kbd{file}]} @code{[@code{gq} @kbd{file}]} @code{[@code{gqpar} @kbd{file}]} @code{[@code{iffpar} @kbd{file}]} @code{[@code{mvpar} @kbd{file}]} @code{[@code{pw} @kbd{password}]}
832This command requires the OpenSSL library.
833It activates public key
834cryptography, selects the message digest and signature
835encryption scheme and loads the required private and public
836values described above.
837If one or more files are left unspecified,
838the default names are used as described above.
839Unless the complete path and name of the file are specified, the
840location of a file is relative to the keys directory specified
841in the
842@code{keysdir}
843command or default
844@file{/usr/local/etc}.
845Following are the subcommands:
846@table @asis
847@item @code{cert} @kbd{file}
848Specifies the location of the required host public certificate file.
849This overrides the link
850@file{ntpkey_cert_}@kbd{hostname}
851in the keys directory.
852@item @code{gqpar} @kbd{file}
853Specifies the location of the optional GQ parameters file.
854This
855overrides the link
856@file{ntpkey_gq_}@kbd{hostname}
857in the keys directory.
858@item @code{host} @kbd{file}
859Specifies the location of the required host key file.
860This overrides
861the link
862@file{ntpkey_key_}@kbd{hostname}
863in the keys directory.
864@item @code{iffpar} @kbd{file}
865Specifies the location of the optional IFF parameters file.
866This overrides the link
867@file{ntpkey_iff_}@kbd{hostname}
868in the keys directory.
869@item @code{leap} @kbd{file}
870Specifies the location of the optional leapsecond file.
871This overrides the link
872@file{ntpkey_leap}
873in the keys directory.
874@item @code{mvpar} @kbd{file}
875Specifies the location of the optional MV parameters file.
876This overrides the link
877@file{ntpkey_mv_}@kbd{hostname}
878in the keys directory.
879@item @code{pw} @kbd{password}
880Specifies the password to decrypt files containing private keys and
881identity parameters.
882This is required only if these files have been
883encrypted.
884@item @code{randfile} @kbd{file}
885Specifies the location of the random seed file used by the OpenSSL
886library.
887The defaults are described in the main text above.
888@item @code{sign} @kbd{file}
889Specifies the location of the optional sign key file.
890This overrides
891the link
892@file{ntpkey_sign_}@kbd{hostname}
893in the keys directory.
894If this file is
895not found, the host key is also the sign key.
896@end table
897@item @code{keys} @kbd{keyfile}
898Specifies the complete path and location of the MD5 key file
899containing the keys and key identifiers used by
900@code{ntpd(1ntpdmdoc)},
901@code{ntpq(1ntpqmdoc)}
902and
903@code{ntpdc(1ntpdcmdoc)}
904when operating with symmetric key cryptography.
905This is the same operation as the
906@code{-k}
907command line option.
908@item @code{keysdir} @kbd{path}
909This command specifies the default directory path for
910cryptographic keys, parameters and certificates.
911The default is
912@file{/usr/local/etc/}.
913@item @code{requestkey} @kbd{key}
914Specifies the key identifier to use with the
915@code{ntpdc(1ntpdcmdoc)}
916utility program, which uses a
917proprietary protocol specific to this implementation of
918@code{ntpd(1ntpdmdoc)}.
919The
920@kbd{key}
921argument is a key identifier
922for the trusted key, where the value can be in the range 1 to
92365,534, inclusive.
924@item @code{revoke} @kbd{logsec}
925Specifies the interval between re-randomization of certain
926cryptographic values used by the Autokey scheme, as a power of 2 in
927seconds.
928These values need to be updated frequently in order to
929deflect brute-force attacks on the algorithms of the scheme;
930however, updating some values is a relatively expensive operation.
931The default interval is 16 (65,536 s or about 18 hours).
932For poll
933intervals above the specified interval, the values will be updated
934for every message sent.
935@item @code{trustedkey} @kbd{key} @kbd{...}
936Specifies the key identifiers which are trusted for the
937purposes of authenticating peers with symmetric key cryptography,
938as well as keys used by the
939@code{ntpq(1ntpqmdoc)}
940and
941@code{ntpdc(1ntpdcmdoc)}
942programs.
943The authentication procedures require that both the local
944and remote servers share the same key and key identifier for this
945purpose, although different keys can be used with different
946servers.
947The
948@kbd{key}
949arguments are 32-bit unsigned
950integers with values from 1 to 65,534.
951@end table
952@subsubsection Error Codes
953The following error codes are reported via the NTP control
954and monitoring protocol trap mechanism.
955@table @asis
956@item 101
957(bad field format or length)
958The packet has invalid version, length or format.
959@item 102
960(bad timestamp)
961The packet timestamp is the same or older than the most recent received.
962This could be due to a replay or a server clock time step.
963@item 103
964(bad filestamp)
965The packet filestamp is the same or older than the most recent received.
966This could be due to a replay or a key file generation error.
967@item 104
968(bad or missing public key)
969The public key is missing, has incorrect format or is an unsupported type.
970@item 105
971(unsupported digest type)
972The server requires an unsupported digest/signature scheme.
973@item 106
974(mismatched digest types)
975Not used.
976@item 107
977(bad signature length)
978The signature length does not match the current public key.
979@item 108
980(signature not verified)
981The message fails the signature check.
982It could be bogus or signed by a
983different private key.
984@item 109
985(certificate not verified)
986The certificate is invalid or signed with the wrong key.
987@item 110
988(certificate not verified)
989The certificate is not yet valid or has expired or the signature could not
990be verified.
991@item 111
992(bad or missing cookie)
993The cookie is missing, corrupted or bogus.
994@item 112
995(bad or missing leapseconds table)
996The leapseconds table is missing, corrupted or bogus.
997@item 113
998(bad or missing certificate)
999The certificate is missing, corrupted or bogus.
1000@item 114
1001(bad or missing identity)
1002The identity key is missing, corrupt or bogus.
1003@end table
1004@node Monitoring Support
1005@subsection Monitoring Support
1006@code{ntpd(1ntpdmdoc)}
1007includes a comprehensive monitoring facility suitable
1008for continuous, long term recording of server and client
1009timekeeping performance.
1010See the
1011@code{statistics}
1012command below
1013for a listing and example of each type of statistics currently
1014supported.
1015Statistic files are managed using file generation sets
1016and scripts in the
1017@file{./scripts}
1018directory of the source code distribution.
1019Using
1020these facilities and
1021@sc{unix}
1022@code{cron(8)}
1023jobs, the data can be
1024automatically summarized and archived for retrospective analysis.
1025@subsubsection Monitoring Commands
1026@table @asis
1027@item @code{statistics} @kbd{name} @kbd{...}
1028Enables writing of statistics records.
1029Currently, eight kinds of
1030@kbd{name}
1031statistics are supported.
1032@table @asis
1033@item @code{clockstats}
1034Enables recording of clock driver statistics information.
1035Each update
1036received from a clock driver appends a line of the following form to
1037the file generation set named
1038@code{clockstats}:
1039@verbatim
104049213 525.624 127.127.4.1 93 226 00:08:29.606 D
1041@end verbatim
1042
1043The first two fields show the date (Modified Julian Day) and time
1044(seconds and fraction past UTC midnight).
1045The next field shows the
1046clock address in dotted-quad notation.
1047The final field shows the last
1048timecode received from the clock in decoded ASCII format, where
1049meaningful.
1050In some clock drivers a good deal of additional information
1051can be gathered and displayed as well.
1052See information specific to each
1053clock for further details.
1054@item @code{cryptostats}
1055This option requires the OpenSSL cryptographic software library.
1056It
1057enables recording of cryptographic public key protocol information.
1058Each message received by the protocol module appends a line of the
1059following form to the file generation set named
1060@code{cryptostats}:
1061@verbatim
106249213 525.624 127.127.4.1 message
1063@end verbatim
1064
1065The first two fields show the date (Modified Julian Day) and time
1066(seconds and fraction past UTC midnight).
1067The next field shows the peer
1068address in dotted-quad notation, The final message field includes the
1069message type and certain ancillary information.
1070See the
1071@ref{Authentication Options}
1072section for further information.
1073@item @code{loopstats}
1074Enables recording of loop filter statistics information.
1075Each
1076update of the local clock outputs a line of the following form to
1077the file generation set named
1078@code{loopstats}:
1079@verbatim
108050935 75440.031 0.000006019 13.778190 0.000351733 0.0133806
1081@end verbatim
1082
1083The first two fields show the date (Modified Julian Day) and
1084time (seconds and fraction past UTC midnight).
1085The next five fields
1086show time offset (seconds), frequency offset (parts per million -
1087PPM), RMS jitter (seconds), Allan deviation (PPM) and clock
1088discipline time constant.
1089@item @code{peerstats}
1090Enables recording of peer statistics information.
1091This includes
1092statistics records of all peers of a NTP server and of special
1093signals, where present and configured.
1094Each valid update appends a
1095line of the following form to the current element of a file
1096generation set named
1097@code{peerstats}:
1098@verbatim
109948773 10847.650 127.127.4.1 9714 -0.001605376 0.000000000 0.001424877 0.000958674
1100@end verbatim
1101
1102The first two fields show the date (Modified Julian Day) and
1103time (seconds and fraction past UTC midnight).
1104The next two fields
1105show the peer address in dotted-quad notation and status,
1106respectively.
1107The status field is encoded in hex in the format
1108described in Appendix A of the NTP specification RFC 1305.
1109The final four fields show the offset,
1110delay, dispersion and RMS jitter, all in seconds.
1111@item @code{rawstats}
1112Enables recording of raw-timestamp statistics information.
1113This
1114includes statistics records of all peers of a NTP server and of
1115special signals, where present and configured.
1116Each NTP message
1117received from a peer or clock driver appends a line of the
1118following form to the file generation set named
1119@code{rawstats}:
1120@verbatim
112150928 2132.543 128.4.1.1 128.4.1.20 3102453281.584327000 3102453281.58622800031 02453332.540806000 3102453332.541458000
1122@end verbatim
1123
1124The first two fields show the date (Modified Julian Day) and
1125time (seconds and fraction past UTC midnight).
1126The next two fields
1127show the remote peer or clock address followed by the local address
1128in dotted-quad notation.
1129The final four fields show the originate,
1130receive, transmit and final NTP timestamps in order.
1131The timestamp
1132values are as received and before processing by the various data
1133smoothing and mitigation algorithms.
1134@item @code{sysstats}
1135Enables recording of ntpd statistics counters on a periodic basis.
1136Each
1137hour a line of the following form is appended to the file generation
1138set named
1139@code{sysstats}:
1140@verbatim
114150928 2132.543 36000 81965 0 9546 56 71793 512 540 10 147
1142@end verbatim
1143
1144The first two fields show the date (Modified Julian Day) and time
1145(seconds and fraction past UTC midnight).
1146The remaining ten fields show
1147the statistics counter values accumulated since the last generated
1148line.
1149@table @asis
1150@item Time since restart @code{36000}
1151Time in hours since the system was last rebooted.
1152@item Packets received @code{81965}
1153Total number of packets received.
1154@item Packets processed @code{0}
1155Number of packets received in response to previous packets sent
1156@item Current version @code{9546}
1157Number of packets matching the current NTP version.
1158@item Previous version @code{56}
1159Number of packets matching the previous NTP version.
1160@item Bad version @code{71793}
1161Number of packets matching neither NTP version.
1162@item Access denied @code{512}
1163Number of packets denied access for any reason.
1164@item Bad length or format @code{540}
1165Number of packets with invalid length, format or port number.
1166@item Bad authentication @code{10}
1167Number of packets not verified as authentic.
1168@item Rate exceeded @code{147}
1169Number of packets discarded due to rate limitation.
1170@end table
1171@item @code{statsdir} @kbd{directory_path}
1172Indicates the full path of a directory where statistics files
1173should be created (see below).
1174This keyword allows
1175the (otherwise constant)
1176@code{filegen}
1177filename prefix to be modified for file generation sets, which
1178is useful for handling statistics logs.
1179@item @code{filegen} @kbd{name} @code{[@code{file} @kbd{filename}]} @code{[@code{type} @kbd{typename}]} @code{[@code{link} | @code{nolink}]} @code{[@code{enable} | @code{disable}]}
1180Configures setting of generation file set name.
1181Generation
1182file sets provide a means for handling files that are
1183continuously growing during the lifetime of a server.
1184Server statistics are a typical example for such files.
1185Generation file sets provide access to a set of files used
1186to store the actual data.
1187At any time at most one element
1188of the set is being written to.
1189The type given specifies
1190when and how data will be directed to a new element of the set.
1191This way, information stored in elements of a file set
1192that are currently unused are available for administrational
1193operations without the risk of disturbing the operation of ntpd.
1194(Most important: they can be removed to free space for new data
1195produced.)
1196
1197Note that this command can be sent from the
1198@code{ntpdc(1ntpdcmdoc)}
1199program running at a remote location.
1200@table @asis
1201@item @code{name}
1202This is the type of the statistics records, as shown in the
1203@code{statistics}
1204command.
1205@item @code{file} @kbd{filename}
1206This is the file name for the statistics records.
1207Filenames of set
1208members are built from three concatenated elements
1209@code{prefix},
1210@code{filename}
1211and
1212@code{suffix}:
1213@table @asis
1214@item @code{prefix}
1215This is a constant filename path.
1216It is not subject to
1217modifications via the
1218@kbd{filegen}
1219option.
1220It is defined by the
1221server, usually specified as a compile-time constant.
1222It may,
1223however, be configurable for individual file generation sets
1224via other commands.
1225For example, the prefix used with
1226@kbd{loopstats}
1227and
1228@kbd{peerstats}
1229generation can be configured using the
1230@kbd{statsdir}
1231option explained above.
1232@item @code{filename}
1233This string is directly concatenated to the prefix mentioned
1234above (no intervening
1235@quoteleft{}/@quoteright{}).
1236This can be modified using
1237the file argument to the
1238@kbd{filegen}
1239statement.
1240No
1241@file{..}
1242elements are
1243allowed in this component to prevent filenames referring to
1244parts outside the filesystem hierarchy denoted by
1245@kbd{prefix}.
1246@item @code{suffix}
1247This part is reflects individual elements of a file set.
1248It is
1249generated according to the type of a file set.
1250@end table
1251@item @code{type} @kbd{typename}
1252A file generation set is characterized by its type.
1253The following
1254types are supported:
1255@table @asis
1256@item @code{none}
1257The file set is actually a single plain file.
1258@item @code{pid}
1259One element of file set is used per incarnation of a ntpd
1260server.
1261This type does not perform any changes to file set
1262members during runtime, however it provides an easy way of
1263separating files belonging to different
1264@code{ntpd(1ntpdmdoc)}
1265server incarnations.
1266The set member filename is built by appending a
1267@quoteleft{}.@quoteright{}
1268to concatenated
1269@kbd{prefix}
1270and
1271@kbd{filename}
1272strings, and
1273appending the decimal representation of the process ID of the
1274@code{ntpd(1ntpdmdoc)}
1275server process.
1276@item @code{day}
1277One file generation set element is created per day.
1278A day is
1279defined as the period between 00:00 and 24:00 UTC.
1280The file set
1281member suffix consists of a
1282@quoteleft{}.@quoteright{}
1283and a day specification in
1284the form
1285@code{YYYYMMdd}.
1286@code{YYYY}
1287is a 4-digit year number (e.g., 1992).
1288@code{MM}
1289is a two digit month number.
1290@code{dd}
1291is a two digit day number.
1292Thus, all information written at 10 December 1992 would end up
1293in a file named
1294@kbd{prefix}
1295@kbd{filename}.19921210.
1296@item @code{week}
1297Any file set member contains data related to a certain week of
1298a year.
1299The term week is defined by computing day-of-year
1300modulo 7.
1301Elements of such a file generation set are
1302distinguished by appending the following suffix to the file set
1303filename base: A dot, a 4-digit year number, the letter
1304@code{W},
1305and a 2-digit week number.
1306For example, information from January,
130710th 1992 would end up in a file with suffix
1308.No . Ns Ar 1992W1 .
1309@item @code{month}
1310One generation file set element is generated per month.
1311The
1312file name suffix consists of a dot, a 4-digit year number, and
1313a 2-digit month.
1314@item @code{year}
1315One generation file element is generated per year.
1316The filename
1317suffix consists of a dot and a 4 digit year number.
1318@item @code{age}
1319This type of file generation sets changes to a new element of
1320the file set every 24 hours of server operation.
1321The filename
1322suffix consists of a dot, the letter
1323@code{a},
1324and an 8-digit number.
1325This number is taken to be the number of seconds the server is
1326running at the start of the corresponding 24-hour period.
1327Information is only written to a file generation by specifying
1328@code{enable};
1329output is prevented by specifying
1330@code{disable}.
1331@end table
1332@item @code{link} | @code{nolink}
1333It is convenient to be able to access the current element of a file
1334generation set by a fixed name.
1335This feature is enabled by
1336specifying
1337@code{link}
1338and disabled using
1339@code{nolink}.
1340If link is specified, a
1341hard link from the current file set element to a file without
1342suffix is created.
1343When there is already a file with this name and
1344the number of links of this file is one, it is renamed appending a
1345dot, the letter
1346@code{C},
1347and the pid of the
1348@code{ntpd(1ntpdmdoc)}
1349server process.
1350When the
1351number of links is greater than one, the file is unlinked.
1352This
1353allows the current file to be accessed by a constant name.
1354@item @code{enable} @code{|} @code{disable}
1355Enables or disables the recording function.
1356@end table
1357@end table
1358@end table
1359@node Access Control Support
1360@subsection Access Control Support
1361The
1362@code{ntpd(1ntpdmdoc)}
1363daemon implements a general purpose address/mask based restriction
1364list.
1365The list contains address/match entries sorted first
1366by increasing address values and and then by increasing mask values.
1367A match occurs when the bitwise AND of the mask and the packet
1368source address is equal to the bitwise AND of the mask and
1369address in the list.
1370The list is searched in order with the
1371last match found defining the restriction flags associated
1372with the entry.
1373Additional information and examples can be found in the
1374"Notes on Configuring NTP and Setting up a NTP Subnet"
1375page
1376(available as part of the HTML documentation
1377provided in
1378@file{/usr/share/doc/ntp}).
1379
1380The restriction facility was implemented in conformance
1381with the access policies for the original NSFnet backbone
1382time servers.
1383Later the facility was expanded to deflect
1384cryptographic and clogging attacks.
1385While this facility may
1386be useful for keeping unwanted or broken or malicious clients
1387from congesting innocent servers, it should not be considered
1388an alternative to the NTP authentication facilities.
1389Source address based restrictions are easily circumvented
1390by a determined cracker.
1391
1392Clients can be denied service because they are explicitly
1393included in the restrict list created by the
1394@code{restrict}
1395command
1396or implicitly as the result of cryptographic or rate limit
1397violations.
1398Cryptographic violations include certificate
1399or identity verification failure; rate limit violations generally
1400result from defective NTP implementations that send packets
1401at abusive rates.
1402Some violations cause denied service
1403only for the offending packet, others cause denied service
1404for a timed period and others cause the denied service for
1405an indefinite period.
1406When a client or network is denied access
1407for an indefinite period, the only way at present to remove
1408the restrictions is by restarting the server.
1409@subsubsection The Kiss-of-Death Packet
1410Ordinarily, packets denied service are simply dropped with no
1411further action except incrementing statistics counters.
1412Sometimes a
1413more proactive response is needed, such as a server message that
1414explicitly requests the client to stop sending and leave a message
1415for the system operator.
1416A special packet format has been created
1417for this purpose called the "kiss-of-death" (KoD) packet.
1418KoD packets have the leap bits set unsynchronized and stratum set
1419to zero and the reference identifier field set to a four-byte
1420ASCII code.
1421If the
1422@code{noserve}
1423or
1424@code{notrust}
1425flag of the matching restrict list entry is set,
1426the code is "DENY"; if the
1427@code{limited}
1428flag is set and the rate limit
1429is exceeded, the code is "RATE".
1430Finally, if a cryptographic violation occurs, the code is "CRYP".
1431
1432A client receiving a KoD performs a set of sanity checks to
1433minimize security exposure, then updates the stratum and
1434reference identifier peer variables, sets the access
1435denied (TEST4) bit in the peer flash variable and sends
1436a message to the log.
1437As long as the TEST4 bit is set,
1438the client will send no further packets to the server.
1439The only way at present to recover from this condition is
1440to restart the protocol at both the client and server.
1441This
1442happens automatically at the client when the association times out.
1443It will happen at the server only if the server operator cooperates.
1444@subsubsection Access Control Commands
1445@table @asis
1446@item @code{discard} @code{[@code{average} @kbd{avg}]} @code{[@code{minimum} @kbd{min}]} @code{[@code{monitor} @kbd{prob}]}
1447Set the parameters of the
1448@code{limited}
1449facility which protects the server from
1450client abuse.
1451The
1452@code{average}
1453subcommand specifies the minimum average packet
1454spacing, while the
1455@code{minimum}
1456subcommand specifies the minimum packet spacing.
1457Packets that violate these minima are discarded
1458and a kiss-o'-death packet returned if enabled.
1459The default
1460minimum average and minimum are 5 and 2, respectively.
1461The
1462@code{monitor}
1463subcommand specifies the probability of discard
1464for packets that overflow the rate-control window.
1465@item @code{restrict} @code{address} @code{[@code{mask} @kbd{mask}]} @code{[@kbd{flag} @kbd{...}]}
1466The
1467@kbd{address}
1468argument expressed in
1469dotted-quad form is the address of a host or network.
1470Alternatively, the
1471@kbd{address}
1472argument can be a valid host DNS name.
1473The
1474@kbd{mask}
1475argument expressed in dotted-quad form defaults to
1476@code{255.255.255.255},
1477meaning that the
1478@kbd{address}
1479is treated as the address of an individual host.
1480A default entry (address
1481@code{0.0.0.0},
1482mask
1483@code{0.0.0.0})
1484is always included and is always the first entry in the list.
1485Note that text string
1486@code{default},
1487with no mask option, may
1488be used to indicate the default entry.
1489In the current implementation,
1490@code{flag}
1491always
1492restricts access, i.e., an entry with no flags indicates that free
1493access to the server is to be given.
1494The flags are not orthogonal,
1495in that more restrictive flags will often make less restrictive
1496ones redundant.
1497The flags can generally be classed into two
1498categories, those which restrict time service and those which
1499restrict informational queries and attempts to do run-time
1500reconfiguration of the server.
1501One or more of the following flags
1502may be specified:
1503@table @asis
1504@item @code{ignore}
1505Deny packets of all kinds, including
1506@code{ntpq(1ntpqmdoc)}
1507and
1508@code{ntpdc(1ntpdcmdoc)}
1509queries.
1510@item @code{kod}
1511If this flag is set when an access violation occurs, a kiss-o'-death
1512(KoD) packet is sent.
1513KoD packets are rate limited to no more than one
1514per second.
1515If another KoD packet occurs within one second after the
1516last one, the packet is dropped.
1517@item @code{limited}
1518Deny service if the packet spacing violates the lower limits specified
1519in the
1520@code{discard}
1521command.
1522A history of clients is kept using the
1523monitoring capability of
1524@code{ntpd(1ntpdmdoc)}.
1525Thus, monitoring is always active as
1526long as there is a restriction entry with the
1527@code{limited}
1528flag.
1529@item @code{lowpriotrap}
1530Declare traps set by matching hosts to be low priority.
1531The
1532number of traps a server can maintain is limited (the current limit
1533is 3).
1534Traps are usually assigned on a first come, first served
1535basis, with later trap requestors being denied service.
1536This flag
1537modifies the assignment algorithm by allowing low priority traps to
1538be overridden by later requests for normal priority traps.
1539@item @code{nomodify}
1540Deny
1541@code{ntpq(1ntpqmdoc)}
1542and
1543@code{ntpdc(1ntpdcmdoc)}
1544queries which attempt to modify the state of the
1545server (i.e., run time reconfiguration).
1546Queries which return
1547information are permitted.
1548@item @code{noquery}
1549Deny
1550@code{ntpq(1ntpqmdoc)}
1551and
1552@code{ntpdc(1ntpdcmdoc)}
1553queries.
1554Time service is not affected.
1555@item @code{nopeer}
1556Deny packets which would result in mobilizing a new association.
1557This
1558includes broadcast and symmetric active packets when a configured
1559association does not exist.
1560It also includes
1561@code{pool}
1562associations, so if you want to use servers from a 
1563@code{pool}
1564directive and also want to use
1565@code{nopeer}
1566by default, you'll want a
1567@code{restrict source ...} @code{line} @code{as} @code{well} @code{that} @code{does}
1568@item not
1569include the
1570@code{nopeer}
1571directive.
1572@item @code{noserve}
1573Deny all packets except
1574@code{ntpq(1ntpqmdoc)}
1575and
1576@code{ntpdc(1ntpdcmdoc)}
1577queries.
1578@item @code{notrap}
1579Decline to provide mode 6 control message trap service to matching
1580hosts.
1581The trap service is a subsystem of the
1582@code{ntpq(1ntpqmdoc)}
1583control message
1584protocol which is intended for use by remote event logging programs.
1585@item @code{notrust}
1586Deny service unless the packet is cryptographically authenticated.
1587@item @code{ntpport}
1588This is actually a match algorithm modifier, rather than a
1589restriction flag.
1590Its presence causes the restriction entry to be
1591matched only if the source port in the packet is the standard NTP
1592UDP port (123).
1593Both
1594@code{ntpport}
1595and
1596@code{non-ntpport}
1597may
1598be specified.
1599The
1600@code{ntpport}
1601is considered more specific and
1602is sorted later in the list.
1603@item @code{version}
1604Deny packets that do not match the current NTP version.
1605@end table
1606
1607Default restriction list entries with the flags ignore, interface,
1608ntpport, for each of the local host's interface addresses are
1609inserted into the table at startup to prevent the server
1610from attempting to synchronize to its own time.
1611A default entry is also always present, though if it is
1612otherwise unconfigured; no flags are associated
1613with the default entry (i.e., everything besides your own
1614NTP server is unrestricted).
1615@end table
1616@node Automatic NTP Configuration Options
1617@subsection Automatic NTP Configuration Options
1618@subsubsection Manycasting
1619Manycasting is a automatic discovery and configuration paradigm
1620new to NTPv4.
1621It is intended as a means for a multicast client
1622to troll the nearby network neighborhood to find cooperating
1623manycast servers, validate them using cryptographic means
1624and evaluate their time values with respect to other servers
1625that might be lurking in the vicinity.
1626The intended result is that each manycast client mobilizes
1627client associations with some number of the "best"
1628of the nearby manycast servers, yet automatically reconfigures
1629to sustain this number of servers should one or another fail.
1630
1631Note that the manycasting paradigm does not coincide
1632with the anycast paradigm described in RFC-1546,
1633which is designed to find a single server from a clique
1634of servers providing the same service.
1635The manycast paradigm is designed to find a plurality
1636of redundant servers satisfying defined optimality criteria.
1637
1638Manycasting can be used with either symmetric key
1639or public key cryptography.
1640The public key infrastructure (PKI)
1641offers the best protection against compromised keys
1642and is generally considered stronger, at least with relatively
1643large key sizes.
1644It is implemented using the Autokey protocol and
1645the OpenSSL cryptographic library available from
1646@code{http://www.openssl.org/}.
1647The library can also be used with other NTPv4 modes
1648as well and is highly recommended, especially for broadcast modes.
1649
1650A persistent manycast client association is configured
1651using the
1652@code{manycastclient}
1653command, which is similar to the
1654@code{server}
1655command but with a multicast (IPv4 class
1656@code{D}
1657or IPv6 prefix
1658@code{FF})
1659group address.
1660The IANA has designated IPv4 address 224.1.1.1
1661and IPv6 address FF05::101 (site local) for NTP.
1662When more servers are needed, it broadcasts manycast
1663client messages to this address at the minimum feasible rate
1664and minimum feasible time-to-live (TTL) hops, depending
1665on how many servers have already been found.
1666There can be as many manycast client associations
1667as different group address, each one serving as a template
1668for a future ephemeral unicast client/server association.
1669
1670Manycast servers configured with the
1671@code{manycastserver}
1672command listen on the specified group address for manycast
1673client messages.
1674Note the distinction between manycast client,
1675which actively broadcasts messages, and manycast server,
1676which passively responds to them.
1677If a manycast server is
1678in scope of the current TTL and is itself synchronized
1679to a valid source and operating at a stratum level equal
1680to or lower than the manycast client, it replies to the
1681manycast client message with an ordinary unicast server message.
1682
1683The manycast client receiving this message mobilizes
1684an ephemeral client/server association according to the
1685matching manycast client template, but only if cryptographically
1686authenticated and the server stratum is less than or equal
1687to the client stratum.
1688Authentication is explicitly required
1689and either symmetric key or public key (Autokey) can be used.
1690Then, the client polls the server at its unicast address
1691in burst mode in order to reliably set the host clock
1692and validate the source.
1693This normally results
1694in a volley of eight client/server at 2-s intervals
1695during which both the synchronization and cryptographic
1696protocols run concurrently.
1697Following the volley,
1698the client runs the NTP intersection and clustering
1699algorithms, which act to discard all but the "best"
1700associations according to stratum and synchronization
1701distance.
1702The surviving associations then continue
1703in ordinary client/server mode.
1704
1705The manycast client polling strategy is designed to reduce
1706as much as possible the volume of manycast client messages
1707and the effects of implosion due to near-simultaneous
1708arrival of manycast server messages.
1709The strategy is determined by the
1710@code{manycastclient},
1711@code{tos}
1712and
1713@code{ttl}
1714configuration commands.
1715The manycast poll interval is
1716normally eight times the system poll interval,
1717which starts out at the
1718@code{minpoll}
1719value specified in the
1720@code{manycastclient},
1721command and, under normal circumstances, increments to the
1722@code{maxpolll}
1723value specified in this command.
1724Initially, the TTL is
1725set at the minimum hops specified by the
1726@code{ttl}
1727command.
1728At each retransmission the TTL is increased until reaching
1729the maximum hops specified by this command or a sufficient
1730number client associations have been found.
1731Further retransmissions use the same TTL.
1732
1733The quality and reliability of the suite of associations
1734discovered by the manycast client is determined by the NTP
1735mitigation algorithms and the
1736@code{minclock}
1737and
1738@code{minsane}
1739values specified in the
1740@code{tos}
1741configuration command.
1742At least
1743@code{minsane}
1744candidate servers must be available and the mitigation
1745algorithms produce at least
1746@code{minclock}
1747survivors in order to synchronize the clock.
1748Byzantine agreement principles require at least four
1749candidates in order to correctly discard a single falseticker.
1750For legacy purposes,
1751@code{minsane}
1752defaults to 1 and
1753@code{minclock}
1754defaults to 3.
1755For manycast service
1756@code{minsane}
1757should be explicitly set to 4, assuming at least that
1758number of servers are available.
1759
1760If at least
1761@code{minclock}
1762servers are found, the manycast poll interval is immediately
1763set to eight times
1764@code{maxpoll}.
1765If less than
1766@code{minclock}
1767servers are found when the TTL has reached the maximum hops,
1768the manycast poll interval is doubled.
1769For each transmission
1770after that, the poll interval is doubled again until
1771reaching the maximum of eight times
1772@code{maxpoll}.
1773Further transmissions use the same poll interval and
1774TTL values.
1775Note that while all this is going on,
1776each client/server association found is operating normally
1777it the system poll interval.
1778
1779Administratively scoped multicast boundaries are normally
1780specified by the network router configuration and,
1781in the case of IPv6, the link/site scope prefix.
1782By default, the increment for TTL hops is 32 starting
1783from 31; however, the
1784@code{ttl}
1785configuration command can be
1786used to modify the values to match the scope rules.
1787
1788It is often useful to narrow the range of acceptable
1789servers which can be found by manycast client associations.
1790Because manycast servers respond only when the client
1791stratum is equal to or greater than the server stratum,
1792primary (stratum 1) servers fill find only primary servers
1793in TTL range, which is probably the most common objective.
1794However, unless configured otherwise, all manycast clients
1795in TTL range will eventually find all primary servers
1796in TTL range, which is probably not the most common
1797objective in large networks.
1798The
1799@code{tos}
1800command can be used to modify this behavior.
1801Servers with stratum below
1802@code{floor}
1803or above
1804@code{ceiling}
1805specified in the
1806@code{tos}
1807command are strongly discouraged during the selection
1808process; however, these servers may be temporally
1809accepted if the number of servers within TTL range is
1810less than
1811@code{minclock}.
1812
1813The above actions occur for each manycast client message,
1814which repeats at the designated poll interval.
1815However, once the ephemeral client association is mobilized,
1816subsequent manycast server replies are discarded,
1817since that would result in a duplicate association.
1818If during a poll interval the number of client associations
1819falls below
1820@code{minclock},
1821all manycast client prototype associations are reset
1822to the initial poll interval and TTL hops and operation
1823resumes from the beginning.
1824It is important to avoid
1825frequent manycast client messages, since each one requires
1826all manycast servers in TTL range to respond.
1827The result could well be an implosion, either minor or major,
1828depending on the number of servers in range.
1829The recommended value for
1830@code{maxpoll}
1831is 12 (4,096 s).
1832
1833It is possible and frequently useful to configure a host
1834as both manycast client and manycast server.
1835A number of hosts configured this way and sharing a common
1836group address will automatically organize themselves
1837in an optimum configuration based on stratum and
1838synchronization distance.
1839For example, consider an NTP
1840subnet of two primary servers and a hundred or more
1841dependent clients.
1842With two exceptions, all servers
1843and clients have identical configuration files including both
1844@code{multicastclient}
1845and
1846@code{multicastserver}
1847commands using, for instance, multicast group address
1848239.1.1.1.
1849The only exception is that each primary server
1850configuration file must include commands for the primary
1851reference source such as a GPS receiver.
1852
1853The remaining configuration files for all secondary
1854servers and clients have the same contents, except for the
1855@code{tos}
1856command, which is specific for each stratum level.
1857For stratum 1 and stratum 2 servers, that command is
1858not necessary.
1859For stratum 3 and above servers the
1860@code{floor}
1861value is set to the intended stratum number.
1862Thus, all stratum 3 configuration files are identical,
1863all stratum 4 files are identical and so forth.
1864
1865Once operations have stabilized in this scenario,
1866the primary servers will find the primary reference source
1867and each other, since they both operate at the same
1868stratum (1), but not with any secondary server or client,
1869since these operate at a higher stratum.
1870The secondary
1871servers will find the servers at the same stratum level.
1872If one of the primary servers loses its GPS receiver,
1873it will continue to operate as a client and other clients
1874will time out the corresponding association and
1875re-associate accordingly.
1876
1877Some administrators prefer to avoid running
1878@code{ntpd(1ntpdmdoc)}
1879continuously and run either
1880@code{sntp(1sntpmdoc)}
1881or
1882@code{ntpd(1ntpdmdoc)}
1883@code{-q}
1884as a cron job.
1885In either case the servers must be
1886configured in advance and the program fails if none are
1887available when the cron job runs.
1888A really slick
1889application of manycast is with
1890@code{ntpd(1ntpdmdoc)}
1891@code{-q}.
1892The program wakes up, scans the local landscape looking
1893for the usual suspects, selects the best from among
1894the rascals, sets the clock and then departs.
1895Servers do not have to be configured in advance and
1896all clients throughout the network can have the same
1897configuration file.
1898@subsubsection Manycast Interactions with Autokey
1899Each time a manycast client sends a client mode packet
1900to a multicast group address, all manycast servers
1901in scope generate a reply including the host name
1902and status word.
1903The manycast clients then run
1904the Autokey protocol, which collects and verifies
1905all certificates involved.
1906Following the burst interval
1907all but three survivors are cast off,
1908but the certificates remain in the local cache.
1909It often happens that several complete signing trails
1910from the client to the primary servers are collected in this way.
1911
1912About once an hour or less often if the poll interval
1913exceeds this, the client regenerates the Autokey key list.
1914This is in general transparent in client/server mode.
1915However, about once per day the server private value
1916used to generate cookies is refreshed along with all
1917manycast client associations.
1918In this case all
1919cryptographic values including certificates is refreshed.
1920If a new certificate has been generated since
1921the last refresh epoch, it will automatically revoke
1922all prior certificates that happen to be in the
1923certificate cache.
1924At the same time, the manycast
1925scheme starts all over from the beginning and
1926the expanding ring shrinks to the minimum and increments
1927from there while collecting all servers in scope.
1928@subsubsection Manycast Options
1929@table @asis
1930@item @code{tos} @code{[@code{ceiling} @kbd{ceiling} | @code{cohort} @code{@{} @code{0} | @code{1} @code{@}} | @code{floor} @kbd{floor} | @code{minclock} @kbd{minclock} | @code{minsane} @kbd{minsane}]}
1931This command affects the clock selection and clustering
1932algorithms.
1933It can be used to select the quality and
1934quantity of peers used to synchronize the system clock
1935and is most useful in manycast mode.
1936The variables operate
1937as follows:
1938@table @asis
1939@item @code{ceiling} @kbd{ceiling}
1940Peers with strata above
1941@code{ceiling}
1942will be discarded if there are at least
1943@code{minclock}
1944peers remaining.
1945This value defaults to 15, but can be changed
1946to any number from 1 to 15.
1947@item @code{cohort} @code{@{0 | 1@}}
1948This is a binary flag which enables (0) or disables (1)
1949manycast server replies to manycast clients with the same
1950stratum level.
1951This is useful to reduce implosions where
1952large numbers of clients with the same stratum level
1953are present.
1954The default is to enable these replies.
1955@item @code{floor} @kbd{floor}
1956Peers with strata below
1957@code{floor}
1958will be discarded if there are at least
1959@code{minclock}
1960peers remaining.
1961This value defaults to 1, but can be changed
1962to any number from 1 to 15.
1963@item @code{minclock} @kbd{minclock}
1964The clustering algorithm repeatedly casts out outlier
1965associations until no more than
1966@code{minclock}
1967associations remain.
1968This value defaults to 3,
1969but can be changed to any number from 1 to the number of
1970configured sources.
1971@item @code{minsane} @kbd{minsane}
1972This is the minimum number of candidates available
1973to the clock selection algorithm in order to produce
1974one or more truechimers for the clustering algorithm.
1975If fewer than this number are available, the clock is
1976undisciplined and allowed to run free.
1977The default is 1
1978for legacy purposes.
1979However, according to principles of
1980Byzantine agreement,
1981@code{minsane}
1982should be at least 4 in order to detect and discard
1983a single falseticker.
1984@end table
1985@item @code{ttl} @kbd{hop} @kbd{...}
1986This command specifies a list of TTL values in increasing
1987order, up to 8 values can be specified.
1988In manycast mode these values are used in turn
1989in an expanding-ring search.
1990The default is eight
1991multiples of 32 starting at 31.
1992@end table
1993@node Reference Clock Support
1994@subsection Reference Clock Support
1995The NTP Version 4 daemon supports some three dozen different radio,
1996satellite and modem reference clocks plus a special pseudo-clock
1997used for backup or when no other clock source is available.
1998Detailed descriptions of individual device drivers and options can
1999be found in the
2000"Reference Clock Drivers"
2001page
2002(available as part of the HTML documentation
2003provided in
2004@file{/usr/share/doc/ntp}).
2005Additional information can be found in the pages linked
2006there, including the
2007"Debugging Hints for Reference Clock Drivers"
2008and
2009"How To Write a Reference Clock Driver"
2010pages
2011(available as part of the HTML documentation
2012provided in
2013@file{/usr/share/doc/ntp}).
2014In addition, support for a PPS
2015signal is available as described in the
2016"Pulse-per-second (PPS) Signal Interfacing"
2017page
2018(available as part of the HTML documentation
2019provided in
2020@file{/usr/share/doc/ntp}).
2021Many
2022drivers support special line discipline/streams modules which can
2023significantly improve the accuracy using the driver.
2024These are
2025described in the
2026"Line Disciplines and Streams Drivers"
2027page
2028(available as part of the HTML documentation
2029provided in
2030@file{/usr/share/doc/ntp}).
2031
2032A reference clock will generally (though not always) be a radio
2033timecode receiver which is synchronized to a source of standard
2034time such as the services offered by the NRC in Canada and NIST and
2035USNO in the US.
2036The interface between the computer and the timecode
2037receiver is device dependent, but is usually a serial port.
2038A
2039device driver specific to each reference clock must be selected and
2040compiled in the distribution; however, most common radio, satellite
2041and modem clocks are included by default.
2042Note that an attempt to
2043configure a reference clock when the driver has not been compiled
2044or the hardware port has not been appropriately configured results
2045in a scalding remark to the system log file, but is otherwise non
2046hazardous.
2047
2048For the purposes of configuration,
2049@code{ntpd(1ntpdmdoc)}
2050treats
2051reference clocks in a manner analogous to normal NTP peers as much
2052as possible.
2053Reference clocks are identified by a syntactically
2054correct but invalid IP address, in order to distinguish them from
2055normal NTP peers.
2056Reference clock addresses are of the form
2057@code{127.127.}@kbd{t}.@kbd{u},
2058where
2059@kbd{t}
2060is an integer
2061denoting the clock type and
2062@kbd{u}
2063indicates the unit
2064number in the range 0-3.
2065While it may seem overkill, it is in fact
2066sometimes useful to configure multiple reference clocks of the same
2067type, in which case the unit numbers must be unique.
2068
2069The
2070@code{server}
2071command is used to configure a reference
2072clock, where the
2073@kbd{address}
2074argument in that command
2075is the clock address.
2076The
2077@code{key},
2078@code{version}
2079and
2080@code{ttl}
2081options are not used for reference clock support.
2082The
2083@code{mode}
2084option is added for reference clock support, as
2085described below.
2086The
2087@code{prefer}
2088option can be useful to
2089persuade the server to cherish a reference clock with somewhat more
2090enthusiasm than other reference clocks or peers.
2091Further
2092information on this option can be found in the
2093"Mitigation Rules and the prefer Keyword"
2094(available as part of the HTML documentation
2095provided in
2096@file{/usr/share/doc/ntp})
2097page.
2098The
2099@code{minpoll}
2100and
2101@code{maxpoll}
2102options have
2103meaning only for selected clock drivers.
2104See the individual clock
2105driver document pages for additional information.
2106
2107The
2108@code{fudge}
2109command is used to provide additional
2110information for individual clock drivers and normally follows
2111immediately after the
2112@code{server}
2113command.
2114The
2115@kbd{address}
2116argument specifies the clock address.
2117The
2118@code{refid}
2119and
2120@code{stratum}
2121options can be used to
2122override the defaults for the device.
2123There are two optional
2124device-dependent time offsets and four flags that can be included
2125in the
2126@code{fudge}
2127command as well.
2128
2129The stratum number of a reference clock is by default zero.
2130Since the
2131@code{ntpd(1ntpdmdoc)}
2132daemon adds one to the stratum of each
2133peer, a primary server ordinarily displays an external stratum of
2134one.
2135In order to provide engineered backups, it is often useful to
2136specify the reference clock stratum as greater than zero.
2137The
2138@code{stratum}
2139option is used for this purpose.
2140Also, in cases
2141involving both a reference clock and a pulse-per-second (PPS)
2142discipline signal, it is useful to specify the reference clock
2143identifier as other than the default, depending on the driver.
2144The
2145@code{refid}
2146option is used for this purpose.
2147Except where noted,
2148these options apply to all clock drivers.
2149@subsubsection Reference Clock Commands
2150@table @asis
2151@item @code{server} @code{127.127.}@kbd{t}.@kbd{u} @code{[@code{prefer}]} @code{[@code{mode} @kbd{int}]} @code{[@code{minpoll} @kbd{int}]} @code{[@code{maxpoll} @kbd{int}]}
2152This command can be used to configure reference clocks in
2153special ways.
2154The options are interpreted as follows:
2155@table @asis
2156@item @code{prefer}
2157Marks the reference clock as preferred.
2158All other things being
2159equal, this host will be chosen for synchronization among a set of
2160correctly operating hosts.
2161See the
2162"Mitigation Rules and the prefer Keyword"
2163page
2164(available as part of the HTML documentation
2165provided in
2166@file{/usr/share/doc/ntp})
2167for further information.
2168@item @code{mode} @kbd{int}
2169Specifies a mode number which is interpreted in a
2170device-specific fashion.
2171For instance, it selects a dialing
2172protocol in the ACTS driver and a device subtype in the
2173parse
2174drivers.
2175@item @code{minpoll} @kbd{int}
2176@item @code{maxpoll} @kbd{int}
2177These options specify the minimum and maximum polling interval
2178for reference clock messages, as a power of 2 in seconds
2179For
2180most directly connected reference clocks, both
2181@code{minpoll}
2182and
2183@code{maxpoll}
2184default to 6 (64 s).
2185For modem reference clocks,
2186@code{minpoll}
2187defaults to 10 (17.1 m) and
2188@code{maxpoll}
2189defaults to 14 (4.5 h).
2190The allowable range is 4 (16 s) to 17 (36.4 h) inclusive.
2191@end table
2192@item @code{fudge} @code{127.127.}@kbd{t}.@kbd{u} @code{[@code{time1} @kbd{sec}]} @code{[@code{time2} @kbd{sec}]} @code{[@code{stratum} @kbd{int}]} @code{[@code{refid} @kbd{string}]} @code{[@code{mode} @kbd{int}]} @code{[@code{flag1} @code{0} @code{|} @code{1}]} @code{[@code{flag2} @code{0} @code{|} @code{1}]} @code{[@code{flag3} @code{0} @code{|} @code{1}]} @code{[@code{flag4} @code{0} @code{|} @code{1}]}
2193This command can be used to configure reference clocks in
2194special ways.
2195It must immediately follow the
2196@code{server}
2197command which configures the driver.
2198Note that the same capability
2199is possible at run time using the
2200@code{ntpdc(1ntpdcmdoc)}
2201program.
2202The options are interpreted as
2203follows:
2204@table @asis
2205@item @code{time1} @kbd{sec}
2206Specifies a constant to be added to the time offset produced by
2207the driver, a fixed-point decimal number in seconds.
2208This is used
2209as a calibration constant to adjust the nominal time offset of a
2210particular clock to agree with an external standard, such as a
2211precision PPS signal.
2212It also provides a way to correct a
2213systematic error or bias due to serial port or operating system
2214latencies, different cable lengths or receiver internal delay.
2215The
2216specified offset is in addition to the propagation delay provided
2217by other means, such as internal DIPswitches.
2218Where a calibration
2219for an individual system and driver is available, an approximate
2220correction is noted in the driver documentation pages.
2221Note: in order to facilitate calibration when more than one
2222radio clock or PPS signal is supported, a special calibration
2223feature is available.
2224It takes the form of an argument to the
2225@code{enable}
2226command described in
2227@ref{Miscellaneous Options}
2228page and operates as described in the
2229"Reference Clock Drivers"
2230page
2231(available as part of the HTML documentation
2232provided in
2233@file{/usr/share/doc/ntp}).
2234@item @code{time2} @kbd{secs}
2235Specifies a fixed-point decimal number in seconds, which is
2236interpreted in a driver-dependent way.
2237See the descriptions of
2238specific drivers in the
2239"Reference Clock Drivers"
2240page
2241(available as part of the HTML documentation
2242provided in
2243@file{/usr/share/doc/ntp}).
2244@item @code{stratum} @kbd{int}
2245Specifies the stratum number assigned to the driver, an integer
2246between 0 and 15.
2247This number overrides the default stratum number
2248ordinarily assigned by the driver itself, usually zero.
2249@item @code{refid} @kbd{string}
2250Specifies an ASCII string of from one to four characters which
2251defines the reference identifier used by the driver.
2252This string
2253overrides the default identifier ordinarily assigned by the driver
2254itself.
2255@item @code{mode} @kbd{int}
2256Specifies a mode number which is interpreted in a
2257device-specific fashion.
2258For instance, it selects a dialing
2259protocol in the ACTS driver and a device subtype in the
2260parse
2261drivers.
2262@item @code{flag1} @code{0} @code{|} @code{1}
2263@item @code{flag2} @code{0} @code{|} @code{1}
2264@item @code{flag3} @code{0} @code{|} @code{1}
2265@item @code{flag4} @code{0} @code{|} @code{1}
2266These four flags are used for customizing the clock driver.
2267The
2268interpretation of these values, and whether they are used at all,
2269is a function of the particular clock driver.
2270However, by
2271convention
2272@code{flag4}
2273is used to enable recording monitoring
2274data to the
2275@code{clockstats}
2276file configured with the
2277@code{filegen}
2278command.
2279Further information on the
2280@code{filegen}
2281command can be found in
2282@ref{Monitoring Options}.
2283@end table
2284@end table
2285@node Miscellaneous Options
2286@subsection Miscellaneous Options
2287@table @asis
2288@item @code{broadcastdelay} @kbd{seconds}
2289The broadcast and multicast modes require a special calibration
2290to determine the network delay between the local and remote
2291servers.
2292Ordinarily, this is done automatically by the initial
2293protocol exchanges between the client and server.
2294In some cases,
2295the calibration procedure may fail due to network or server access
2296controls, for example.
2297This command specifies the default delay to
2298be used under these circumstances.
2299Typically (for Ethernet), a
2300number between 0.003 and 0.007 seconds is appropriate.
2301The default
2302when this command is not used is 0.004 seconds.
2303@item @code{calldelay} @kbd{delay}
2304This option controls the delay in seconds between the first and second
2305packets sent in burst or iburst mode to allow additional time for a modem
2306or ISDN call to complete.
2307@item @code{driftfile} @kbd{driftfile}
2308This command specifies the complete path and name of the file used to
2309record the frequency of the local clock oscillator.
2310This is the same
2311operation as the
2312@code{-f}
2313command line option.
2314If the file exists, it is read at
2315startup in order to set the initial frequency and then updated once per
2316hour with the current frequency computed by the daemon.
2317If the file name is
2318specified, but the file itself does not exist, the starts with an initial
2319frequency of zero and creates the file when writing it for the first time.
2320If this command is not given, the daemon will always start with an initial
2321frequency of zero.
2322
2323The file format consists of a single line containing a single
2324floating point number, which records the frequency offset measured
2325in parts-per-million (PPM).
2326The file is updated by first writing
2327the current drift value into a temporary file and then renaming
2328this file to replace the old version.
2329This implies that
2330@code{ntpd(1ntpdmdoc)}
2331must have write permission for the directory the
2332drift file is located in, and that file system links, symbolic or
2333otherwise, should be avoided.
2334@item @code{dscp} @kbd{value}
2335This option specifies the Differentiated Services Control Point (DSCP) value,
2336a 6-bit code.
2337The default value is 46, signifying Expedited Forwarding.
2338@item @code{enable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]}
2339@item @code{disable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]}
2340Provides a way to enable or disable various server options.
2341Flags not mentioned are unaffected.
2342Note that all of these flags
2343can be controlled remotely using the
2344@code{ntpdc(1ntpdcmdoc)}
2345utility program.
2346@table @asis
2347@item @code{auth}
2348Enables the server to synchronize with unconfigured peers only if the
2349peer has been correctly authenticated using either public key or
2350private key cryptography.
2351The default for this flag is
2352@code{enable}.
2353@item @code{bclient}
2354Enables the server to listen for a message from a broadcast or
2355multicast server, as in the
2356@code{multicastclient}
2357command with default
2358address.
2359The default for this flag is
2360@code{disable}.
2361@item @code{calibrate}
2362Enables the calibrate feature for reference clocks.
2363The default for
2364this flag is
2365@code{disable}.
2366@item @code{kernel}
2367Enables the kernel time discipline, if available.
2368The default for this
2369flag is
2370@code{enable}
2371if support is available, otherwise
2372@code{disable}.
2373@item @code{mode7}
2374Enables processing of NTP mode 7 implementation-specific requests
2375which are used by the deprecated
2376@code{ntpdc(1ntpdcmdoc)}
2377program.
2378The default for this flag is disable.
2379This flag is excluded from runtime configuration using
2380@code{ntpq(1ntpqmdoc)}.
2381The
2382@code{ntpq(1ntpqmdoc)}
2383program provides the same capabilities as
2384@code{ntpdc(1ntpdcmdoc)}
2385using standard mode 6 requests.
2386@item @code{monitor}
2387Enables the monitoring facility.
2388See the
2389@code{ntpdc(1ntpdcmdoc)}
2390program
2391and the
2392@code{monlist}
2393command or further information.
2394The
2395default for this flag is
2396@code{enable}.
2397@item @code{ntp}
2398Enables time and frequency discipline.
2399In effect, this switch opens and
2400closes the feedback loop, which is useful for testing.
2401The default for
2402this flag is
2403@code{enable}.
2404@item @code{stats}
2405Enables the statistics facility.
2406See the
2407@ref{Monitoring Options}
2408section for further information.
2409The default for this flag is
2410@code{disable}.
2411@item @code{unpeer_crypto_early}
2412By default, if
2413@code{ntpd(1ntpdmdoc)}
2414receives an autokey packet that fails TEST9,
2415a crypto failure,
2416the association is immediately cleared.
2417This is almost certainly a feature,
2418but if, in spite of the current recommendation of not using autokey,
2419you are
2420.B still
2421using autokey
2422.B and
2423you are seeing this sort of DoS attack
2424disabling this flag will delay
2425tearing down the association until the reachability counter
2426becomes zero.
2427You can check your
2428@code{peerstats}
2429file for evidence of any of these attacks.
2430The
2431default for this flag is
2432@code{enable}.
2433@item @code{unpeer_crypto_nak_early}
2434By default, if
2435@code{ntpd(1ntpdmdoc)}
2436receives a crypto-NAK packet that
2437passes the duplicate packet and origin timestamp checks
2438the association is immediately cleared.
2439While this is generally a feature
2440as it allows for quick recovery if a server key has changed,
2441a properly forged and appropriately delivered crypto-NAK packet
2442can be used in a DoS attack.
2443If you have active noticable problems with this type of DoS attack
2444then you should consider
2445disabling this option.
2446You can check your
2447@code{peerstats}
2448file for evidence of any of these attacks.
2449The
2450default for this flag is
2451@code{enable}.
2452@item @code{unpeer_digest_early}
2453By default, if
2454@code{ntpd(1ntpdmdoc)}
2455receives what should be an authenticated packet
2456that passes other packet sanity checks but
2457contains an invalid digest
2458the association is immediately cleared.
2459While this is generally a feature
2460as it allows for quick recovery,
2461if this type of packet is carefully forged and sent
2462during an appropriate window it can be used for a DoS attack.
2463If you have active noticable problems with this type of DoS attack
2464then you should consider
2465disabling this option.
2466You can check your
2467@code{peerstats}
2468file for evidence of any of these attacks.
2469The
2470default for this flag is
2471@code{enable}.
2472@end table
2473@item @code{includefile} @kbd{includefile}
2474This command allows additional configuration commands
2475to be included from a separate file.
2476Include files may
2477be nested to a depth of five; upon reaching the end of any
2478include file, command processing resumes in the previous
2479configuration file.
2480This option is useful for sites that run
2481@code{ntpd(1ntpdmdoc)}
2482on multiple hosts, with (mostly) common options (e.g., a
2483restriction list).
2484@item @code{leapsmearinterval} @kbd{seconds}
2485This EXPERIMENTAL option is only available if
2486@code{ntpd(1ntpdmdoc)}
2487was built with the
2488@code{--enable-leap-smear}
2489option to the
2490@code{configure}
2491script.
2492It specifies the interval over which a leap second correction will be applied.
2493Recommended values for this option are between
24947200 (2 hours) and 86400 (24 hours).
2495.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
2496See http://bugs.ntp.org/2855 for more information.
2497@item @code{logconfig} @kbd{configkeyword}
2498This command controls the amount and type of output written to
2499the system
2500@code{syslog(3)}
2501facility or the alternate
2502@code{logfile}
2503log file.
2504By default, all output is turned on.
2505All
2506@kbd{configkeyword}
2507keywords can be prefixed with
2508@quoteleft{}=@quoteright{},
2509@quoteleft{}+@quoteright{}
2510and
2511@quoteleft{}-@quoteright{},
2512where
2513@quoteleft{}=@quoteright{}
2514sets the
2515@code{syslog(3)}
2516priority mask,
2517@quoteleft{}+@quoteright{}
2518adds and
2519@quoteleft{}-@quoteright{}
2520removes
2521messages.
2522@code{syslog(3)}
2523messages can be controlled in four
2524classes
2525(@code{clock}, @code{peer}, @code{sys} and @code{sync}).
2526Within these classes four types of messages can be
2527controlled: informational messages
2528(@code{info}),
2529event messages
2530(@code{events}),
2531statistics messages
2532(@code{statistics})
2533and
2534status messages
2535(@code{status}).
2536
2537Configuration keywords are formed by concatenating the message class with
2538the event class.
2539The
2540@code{all}
2541prefix can be used instead of a message class.
2542A
2543message class may also be followed by the
2544@code{all}
2545keyword to enable/disable all
2546messages of the respective message class.
2547Thus, a minimal log configuration
2548could look like this:
2549@verbatim
2550logconfig =syncstatus +sysevents
2551@end verbatim
2552
2553This would just list the synchronizations state of
2554@code{ntpd(1ntpdmdoc)}
2555and the major system events.
2556For a simple reference server, the
2557following minimum message configuration could be useful:
2558@verbatim
2559logconfig =syncall +clockall
2560@end verbatim
2561
2562This configuration will list all clock information and
2563synchronization information.
2564All other events and messages about
2565peers, system events and so on is suppressed.
2566@item @code{logfile} @kbd{logfile}
2567This command specifies the location of an alternate log file to
2568be used instead of the default system
2569@code{syslog(3)}
2570facility.
2571This is the same operation as the
2572@code{-l}
2573command line option.
2574@item @code{setvar} @kbd{variable} @code{[@code{default}]}
2575This command adds an additional system variable.
2576These
2577variables can be used to distribute additional information such as
2578the access policy.
2579If the variable of the form
2580@code{name}@code{=}@kbd{value}
2581is followed by the
2582@code{default}
2583keyword, the
2584variable will be listed as part of the default system variables
2585(@code{rv} command)).
2586These additional variables serve
2587informational purposes only.
2588They are not related to the protocol
2589other that they can be listed.
2590The known protocol variables will
2591always override any variables defined via the
2592@code{setvar}
2593mechanism.
2594There are three special variables that contain the names
2595of all variable of the same group.
2596The
2597@code{sys_var_list}
2598holds
2599the names of all system variables.
2600The
2601@code{peer_var_list}
2602holds
2603the names of all peer variables and the
2604@code{clock_var_list}
2605holds the names of the reference clock variables.
2606@item @code{tinker} @code{[@code{allan} @kbd{allan} | @code{dispersion} @kbd{dispersion} | @code{freq} @kbd{freq} | @code{huffpuff} @kbd{huffpuff} | @code{panic} @kbd{panic} | @code{step} @kbd{step} | @code{stepback} @kbd{stepback} | @code{stepfwd} @kbd{stepfwd} | @code{stepout} @kbd{stepout}]}
2607This command can be used to alter several system variables in
2608very exceptional circumstances.
2609It should occur in the
2610configuration file before any other configuration options.
2611The
2612default values of these variables have been carefully optimized for
2613a wide range of network speeds and reliability expectations.
2614In
2615general, they interact in intricate ways that are hard to predict
2616and some combinations can result in some very nasty behavior.
2617Very
2618rarely is it necessary to change the default values; but, some
2619folks cannot resist twisting the knobs anyway and this command is
2620for them.
2621Emphasis added: twisters are on their own and can expect
2622no help from the support group.
2623
2624The variables operate as follows:
2625@table @asis
2626@item @code{allan} @kbd{allan}
2627The argument becomes the new value for the minimum Allan
2628intercept, which is a parameter of the PLL/FLL clock discipline
2629algorithm.
2630The value in log2 seconds defaults to 7 (1024 s), which is also the lower
2631limit.
2632@item @code{dispersion} @kbd{dispersion}
2633The argument becomes the new value for the dispersion increase rate,
2634normally .000015 s/s.
2635@item @code{freq} @kbd{freq}
2636The argument becomes the initial value of the frequency offset in
2637parts-per-million.
2638This overrides the value in the frequency file, if
2639present, and avoids the initial training state if it is not.
2640@item @code{huffpuff} @kbd{huffpuff}
2641The argument becomes the new value for the experimental
2642huff-n'-puff filter span, which determines the most recent interval
2643the algorithm will search for a minimum delay.
2644The lower limit is
2645900 s (15 m), but a more reasonable value is 7200 (2 hours).
2646There
2647is no default, since the filter is not enabled unless this command
2648is given.
2649@item @code{panic} @kbd{panic}
2650The argument is the panic threshold, normally 1000 s.
2651If set to zero,
2652the panic sanity check is disabled and a clock offset of any value will
2653be accepted.
2654@item @code{step} @kbd{step}
2655The argument is the step threshold, which by default is 0.128 s.
2656It can
2657be set to any positive number in seconds.
2658If set to zero, step
2659adjustments will never occur.
2660Note: The kernel time discipline is
2661disabled if the step threshold is set to zero or greater than the
2662default.
2663@item @code{stepback} @kbd{stepback}
2664The argument is the step threshold for the backward direction,
2665which by default is 0.128 s.
2666It can
2667be set to any positive number in seconds.
2668If both the forward and backward step thresholds are set to zero, step
2669adjustments will never occur.
2670Note: The kernel time discipline is
2671disabled if
2672each direction of step threshold are either
2673set to zero or greater than .5 second.
2674@item @code{stepfwd} @kbd{stepfwd}
2675As for stepback, but for the forward direction.
2676@item @code{stepout} @kbd{stepout}
2677The argument is the stepout timeout, which by default is 900 s.
2678It can
2679be set to any positive number in seconds.
2680If set to zero, the stepout
2681pulses will not be suppressed.
2682@end table
2683@item @code{rlimit} @code{[@code{memlock} @kbd{Nmegabytes} | @code{stacksize} @kbd{N4kPages} @code{filenum} @kbd{Nfiledescriptors}]}
2684@table @asis
2685@item @code{memlock} @kbd{Nmegabytes}
2686Specify the number of megabytes of memory that should be
2687allocated and locked.
2688Probably only available under Linux, this option may be useful
2689when dropping root (the
2690@code{-i}
2691option).
2692The default is 32 megabytes on non-Linux machines, and -1 under Linux.
2693-1 means "do not lock the process into memory".
26940 means "lock whatever memory the process wants into memory".
2695@item @code{stacksize} @kbd{N4kPages}
2696Specifies the maximum size of the process stack on systems with the
2697@code{mlockall()}
2698function.
2699Defaults to 50 4k pages (200 4k pages in OpenBSD).
2700@item @code{filenum} @kbd{Nfiledescriptors}
2701Specifies the maximum number of file descriptors ntpd may have open at once.
2702Defaults to the system default.
2703@end table
2704@item @code{trap} @kbd{host_address} @code{[@code{port} @kbd{port_number}]} @code{[@code{interface} @kbd{interface_address}]}
2705This command configures a trap receiver at the given host
2706address and port number for sending messages with the specified
2707local interface address.
2708If the port number is unspecified, a value
2709of 18447 is used.
2710If the interface address is not specified, the
2711message is sent with a source address of the local interface the
2712message is sent through.
2713Note that on a multihomed host the
2714interface used may vary from time to time with routing changes.
2715
2716The trap receiver will generally log event messages and other
2717information from the server in a log file.
2718While such monitor
2719programs may also request their own trap dynamically, configuring a
2720trap receiver will ensure that no messages are lost when the server
2721is started.
2722@item @code{hop} @kbd{...}
2723This command specifies a list of TTL values in increasing order, up to 8
2724values can be specified.
2725In manycast mode these values are used in turn in
2726an expanding-ring search.
2727The default is eight multiples of 32 starting at
272831.
2729@end table
2730
2731This section was generated by @strong{AutoGen},
2732using the @code{agtexi-cmd} template and the option descriptions for the @code{ntp.conf} program.
2733This software is released under the NTP license, <http://ntp.org/license>.
2734
2735@menu
2736* ntp.conf Files::                  Files
2737* ntp.conf See Also::               See Also
2738* ntp.conf Bugs::                   Bugs
2739* ntp.conf Notes::                  Notes
2740@end menu
2741
2742@node ntp.conf Files
2743@subsection ntp.conf Files
2744@table @asis
2745@item @file{/etc/ntp.conf}
2746the default name of the configuration file
2747@item @file{ntp.keys}
2748private MD5 keys
2749@item @file{ntpkey}
2750RSA private key
2751@item @file{ntpkey_}@kbd{host}
2752RSA public key
2753@item @file{ntp_dh}
2754Diffie-Hellman agreement parameters
2755@end table
2756@node ntp.conf See Also
2757@subsection ntp.conf See Also
2758@code{ntpd(1ntpdmdoc)},
2759@code{ntpdc(1ntpdcmdoc)},
2760@code{ntpq(1ntpqmdoc)}
2761
2762In addition to the manual pages provided,
2763comprehensive documentation is available on the world wide web
2764at
2765@code{http://www.ntp.org/}.
2766A snapshot of this documentation is available in HTML format in
2767@file{/usr/share/doc/ntp}.
2768@*
2769
2770@*
2771David L. Mills, @emph{Network Time Protocol (Version 4)}, RFC5905
2772@node ntp.conf Bugs
2773@subsection ntp.conf Bugs
2774The syntax checking is not picky; some combinations of
2775ridiculous and even hilarious options and modes may not be
2776detected.
2777
2778The
2779@file{ntpkey_}@kbd{host}
2780files are really digital
2781certificates.
2782These should be obtained via secure directory
2783services when they become universally available.
2784@node ntp.conf Notes
2785@subsection ntp.conf Notes
2786This document was derived from FreeBSD.
2787