]> git.ipfire.org Git - thirdparty/dhcp.git/blob - server/dhcpd.conf.5
For BUG #20245: man page - clarification of partner-down instructions.
[thirdparty/dhcp.git] / server / dhcpd.conf.5
1 .\" dhcpd.conf.5
2 .\"
3 .\" Copyright (c) 2004-2008 by Internet Systems Consortium, Inc. ("ISC")
4 .\" Copyright (c) 1996-2003 by Internet Software Consortium
5 .\"
6 .\" Permission to use, copy, modify, and distribute this software for any
7 .\" purpose with or without fee is hereby granted, provided that the above
8 .\" copyright notice and this permission notice appear in all copies.
9 .\"
10 .\" THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
11 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
13 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
16 .\" OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 .\"
18 .\" Internet Systems Consortium, Inc.
19 .\" 950 Charter Street
20 .\" Redwood City, CA 94063
21 .\" <info@isc.org>
22 .\" https://www.isc.org/
23 .\"
24 .\" This software has been written for Internet Systems Consortium
25 .\" by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
26 .\" To learn more about Internet Systems Consortium, see
27 .\" ``https://www.isc.org/''. To learn more about Vixie Enterprises,
28 .\" see ``http://www.vix.com''. To learn more about Nominum, Inc., see
29 .\" ``http://www.nominum.com''.
30 .\"
31 .\" $Id: dhcpd.conf.5,v 1.106 2009/09/14 18:51:46 jreed Exp $
32 .\"
33 .TH dhcpd.conf 5
34 .SH NAME
35 dhcpd.conf - dhcpd configuration file
36 .SH DESCRIPTION
37 The dhcpd.conf file contains configuration information for
38 .IR dhcpd,
39 the Internet Systems Consortium DHCP Server.
40 .PP
41 The dhcpd.conf file is a free-form ASCII text file. It is parsed by
42 the recursive-descent parser built into dhcpd. The file may contain
43 extra tabs and newlines for formatting purposes. Keywords in the file
44 are case-insensitive. Comments may be placed anywhere within the
45 file (except within quotes). Comments begin with the # character and
46 end at the end of the line.
47 .PP
48 The file essentially consists of a list of statements. Statements
49 fall into two broad categories - parameters and declarations.
50 .PP
51 Parameter statements either say how to do something (e.g., how long a
52 lease to offer), whether to do something (e.g., should dhcpd provide
53 addresses to unknown clients), or what parameters to provide to the
54 client (e.g., use gateway 220.177.244.7).
55 .PP
56 Declarations are used to describe the topology of the
57 network, to describe clients on the network, to provide addresses that
58 can be assigned to clients, or to apply a group of parameters to a
59 group of declarations. In any group of parameters and declarations,
60 all parameters must be specified before any declarations which depend
61 on those parameters may be specified.
62 .PP
63 Declarations about network topology include the \fIshared-network\fR
64 and the \fIsubnet\fR declarations. If clients on a subnet are to be
65 assigned addresses
66 dynamically, a \fIrange\fR declaration must appear within the
67 \fIsubnet\fR declaration. For clients with statically assigned
68 addresses, or for installations where only known clients will be
69 served, each such client must have a \fIhost\fR declaration. If
70 parameters are to be applied to a group of declarations which are not
71 related strictly on a per-subnet basis, the \fIgroup\fR declaration
72 can be used.
73 .PP
74 For every subnet which will be served, and for every subnet
75 to which the dhcp server is connected, there must be one \fIsubnet\fR
76 declaration, which tells dhcpd how to recognize that an address is on
77 that subnet. A \fIsubnet\fR declaration is required for each subnet
78 even if no addresses will be dynamically allocated on that subnet.
79 .PP
80 Some installations have physical networks on which more than one IP
81 subnet operates. For example, if there is a site-wide requirement
82 that 8-bit subnet masks be used, but a department with a single
83 physical ethernet network expands to the point where it has more than
84 254 nodes, it may be necessary to run two 8-bit subnets on the same
85 ethernet until such time as a new physical network can be added. In
86 this case, the \fIsubnet\fR declarations for these two networks must be
87 enclosed in a \fIshared-network\fR declaration.
88 .PP
89 Note that even when the \fIshared-network\fR declaration is absent, an
90 empty one is created by the server to contain the \fIsubnet\fR (and any scoped
91 parameters included in the \fIsubnet\fR). For practical purposes, this means
92 that "stateless" DHCP clients, which are not tied to addresses (and therefore
93 subnets) will receive the same configuration as stateful ones.
94 .PP
95 Some sites may have departments which have clients on more than one
96 subnet, but it may be desirable to offer those clients a uniform set
97 of parameters which are different than what would be offered to
98 clients from other departments on the same subnet. For clients which
99 will be declared explicitly with \fIhost\fR declarations, these
100 declarations can be enclosed in a \fIgroup\fR declaration along with
101 the parameters which are common to that department. For clients
102 whose addresses will be dynamically assigned, class declarations and
103 conditional declarations may be used to group parameter assignments
104 based on information the client sends.
105 .PP
106 When a client is to be booted, its boot parameters are determined by
107 consulting that client's \fIhost\fR declaration (if any), and then
108 consulting any \fIclass\fR declarations matching the client,
109 followed by the \fIpool\fR, \fIsubnet\fR and \fIshared-network\fR
110 declarations for the IP address assigned to the client. Each of
111 these declarations itself appears within a lexical scope, and all
112 declarations at less specific lexical scopes are also consulted for
113 client option declarations. Scopes are never considered
114 twice, and if parameters are declared in more than one scope, the
115 parameter declared in the most specific scope is the one that is
116 used.
117 .PP
118 When dhcpd tries to find a \fIhost\fR declaration for a client, it
119 first looks for a \fIhost\fR declaration which has a
120 \fIfixed-address\fR declaration that lists an IP address that is valid
121 for the subnet or shared network on which the client is booting. If
122 it doesn't find any such entry, it tries to find an entry which has
123 no \fIfixed-address\fR declaration.
124 .SH EXAMPLES
125 .PP
126 A typical dhcpd.conf file will look something like this:
127 .nf
128
129 .I global parameters...
130
131 subnet 204.254.239.0 netmask 255.255.255.224 {
132 \fIsubnet-specific parameters...\fR
133 range 204.254.239.10 204.254.239.30;
134 }
135
136 subnet 204.254.239.32 netmask 255.255.255.224 {
137 \fIsubnet-specific parameters...\fR
138 range 204.254.239.42 204.254.239.62;
139 }
140
141 subnet 204.254.239.64 netmask 255.255.255.224 {
142 \fIsubnet-specific parameters...\fR
143 range 204.254.239.74 204.254.239.94;
144 }
145
146 group {
147 \fIgroup-specific parameters...\fR
148 host zappo.test.isc.org {
149 \fIhost-specific parameters...\fR
150 }
151 host beppo.test.isc.org {
152 \fIhost-specific parameters...\fR
153 }
154 host harpo.test.isc.org {
155 \fIhost-specific parameters...\fR
156 }
157 }
158
159 .ce 1
160 Figure 1
161
162 .fi
163 .PP
164 Notice that at the beginning of the file, there's a place
165 for global parameters. These might be things like the organization's
166 domain name, the addresses of the name servers (if they are common to
167 the entire organization), and so on. So, for example:
168 .nf
169
170 option domain-name "isc.org";
171 option domain-name-servers ns1.isc.org, ns2.isc.org;
172
173 .ce 1
174 Figure 2
175 .fi
176 .PP
177 As you can see in Figure 2, you can specify host addresses in
178 parameters using their domain names rather than their numeric IP
179 addresses. If a given hostname resolves to more than one IP address
180 (for example, if that host has two ethernet interfaces), then where
181 possible, both addresses are supplied to the client.
182 .PP
183 The most obvious reason for having subnet-specific parameters as
184 shown in Figure 1 is that each subnet, of necessity, has its own
185 router. So for the first subnet, for example, there should be
186 something like:
187 .nf
188
189 option routers 204.254.239.1;
190 .fi
191 .PP
192 Note that the address here is specified numerically. This is not
193 required - if you have a different domain name for each interface on
194 your router, it's perfectly legitimate to use the domain name for that
195 interface instead of the numeric address. However, in many cases
196 there may be only one domain name for all of a router's IP addresses, and
197 it would not be appropriate to use that name here.
198 .PP
199 In Figure 1 there is also a \fIgroup\fR statement, which provides
200 common parameters for a set of three hosts - zappo, beppo and harpo.
201 As you can see, these hosts are all in the test.isc.org domain, so it
202 might make sense for a group-specific parameter to override the domain
203 name supplied to these hosts:
204 .nf
205
206 option domain-name "test.isc.org";
207 .fi
208 .PP
209 Also, given the domain they're in, these are probably test machines.
210 If we wanted to test the DHCP leasing mechanism, we might set the
211 lease timeout somewhat shorter than the default:
212
213 .nf
214 max-lease-time 120;
215 default-lease-time 120;
216 .fi
217 .PP
218 You may have noticed that while some parameters start with the
219 \fIoption\fR keyword, some do not. Parameters starting with the
220 \fIoption\fR keyword correspond to actual DHCP options, while
221 parameters that do not start with the option keyword either control
222 the behavior of the DHCP server (e.g., how long a lease dhcpd will
223 give out), or specify client parameters that are not optional in the
224 DHCP protocol (for example, server-name and filename).
225 .PP
226 In Figure 1, each host had \fIhost-specific parameters\fR. These
227 could include such things as the \fIhostname\fR option, the name of a
228 file to upload (the \fIfilename\fR parameter) and the address of the
229 server from which to upload the file (the \fInext-server\fR
230 parameter). In general, any parameter can appear anywhere that
231 parameters are allowed, and will be applied according to the scope in
232 which the parameter appears.
233 .PP
234 Imagine that you have a site with a lot of NCD X-Terminals. These
235 terminals come in a variety of models, and you want to specify the
236 boot files for each model. One way to do this would be to have host
237 declarations for each server and group them by model:
238 .nf
239
240 group {
241 filename "Xncd19r";
242 next-server ncd-booter;
243
244 host ncd1 { hardware ethernet 0:c0:c3:49:2b:57; }
245 host ncd4 { hardware ethernet 0:c0:c3:80:fc:32; }
246 host ncd8 { hardware ethernet 0:c0:c3:22:46:81; }
247 }
248
249 group {
250 filename "Xncd19c";
251 next-server ncd-booter;
252
253 host ncd2 { hardware ethernet 0:c0:c3:88:2d:81; }
254 host ncd3 { hardware ethernet 0:c0:c3:00:14:11; }
255 }
256
257 group {
258 filename "XncdHMX";
259 next-server ncd-booter;
260
261 host ncd1 { hardware ethernet 0:c0:c3:11:90:23; }
262 host ncd4 { hardware ethernet 0:c0:c3:91:a7:8; }
263 host ncd8 { hardware ethernet 0:c0:c3:cc:a:8f; }
264 }
265 .fi
266 .SH ADDRESS POOLS
267 .PP
268 The
269 .B pool
270 declaration can be used to specify a pool of addresses that will be
271 treated differently than another pool of addresses, even on the same
272 network segment or subnet. For example, you may want to provide a
273 large set of addresses that can be assigned to DHCP clients that are
274 registered to your DHCP server, while providing a smaller set of
275 addresses, possibly with short lease times, that are available for
276 unknown clients. If you have a firewall, you may be able to arrange
277 for addresses from one pool to be allowed access to the Internet,
278 while addresses in another pool are not, thus encouraging users to
279 register their DHCP clients. To do this, you would set up a pair of
280 pool declarations:
281 .PP
282 .nf
283 subnet 10.0.0.0 netmask 255.255.255.0 {
284 option routers 10.0.0.254;
285
286 # Unknown clients get this pool.
287 pool {
288 option domain-name-servers bogus.example.com;
289 max-lease-time 300;
290 range 10.0.0.200 10.0.0.253;
291 allow unknown-clients;
292 }
293
294 # Known clients get this pool.
295 pool {
296 option domain-name-servers ns1.example.com, ns2.example.com;
297 max-lease-time 28800;
298 range 10.0.0.5 10.0.0.199;
299 deny unknown-clients;
300 }
301 }
302 .fi
303 .PP
304 It is also possible to set up entirely different subnets for known and
305 unknown clients - address pools exist at the level of shared networks,
306 so address ranges within pool declarations can be on different
307 subnets.
308 .PP
309 As you can see in the preceding example, pools can have permit lists
310 that control which clients are allowed access to the pool and which
311 aren't. Each entry in a pool's permit list is introduced with the
312 .I allow
313 or \fIdeny\fR keyword. If a pool has a permit list, then only those
314 clients that match specific entries on the permit list will be
315 eligible to be assigned addresses from the pool. If a pool has a
316 deny list, then only those clients that do not match any entries on
317 the deny list will be eligible. If both permit and deny lists exist
318 for a pool, then only clients that match the permit list and do not
319 match the deny list will be allowed access.
320 .SH DYNAMIC ADDRESS ALLOCATION
321 Address allocation is actually only done when a client is in the INIT
322 state and has sent a DHCPDISCOVER message. If the client thinks it
323 has a valid lease and sends a DHCPREQUEST to initiate or renew that
324 lease, the server has only three choices - it can ignore the
325 DHCPREQUEST, send a DHCPNAK to tell the client it should stop using
326 the address, or send a DHCPACK, telling the client to go ahead and use
327 the address for a while.
328 .PP
329 If the server finds the address the client is requesting, and that
330 address is available to the client, the server will send a DHCPACK.
331 If the address is no longer available, or the client isn't permitted
332 to have it, the server will send a DHCPNAK. If the server knows
333 nothing about the address, it will remain silent, unless the address
334 is incorrect for the network segment to which the client has been
335 attached and the server is authoritative for that network segment, in
336 which case the server will send a DHCPNAK even though it doesn't know
337 about the address.
338 .PP
339 There may be a host declaration matching the client's identification.
340 If that host declaration contains a fixed-address declaration that
341 lists an IP address that is valid for the network segment to which the
342 client is connected. In this case, the DHCP server will never do
343 dynamic address allocation. In this case, the client is \fIrequired\fR
344 to take the address specified in the host declaration. If the
345 client sends a DHCPREQUEST for some other address, the server will respond
346 with a DHCPNAK.
347 .PP
348 When the DHCP server allocates a new address for a client (remember,
349 this only happens if the client has sent a DHCPDISCOVER), it first
350 looks to see if the client already has a valid lease on an IP address,
351 or if there is an old IP address the client had before that hasn't yet
352 been reassigned. In that case, the server will take that address and
353 check it to see if the client is still permitted to use it. If the
354 client is no longer permitted to use it, the lease is freed if the
355 server thought it was still in use - the fact that the client has sent
356 a DHCPDISCOVER proves to the server that the client is no longer using
357 the lease.
358 .PP
359 If no existing lease is found, or if the client is forbidden to
360 receive the existing lease, then the server will look in the list of
361 address pools for the network segment to which the client is attached
362 for a lease that is not in use and that the client is permitted to
363 have. It looks through each pool declaration in sequence (all
364 .I range
365 declarations that appear outside of pool declarations are grouped into
366 a single pool with no permit list). If the permit list for the pool
367 allows the client to be allocated an address from that pool, the pool
368 is examined to see if there is an address available. If so, then the
369 client is tentatively assigned that address. Otherwise, the next
370 pool is tested. If no addresses are found that can be assigned to
371 the client, no response is sent to the client.
372 .PP
373 If an address is found that the client is permitted to have, and that
374 has never been assigned to any client before, the address is
375 immediately allocated to the client. If the address is available for
376 allocation but has been previously assigned to a different client, the
377 server will keep looking in hopes of finding an address that has never
378 before been assigned to a client.
379 .PP
380 The DHCP server generates the list of available IP addresses from a
381 hash table. This means that the addresses are not sorted in any
382 particular order, and so it is not possible to predict the order in
383 which the DHCP server will allocate IP addresses. Users of previous
384 versions of the ISC DHCP server may have become accustomed to the DHCP
385 server allocating IP addresses in ascending order, but this is no
386 longer possible, and there is no way to configure this behavior with
387 version 3 of the ISC DHCP server.
388 .SH IP ADDRESS CONFLICT PREVENTION
389 The DHCP server checks IP addresses to see if they are in use before
390 allocating them to clients. It does this by sending an ICMP Echo
391 request message to the IP address being allocated. If no ICMP Echo
392 reply is received within a second, the address is assumed to be free.
393 This is only done for leases that have been specified in range
394 statements, and only when the lease is thought by the DHCP server to
395 be free - i.e., the DHCP server or its failover peer has not listed
396 the lease as in use.
397 .PP
398 If a response is received to an ICMP Echo request, the DHCP server
399 assumes that there is a configuration error - the IP address is in use
400 by some host on the network that is not a DHCP client. It marks the
401 address as abandoned, and will not assign it to clients.
402 .PP
403 If a DHCP client tries to get an IP address, but none are available,
404 but there are abandoned IP addresses, then the DHCP server will
405 attempt to reclaim an abandoned IP address. It marks one IP address
406 as free, and then does the same ICMP Echo request check described
407 previously. If there is no answer to the ICMP Echo request, the
408 address is assigned to the client.
409 .PP
410 The DHCP server does not cycle through abandoned IP addresses if the
411 first IP address it tries to reclaim is free. Rather, when the next
412 DHCPDISCOVER comes in from the client, it will attempt a new
413 allocation using the same method described here, and will typically
414 try a new IP address.
415 .SH DHCP FAILOVER
416 This version of the ISC DHCP server supports the DHCP failover
417 protocol as documented in draft-ietf-dhc-failover-07.txt. This is
418 not a final protocol document, and we have not done interoperability
419 testing with other vendors' implementations of this protocol, so you
420 must not assume that this implementation conforms to the standard.
421 If you wish to use the failover protocol, make sure that both failover
422 peers are running the same version of the ISC DHCP server.
423 .PP
424 The failover protocol allows two DHCP servers (and no more than two)
425 to share a common address pool. Each server will have about half of
426 the available IP addresses in the pool at any given time for
427 allocation. If one server fails, the other server will continue to
428 renew leases out of the pool, and will allocate new addresses out of
429 the roughly half of available addresses that it had when
430 communications with the other server were lost.
431 .PP
432 It is possible during a prolonged failure to tell the remaining server
433 that the other server is down, in which case the remaining server will
434 (over time) reclaim all the addresses the other server had available
435 for allocation, and begin to reuse them. This is called putting the
436 server into the PARTNER-DOWN state.
437 .PP
438 You can put the server into the PARTNER-DOWN state either by using the
439 .B omshell (1)
440 command or by stopping the server, editing the last failover state
441 declaration in the lease file, and restarting the server. If you use
442 this last method, change the "my state" line to:
443 .PP
444 .nf
445 .B failover peer "\fIname\fB" state {
446 .B my state partner-down;
447 .B peer state \fIstate\fB at \fIdate\fB;
448 .B }
449 .fi
450 .PP
451 It is only required to change "my state" as shown above.
452 .PP
453 When the other server comes back online, it should automatically
454 detect that it has been offline and request a complete update from the
455 server that was running in the PARTNER-DOWN state, and then both
456 servers will resume processing together.
457 .PP
458 It is possible to get into a dangerous situation: if you put one
459 server into the PARTNER-DOWN state, and then *that* server goes down,
460 and the other server comes back up, the other server will not know
461 that the first server was in the PARTNER-DOWN state, and may issue
462 addresses previously issued by the other server to different clients,
463 resulting in IP address conflicts. Before putting a server into
464 PARTNER-DOWN state, therefore, make
465 .I sure
466 that the other server will not restart automatically.
467 .PP
468 The failover protocol defines a primary server role and a secondary
469 server role. There are some differences in how primaries and
470 secondaries act, but most of the differences simply have to do with
471 providing a way for each peer to behave in the opposite way from the
472 other. So one server must be configured as primary, and the other
473 must be configured as secondary, and it doesn't matter too much which
474 one is which.
475 .SH FAILOVER STARTUP
476 When a server starts that has not previously communicated with its
477 failover peer, it must establish communications with its failover peer
478 and synchronize with it before it can serve clients. This can happen
479 either because you have just configured your DHCP servers to perform
480 failover for the first time, or because one of your failover servers
481 has failed catastrophically and lost its database.
482 .PP
483 The initial recovery process is designed to ensure that when one
484 failover peer loses its database and then resynchronizes, any leases
485 that the failed server gave out before it failed will be honored.
486 When the failed server starts up, it notices that it has no saved
487 failover state, and attempts to contact its peer.
488 .PP
489 When it has established contact, it asks the peer for a complete copy
490 its peer's lease database. The peer then sends its complete database,
491 and sends a message indicating that it is done. The failed server
492 then waits until MCLT has passed, and once MCLT has passed both
493 servers make the transition back into normal operation. This waiting
494 period ensures that any leases the failed server may have given out
495 while out of contact with its partner will have expired.
496 .PP
497 While the failed server is recovering, its partner remains in the
498 partner-down state, which means that it is serving all clients. The
499 failed server provides no service at all to DHCP clients until it has
500 made the transition into normal operation.
501 .PP
502 In the case where both servers detect that they have never before
503 communicated with their partner, they both come up in this recovery
504 state and follow the procedure we have just described. In this case,
505 no service will be provided to DHCP clients until MCLT has expired.
506 .SH CONFIGURING FAILOVER
507 In order to configure failover, you need to write a peer declaration
508 that configures the failover protocol, and you need to write peer
509 references in each pool declaration for which you want to do
510 failover. You do not have to do failover for all pools on a given
511 network segment. You must not tell one server it's doing failover
512 on a particular address pool and tell the other it is not. You must
513 not have any common address pools on which you are not doing
514 failover. A pool declaration that utilizes failover would look like this:
515 .PP
516 .nf
517 pool {
518 failover peer "foo";
519 \fIpool specific parameters\fR
520 };
521 .fi
522 .PP
523 The server currently does very little sanity checking, so if you
524 configure it wrong, it will just fail in odd ways. I would recommend
525 therefore that you either do failover or don't do failover, but don't
526 do any mixed pools. Also, use the same master configuration file for
527 both servers, and have a separate file that contains the peer
528 declaration and includes the master file. This will help you to avoid
529 configuration mismatches. As our implementation evolves, this will
530 become less of a problem. A basic sample dhcpd.conf file for a
531 primary server might look like this:
532 .PP
533 .nf
534 failover peer "foo" {
535 primary;
536 address anthrax.rc.vix.com;
537 port 519;
538 peer address trantor.rc.vix.com;
539 peer port 520;
540 max-response-delay 60;
541 max-unacked-updates 10;
542 mclt 3600;
543 split 128;
544 load balance max seconds 3;
545 }
546
547 include "/etc/dhcpd.master";
548 .fi
549 .PP
550 The statements in the peer declaration are as follows:
551 .PP
552 The
553 .I primary
554 and
555 .I secondary
556 statements
557 .RS 0.25i
558 .PP
559 [ \fBprimary\fR | \fBsecondary\fR ]\fB;\fR
560 .PP
561 This determines whether the server is primary or secondary, as
562 described earlier under DHCP FAILOVER.
563 .RE
564 .PP
565 The
566 .I address
567 statement
568 .RS 0.25i
569 .PP
570 .B address \fIaddress\fR\fB;\fR
571 .PP
572 The \fBaddress\fR statement declares the IP address or DNS name on which the
573 server should listen for connections from its failover peer, and also the
574 value to use for the DHCP Failover Protocol server identifier. Because this
575 value is used as an identifier, it may not be omitted.
576 .RE
577 .PP
578 The
579 .I peer address
580 statement
581 .RS 0.25i
582 .PP
583 .B peer address \fIaddress\fR\fB;\fR
584 .PP
585 The \fBpeer address\fR statement declares the IP address or DNS name to
586 which the server should connect to reach its failover peer for failover
587 messages.
588 .RE
589 .PP
590 The
591 .I port
592 statement
593 .RS 0.25i
594 .PP
595 .B port \fIport-number\fR\fB;\fR
596 .PP
597 The \fBport\fR statement declares the TCP port on which the server
598 should listen for connections from its failover peer. This statement
599 may be omitted, in which case the IANA assigned port number 647 will be
600 used by default.
601 .RE
602 .PP
603 The
604 .I peer port
605 statement
606 .RS 0.25i
607 .PP
608 .B peer port \fIport-number\fR\fB;\fR
609 .PP
610 The \fBpeer port\fR statement declares the TCP port to which the
611 server should connect to reach its failover peer for failover
612 messages. This statement may be omitted, in which case the IANA
613 assigned port number 647 will be used by default.
614 .RE
615 .PP
616 The
617 .I max-response-delay
618 statement
619 .RS 0.25i
620 .PP
621 .B max-response-delay \fIseconds\fR\fB;\fR
622 .PP
623 The \fBmax-response-delay\fR statement tells the DHCP server how
624 many seconds may pass without receiving a message from its failover
625 peer before it assumes that connection has failed. This number
626 should be small enough that a transient network failure that breaks
627 the connection will not result in the servers being out of
628 communication for a long time, but large enough that the server isn't
629 constantly making and breaking connections. This parameter must be
630 specified.
631 .RE
632 .PP
633 The
634 .I max-unacked-updates
635 statement
636 .RS 0.25i
637 .PP
638 .B max-unacked-updates \fIcount\fR\fB;\fR
639 .PP
640 The \fBmax-unacked-updates\fR statement tells the remote DHCP server how
641 many BNDUPD messages it can send before it receives a BNDACK
642 from the local system. We don't have enough operational experience
643 to say what a good value for this is, but 10 seems to work. This
644 parameter must be specified.
645 .RE
646 .PP
647 The
648 .I mclt
649 statement
650 .RS 0.25i
651 .PP
652 .B mclt \fIseconds\fR\fB;\fR
653 .PP
654 The \fBmclt\fR statement defines the Maximum Client Lead Time. It
655 must be specified on the primary, and may not be specified on the
656 secondary. This is the length of time for which a lease may be
657 renewed by either failover peer without contacting the other. The
658 longer you set this, the longer it will take for the running server to
659 recover IP addresses after moving into PARTNER-DOWN state. The
660 shorter you set it, the more load your servers will experience when
661 they are not communicating. A value of something like 3600 is
662 probably reasonable, but again bear in mind that we have no real
663 operational experience with this.
664 .RE
665 .PP
666 The
667 .I split
668 statement
669 .RS 0.25i
670 .PP
671 .B split \fIindex\fR\fB;\fR
672 .PP
673 The split statement specifies the split between the primary and
674 secondary for the purposes of load balancing. Whenever a client
675 makes a DHCP request, the DHCP server runs a hash on the client
676 identification, resulting in value from 0 to 255. This is used as
677 an index into a 256 bit field. If the bit at that index is set,
678 the primary is responsible. If the bit at that index is not set,
679 the secondary is responsible. The \fBsplit\fR value determines
680 how many of the leading bits are set to one. So, in practice, higher
681 split values will cause the primary to serve more clients than the
682 secondary. Lower split values, the converse. Legal values are between
683 0 and 255, of which the most reasonable is 128.
684 .RE
685 .PP
686 The
687 .I hba
688 statement
689 .RS 0.25i
690 .PP
691 .B hba \fIcolon-separated-hex-list\fB;\fR
692 .PP
693 The hba statement specifies the split between the primary and
694 secondary as a bitmap rather than a cutoff, which theoretically allows
695 for finer-grained control. In practice, there is probably no need
696 for such fine-grained control, however. An example hba statement:
697 .PP
698 .nf
699 hba ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:
700 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00;
701 .fi
702 .PP
703 This is equivalent to a \fBsplit 128;\fR statement, and identical. The
704 following two examples are also equivalent to a \fBsplit\fR of 128, but
705 are not identical:
706 .PP
707 .nf
708 hba aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:
709 aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa;
710
711 hba 55:55:55:55:55:55:55:55:55:55:55:55:55:55:55:55:
712 55:55:55:55:55:55:55:55:55:55:55:55:55:55:55:55;
713 .fi
714 .PP
715 They are equivalent, because half the bits are set to 0, half are set to
716 1 (0xa and 0x5 are 1010 and 0101 binary respectively) and consequently this
717 would roughly divide the clients equally between the servers. They are not
718 identical, because the actual peers this would load balance to each server
719 are different for each example.
720 .PP
721 You must only have \fBsplit\fR or \fBhba\fR defined, never both. For most
722 cases, the fine-grained control that \fBhba\fR offers isn't necessary, and
723 \fBsplit\fR should be used.
724 .RE
725 .PP
726 The
727 .I load balance max seconds
728 statement
729 .RS 0.25i
730 .PP
731 .B load balance max seconds \fIseconds\fR\fB;\fR
732 .PP
733 This statement allows you to configure a cutoff after which load
734 balancing is disabled. The cutoff is based on the number of seconds
735 since the client sent its first DHCPDISCOVER or DHCPREQUEST message,
736 and only works with clients that correctly implement the \fIsecs\fR
737 field - fortunately most clients do. We recommend setting this to
738 something like 3 or 5. The effect of this is that if one of the
739 failover peers gets into a state where it is responding to failover
740 messages but not responding to some client requests, the other
741 failover peer will take over its client load automatically as the
742 clients retry.
743 .RE
744 .PP
745 The
746 .I auto-partner-down
747 statement
748 .RS 0.25i
749 .PP
750 .B auto-partner-down \fIseconds\fR\fB;\fR
751 .PP
752 This statement instructs the server to initiate a timed delay upon entering
753 the communications-interrupted state (any situation of being out-of-contact
754 with the remote failover peer). At the conclusion of the timer, the server
755 will automatically enter the partner-down state. This permits the server
756 to allocate leases from the partner's free lease pool after an STOS+MCLT
757 timer expires, which can be dangerous if the partner is in fact operating
758 at the time (the two servers will give conflicting bindings).
759 .PP
760 Think very carefully before enabling this feature. The partner-down and
761 communications-interrupted states are intentionally segregated because
762 there do exist situations where a failover server can fail to communicate
763 with its peer, but still has the ability to receive and reply to requests
764 from DHCP clients. In general, this feature should only be used in those
765 deployments where the failover servers are directly connected to one
766 another, such as by a dedicated hardwired link ("a heartbeat cable").
767 .PP
768 A zero value disables the auto-partner-down feature (also the default), and
769 any positive value indicates the time in seconds to wait before automatically
770 entering partner-down.
771 .RE
772 .PP
773 The Failover pool balance statements.
774 .RS 0.25i
775 .PP
776 \fBmax-lease-misbalance \fIpercentage\fR\fB;\fR
777 \fBmax-lease-ownership \fIpercentage\fR\fB;\fR
778 \fBmin-balance \fIseconds\fR\fB;\fR
779 \fBmax-balance \fIseconds\fR\fB;\fR
780 .PP
781 This version of the DHCP Server evaluates pool balance on a schedule,
782 rather than on demand as leases are allocated. The latter approach
783 proved to be slightly klunky when pool misbalanced reach total
784 saturation...when any server ran out of leases to assign, it also lost
785 its ability to notice it had run dry.
786 .PP
787 In order to understand pool balance, some elements of its operation
788 first need to be defined. First, there are 'free' and 'backup' leases.
789 Both of these are referred to as 'free state leases'. 'free' and 'backup'
790 are 'the free states' for the purpose of this document. The difference
791 is that only the primary may allocate from 'free' leases unless under
792 special circumstances, and only the secondary may allocate 'backup' leases.
793 .PP
794 When pool balance is performed, the only plausible expectation is to
795 provide a 50/50 split of the free state leases between the two servers.
796 This is because no one can predict which server will fail, regardless
797 of the relative load placed upon the two servers, so giving each server
798 half the leases gives both servers the same amount of 'failure endurance'.
799 Therefore, there is no way to configure any different behaviour, outside of
800 some very small windows we will describe shortly.
801 .PP
802 The first thing calculated on any pool balance run is a value referred to
803 as 'lts', or "Leases To Send". This, simply, is the difference in the
804 count of free and backup leases, divided by two. For the secondary,
805 it is the difference in the backup and free leases, divided by two.
806 The resulting value is signed: if it is positive, the local server is
807 expected to hand out leases to retain a 50/50 balance. If it is negative,
808 the remote server would need to send leases to balance the pool. Once
809 the lts value reaches zero, the pool is perfectly balanced (give or take
810 one lease in the case of an odd number of total free state leases).
811 .PP
812 The current approach is still something of a hybrid of the old approach,
813 marked by the presence of the \fBmax-lease-misbalance\fR statement. This
814 parameter configures what used to be a 10% fixed value in previous versions:
815 if lts is less than free+backup * \fBmax-lease-misbalance\fR percent, then
816 the server will skip balancing a given pool (it won't bother moving any
817 leases, even if some leases "should" be moved). The meaning of this value
818 is also somewhat overloaded, however, in that it also governs the estimation
819 of when to attempt to balance the pool (which may then also be skipped over).
820 The oldest leases in the free and backup states are examined. The time
821 they have resided in their respective queues is used as an estimate to
822 indicate how much time it is probable it would take before the leases at
823 the top of the list would be consumed (and thus, how long it would take
824 to use all leases in that state). This percentage is directly multiplied
825 by this time, and fit into the schedule if it falls within
826 the \fBmin-balance\fR and \fBmax-balance\fR configured values. The
827 scheduled pool check time is only moved in a downwards direction, it is
828 never increased. Lastly, if the lts is more than double this number in
829 the negative direction, the local server will 'panic' and transmit a
830 Failover protocol POOLREQ message, in the hopes that the remote system
831 will be woken up into action.
832 .PP
833 Once the lts value exceeds the \fBmax-lease-misbalance\fR percentage of
834 total free state leases as described above, leases are moved to the remote
835 server. This is done in two passes.
836 .PP
837 In the first pass, only leases whose most recent bound client would have
838 been served by the remote server - according to the Load Balance Algorithm
839 (see above \fBsplit\fR and \fBhba\fR configuration statements) - are given
840 away to the peer. This first pass will happily continue to give away leases,
841 decrementing the lts value by one for each, until the lts value has reached
842 the negative of the total number of leases multiplied by
843 the \fBmax-lease-ownership\fR percentage. So it is through this value that
844 you can permit a small misbalance of the lease pools - for the purpose of
845 giving the peer more than a 50/50 share of leases in the hopes that their
846 clients might some day return and be allocated by the peer (operating
847 normally). This process is referred to as 'MAC Address Affinity', but this
848 is somewhat misnamed: it applies equally to DHCP Client Identifier options.
849 Note also that affinity is applied to leases when they enter the state
850 'free' from 'expired' or 'released'. In this case also, leases will not
851 be moved from free to backup if the secondary already has more than its
852 share.
853 .PP
854 The second pass is only entered into if the first pass fails to reduce
855 the lts underneath the total number of free state leases multiplied by
856 the \fBmax-lease-ownership\fR percentage. In this pass, the oldest
857 leases are given over to the peer without second thought about the Load
858 Balance Algorithm, and this continues until the lts falls under this
859 value. In this way, the local server will also happily keep a small
860 percentage of the leases that would normally load balance to itself.
861 .PP
862 So, the \fBmax-lease-misbalance\fR value acts as a behavioural gate.
863 Smaller values will cause more leases to transition states to balance
864 the pools over time, higher values will decrease the amount of change
865 (but may lead to pool starvation if there's a run on leases).
866 .PP
867 The \fBmax-lease-ownership\fR value permits a small (percentage) skew
868 in the lease balance of a percentage of the total number of free state
869 leases.
870 .PP
871 Finally, the \fBmin-balance\fR and \fBmax-balance\fR make certain that a
872 scheduled rebalance event happens within a reasonable timeframe (not
873 to be thrown off by, for example, a 7 year old free lease).
874 .PP
875 Plausible values for the percentages lie between 0 and 100, inclusive, but
876 values over 50 are indistinguishable from one another (once lts exceeds
877 50% of the free state leases, one server must therefore have 100% of the
878 leases in its respective free state). It is recommended to select
879 a \fBmax-lease-ownership\fR value that is lower than the value selected
880 for the \fBmax-lease-misbalance\fR value. \fBmax-lease-ownership\fR
881 defaults to 10, and \fBmax-lease-misbalance\fR defaults to 15.
882 .PP
883 Plausible values for the \fBmin-balance\fR and \fBmax-balance\fR times also
884 range from 0 to (2^32)-1 (or the limit of your local time_t value), but
885 default to values 60 and 3600 respectively (to place balance events between
886 1 minute and 1 hour).
887 .RE
888 .SH CLIENT CLASSING
889 Clients can be separated into classes, and treated differently
890 depending on what class they are in. This separation can be done
891 either with a conditional statement, or with a match statement within
892 the class declaration. It is possible to specify a limit on the
893 total number of clients within a particular class or subclass that may
894 hold leases at one time, and it is possible to specify automatic
895 subclassing based on the contents of the client packet.
896 .PP
897 To add clients to classes based on conditional evaluation, you can
898 specify a matching expression in the class statement:
899 .PP
900 .nf
901 class "ras-clients" {
902 match if substring (option dhcp-client-identifier, 1, 3) = "RAS";
903 }
904 .fi
905 .PP
906 Note that whether you use matching expressions or add statements (or
907 both) to classify clients, you must always write a class declaration
908 for any class that you use. If there will be no match statement and
909 no in-scope statements for a class, the declaration should look like
910 this:
911 .PP
912 .nf
913 class "ras-clients" {
914 }
915 .fi
916 .SH SUBCLASSES
917 .PP
918 In addition to classes, it is possible to declare subclasses. A
919 subclass is a class with the same name as a regular class, but with a
920 specific submatch expression which is hashed for quick matching.
921 This is essentially a speed hack - the main difference between five
922 classes with match expressions and one class with five subclasses is
923 that it will be quicker to find the subclasses. Subclasses work as
924 follows:
925 .PP
926 .nf
927 class "allocation-class-1" {
928 match pick-first-value (option dhcp-client-identifier, hardware);
929 }
930
931 class "allocation-class-2" {
932 match pick-first-value (option dhcp-client-identifier, hardware);
933 }
934
935 subclass "allocation-class-1" 1:8:0:2b:4c:39:ad;
936 subclass "allocation-class-2" 1:8:0:2b:a9:cc:e3;
937 subclass "allocation-class-1" 1:0:0:c4:aa:29:44;
938
939 subnet 10.0.0.0 netmask 255.255.255.0 {
940 pool {
941 allow members of "allocation-class-1";
942 range 10.0.0.11 10.0.0.50;
943 }
944 pool {
945 allow members of "allocation-class-2";
946 range 10.0.0.51 10.0.0.100;
947 }
948 }
949 .fi
950 .PP
951 The data following the class name in the subclass declaration is a
952 constant value to use in matching the match expression for the class.
953 When class matching is done, the server will evaluate the match
954 expression and then look the result up in the hash table. If it
955 finds a match, the client is considered a member of both the class and
956 the subclass.
957 .PP
958 Subclasses can be declared with or without scope. In the above
959 example, the sole purpose of the subclass is to allow some clients
960 access to one address pool, while other clients are given access to
961 the other pool, so these subclasses are declared without scopes. If
962 part of the purpose of the subclass were to define different parameter
963 values for some clients, you might want to declare some subclasses
964 with scopes.
965 .PP
966 In the above example, if you had a single client that needed some
967 configuration parameters, while most didn't, you might write the
968 following subclass declaration for that client:
969 .PP
970 .nf
971 subclass "allocation-class-2" 1:08:00:2b:a1:11:31 {
972 option root-path "samsara:/var/diskless/alphapc";
973 filename "/tftpboot/netbsd.alphapc-diskless";
974 }
975 .fi
976 .PP
977 In this example, we've used subclassing as a way to control address
978 allocation on a per-client basis. However, it's also possible to use
979 subclassing in ways that are not specific to clients - for example, to
980 use the value of the vendor-class-identifier option to determine what
981 values to send in the vendor-encapsulated-options option. An example
982 of this is shown under the VENDOR ENCAPSULATED OPTIONS head in the
983 .B dhcp-options(5)
984 manual page.
985 .SH PER-CLASS LIMITS ON DYNAMIC ADDRESS ALLOCATION
986 .PP
987 You may specify a limit to the number of clients in a class that can
988 be assigned leases. The effect of this will be to make it difficult
989 for a new client in a class to get an address. Once a class with
990 such a limit has reached its limit, the only way a new client in that
991 class can get a lease is for an existing client to relinquish its
992 lease, either by letting it expire, or by sending a DHCPRELEASE
993 packet. Classes with lease limits are specified as follows:
994 .PP
995 .nf
996 class "limited-1" {
997 lease limit 4;
998 }
999 .fi
1000 .PP
1001 This will produce a class in which a maximum of four members may hold
1002 a lease at one time.
1003 .SH SPAWNING CLASSES
1004 .PP
1005 It is possible to declare a
1006 .I spawning class\fR.
1007 A spawning class is a class that automatically produces subclasses
1008 based on what the client sends. The reason that spawning classes
1009 were created was to make it possible to create lease-limited classes
1010 on the fly. The envisioned application is a cable-modem environment
1011 where the ISP wishes to provide clients at a particular site with more
1012 than one IP address, but does not wish to provide such clients with
1013 their own subnet, nor give them an unlimited number of IP addresses
1014 from the network segment to which they are connected.
1015 .PP
1016 Many cable modem head-end systems can be configured to add a Relay
1017 Agent Information option to DHCP packets when relaying them to the
1018 DHCP server. These systems typically add a circuit ID or remote ID
1019 option that uniquely identifies the customer site. To take advantage
1020 of this, you can write a class declaration as follows:
1021 .PP
1022 .nf
1023 class "customer" {
1024 spawn with option agent.circuit-id;
1025 lease limit 4;
1026 }
1027 .fi
1028 .PP
1029 Now whenever a request comes in from a customer site, the circuit ID
1030 option will be checked against the class's hash table. If a subclass
1031 is found that matches the circuit ID, the client will be classified in
1032 that subclass and treated accordingly. If no subclass is found
1033 matching the circuit ID, a new one will be created and logged in the
1034 .B dhcpd.leases
1035 file, and the client will be classified in this new class. Once the
1036 client has been classified, it will be treated according to the rules
1037 of the class, including, in this case, being subject to the per-site
1038 limit of four leases.
1039 .PP
1040 The use of the subclass spawning mechanism is not restricted to relay
1041 agent options - this particular example is given only because it is a
1042 fairly straightforward one.
1043 .SH COMBINING MATCH, MATCH IF AND SPAWN WITH
1044 .PP
1045 In some cases, it may be useful to use one expression to assign a
1046 client to a particular class, and a second expression to put it into a
1047 subclass of that class. This can be done by combining the \fBmatch
1048 if\fR and \fBspawn with\fR statements, or the \fBmatch if\fR and
1049 \fBmatch\fR statements. For example:
1050 .PP
1051 .nf
1052 class "jr-cable-modems" {
1053 match if option dhcp-vendor-identifier = "jrcm";
1054 spawn with option agent.circuit-id;
1055 lease limit 4;
1056 }
1057
1058 class "dv-dsl-modems" {
1059 match if option dhcp-vendor-identifier = "dvdsl";
1060 spawn with option agent.circuit-id;
1061 lease limit 16;
1062 }
1063 .fi
1064 .PP
1065 This allows you to have two classes that both have the same \fBspawn
1066 with\fR expression without getting the clients in the two classes
1067 confused with each other.
1068 .SH DYNAMIC DNS UPDATES
1069 .PP
1070 The DHCP server has the ability to dynamically update the Domain Name
1071 System. Within the configuration files, you can define how you want
1072 the Domain Name System to be updated. These updates are RFC 2136
1073 compliant so any DNS server supporting RFC 2136 should be able to
1074 accept updates from the DHCP server.
1075 .PP
1076 Two DNS update schemes are currently implemented, and another is
1077 planned. The two that are currently available are the ad-hoc DNS
1078 update mode and the interim DHCP-DNS interaction draft update mode.
1079 If and when the DHCP-DNS interaction draft and the DHCID draft make it
1080 through the IETF standards process, there will be a third mode, which
1081 will be the standard DNS update method. The DHCP server must be
1082 configured to use one of the two currently-supported methods, or not
1083 to do dns updates. This can be done with the
1084 .I ddns-update-style
1085 configuration parameter.
1086 .SH THE AD-HOC DNS UPDATE SCHEME
1087 The ad-hoc Dynamic DNS update scheme is
1088 .B now deprecated
1089 and
1090 .B
1091 does not work.
1092 In future releases of the ISC DHCP server, this scheme will not likely be
1093 available. The interim scheme works, allows for failover, and should now be
1094 used. The following description is left here for informational purposes
1095 only.
1096 .PP
1097 The ad-hoc Dynamic DNS update scheme implemented in this version of
1098 the ISC DHCP server is a prototype design, which does not
1099 have much to do with the standard update method that is being
1100 standardized in the IETF DHC working group, but rather implements some
1101 very basic, yet useful, update capabilities. This mode
1102 .B does not work
1103 with the
1104 .I failover protocol
1105 because it does not account for the possibility of two different DHCP
1106 servers updating the same set of DNS records.
1107 .PP
1108 For the ad-hoc DNS update method, the client's FQDN is derived in two
1109 parts. First, the hostname is determined. Then, the domain name is
1110 determined, and appended to the hostname.
1111 .PP
1112 The DHCP server determines the client's hostname by first looking for
1113 a \fIddns-hostname\fR configuration option, and using that if it is
1114 present. If no such option is present, the server looks for a
1115 valid hostname in the FQDN option sent by the client. If one is
1116 found, it is used; otherwise, if the client sent a host-name option,
1117 that is used. Otherwise, if there is a host declaration that applies
1118 to the client, the name from that declaration will be used. If none
1119 of these applies, the server will not have a hostname for the client,
1120 and will not be able to do a DNS update.
1121 .PP
1122 The domain name is determined from the
1123 .I ddns-domainname
1124 configuration option. The default configuration for this option is:
1125 .nf
1126 .sp 1
1127 option server.ddns-domainname = config-option domain-name;
1128
1129 .fi
1130 So if this configuration option is not configured to a different
1131 value (over-riding the above default), or if a domain-name option
1132 has not been configured for the client's scope, then the server will
1133 not attempt to perform a DNS update.
1134 .PP
1135 The client's fully-qualified domain name, derived as we have
1136 described, is used as the name on which an "A" record will be stored.
1137 The A record will contain the IP address that the client was assigned
1138 in its lease. If there is already an A record with the same name in
1139 the DNS server, no update of either the A or PTR records will occur -
1140 this prevents a client from claiming that its hostname is the name of
1141 some network server. For example, if you have a fileserver called
1142 "fs.sneedville.edu", and the client claims its hostname is "fs", no
1143 DNS update will be done for that client, and an error message will be
1144 logged.
1145 .PP
1146 If the A record update succeeds, a PTR record update for the assigned
1147 IP address will be done, pointing to the A record. This update is
1148 unconditional - it will be done even if another PTR record of the same
1149 name exists. Since the IP address has been assigned to the DHCP
1150 server, this should be safe.
1151 .PP
1152 Please note that the current implementation assumes clients only have
1153 a single network interface. A client with two network interfaces
1154 will see unpredictable behavior. This is considered a bug, and will
1155 be fixed in a later release. It may be helpful to enable the
1156 .I one-lease-per-client
1157 parameter so that roaming clients do not trigger this same behavior.
1158 .PP
1159 The DHCP protocol normally involves a four-packet exchange - first the
1160 client sends a DHCPDISCOVER message, then the server sends a
1161 DHCPOFFER, then the client sends a DHCPREQUEST, then the server sends
1162 a DHCPACK. In the current version of the server, the server will do
1163 a DNS update after it has received the DHCPREQUEST, and before it has
1164 sent the DHCPACK. It only sends the DNS update if it has not sent
1165 one for the client's address before, in order to minimize the impact
1166 on the DHCP server.
1167 .PP
1168 When the client's lease expires, the DHCP server (if it is operating
1169 at the time, or when next it operates) will remove the client's A and
1170 PTR records from the DNS database. If the client releases its lease
1171 by sending a DHCPRELEASE message, the server will likewise remove the
1172 A and PTR records.
1173 .SH THE INTERIM DNS UPDATE SCHEME
1174 The interim DNS update scheme operates mostly according to several
1175 drafts that are being considered by the IETF and are expected to
1176 become standards, but are not yet standards, and may not be
1177 standardized exactly as currently proposed. These are:
1178 .PP
1179 .nf
1180 .ce 3
1181 draft-ietf-dhc-ddns-resolution-??.txt
1182 draft-ietf-dhc-fqdn-option-??.txt
1183 draft-ietf-dnsext-dhcid-rr-??.txt
1184 .fi
1185 .PP
1186 Because our implementation is slightly different than the standard, we
1187 will briefly document the operation of this update style here.
1188 .PP
1189 The first point to understand about this style of DNS update is that
1190 unlike the ad-hoc style, the DHCP server does not necessarily
1191 always update both the A and the PTR records. The FQDN option
1192 includes a flag which, when sent by the client, indicates that the
1193 client wishes to update its own A record. In that case, the server
1194 can be configured either to honor the client's intentions or ignore
1195 them. This is done with the statement \fIallow client-updates;\fR or
1196 the statement \fIignore client-updates;\fR. By default, client
1197 updates are allowed.
1198 .PP
1199 If the server is configured to allow client updates, then if the
1200 client sends a fully-qualified domain name in the FQDN option, the
1201 server will use that name the client sent in the FQDN option to update
1202 the PTR record. For example, let us say that the client is a visitor
1203 from the "radish.org" domain, whose hostname is "jschmoe". The
1204 server is for the "example.org" domain. The DHCP client indicates in
1205 the FQDN option that its FQDN is "jschmoe.radish.org.". It also
1206 indicates that it wants to update its own A record. The DHCP server
1207 therefore does not attempt to set up an A record for the client, but
1208 does set up a PTR record for the IP address that it assigns the
1209 client, pointing at jschmoe.radish.org. Once the DHCP client has an
1210 IP address, it can update its own A record, assuming that the
1211 "radish.org" DNS server will allow it to do so.
1212 .PP
1213 If the server is configured not to allow client updates, or if the
1214 client doesn't want to do its own update, the server will simply
1215 choose a name for the client from either the fqdn option (if present)
1216 or the hostname option (if present). It will use its own
1217 domain name for the client, just as in the ad-hoc update scheme.
1218 It will then update both the A and PTR record, using the name that it
1219 chose for the client. If the client sends a fully-qualified domain
1220 name in the fqdn option, the server uses only the leftmost part of the
1221 domain name - in the example above, "jschmoe" instead of
1222 "jschmoe.radish.org".
1223 .PP
1224 Further, if the \fIignore client-updates;\fR directive is used, then
1225 the server will in addition send a response in the DHCP packet, using
1226 the FQDN Option, that implies to the client that it should perform its
1227 own updates if it chooses to do so. With \fIdeny client-updates;\fR, a
1228 response is sent which indicates the client may not perform updates.
1229 .PP
1230 Also, if the
1231 .I use-host-decl-names
1232 configuration option is enabled, then the host declaration's
1233 .I hostname
1234 will be used in place of the
1235 .I hostname
1236 option, and the same rules will apply as described above.
1237 .PP
1238 The other difference between the ad-hoc scheme and the interim
1239 scheme is that with the interim scheme, a method is used that
1240 allows more than one DHCP server to update the DNS database without
1241 accidentally deleting A records that shouldn't be deleted nor failing
1242 to add A records that should be added. The scheme works as follows:
1243 .PP
1244 When the DHCP server issues a client a new lease, it creates a text
1245 string that is an MD5 hash over the DHCP client's identification (see
1246 draft-ietf-dnsext-dhcid-rr-??.txt for details). The update adds an A
1247 record with the name the server chose and a TXT record containing the
1248 hashed identifier string (hashid). If this update succeeds, the
1249 server is done.
1250 .PP
1251 If the update fails because the A record already exists, then the DHCP
1252 server attempts to add the A record with the prerequisite that there
1253 must be a TXT record in the same name as the new A record, and that
1254 TXT record's contents must be equal to hashid. If this update
1255 succeeds, then the client has its A record and PTR record. If it
1256 fails, then the name the client has been assigned (or requested) is in
1257 use, and can't be used by the client. At this point the DHCP server
1258 gives up trying to do a DNS update for the client until the client
1259 chooses a new name.
1260 .PP
1261 The interim DNS update scheme is called interim for two reasons.
1262 First, it does not quite follow the drafts. The current versions of
1263 the drafts call for a new DHCID RRtype, but this is not yet
1264 available. The interim DNS update scheme uses a TXT record
1265 instead. Also, the existing ddns-resolution draft calls for the DHCP
1266 server to put a DHCID RR on the PTR record, but the \fIinterim\fR
1267 update method does not do this. It is our position that this is not
1268 useful, and we are working with the author in hopes of removing it
1269 from the next version of the draft, or better understanding why it is
1270 considered useful.
1271 .PP
1272 In addition to these differences, the server also does not update very
1273 aggressively. Because each DNS update involves a round trip to the
1274 DNS server, there is a cost associated with doing updates even if they
1275 do not actually modify the DNS database. So the DHCP server tracks
1276 whether or not it has updated the record in the past (this information
1277 is stored on the lease) and does not attempt to update records that it
1278 thinks it has already updated.
1279 .PP
1280 This can lead to cases where the DHCP server adds a record, and then
1281 the record is deleted through some other mechanism, but the server
1282 never again updates the DNS because it thinks the data is already
1283 there. In this case the data can be removed from the lease through
1284 operator intervention, and once this has been done, the DNS will be
1285 updated the next time the client renews.
1286 .SH DYNAMIC DNS UPDATE SECURITY
1287 .PP
1288 When you set your DNS server up to allow updates from the DHCP server,
1289 you may be exposing it to unauthorized updates. To avoid this, you
1290 should use TSIG signatures - a method of cryptographically signing
1291 updates using a shared secret key. As long as you protect the
1292 secrecy of this key, your updates should also be secure. Note,
1293 however, that the DHCP protocol itself provides no security, and that
1294 clients can therefore provide information to the DHCP server which the
1295 DHCP server will then use in its updates, with the constraints
1296 described previously.
1297 .PP
1298 The DNS server must be configured to allow updates for any zone that
1299 the DHCP server will be updating. For example, let us say that
1300 clients in the sneedville.edu domain will be assigned addresses on the
1301 10.10.17.0/24 subnet. In that case, you will need a key declaration
1302 for the TSIG key you will be using, and also two zone declarations -
1303 one for the zone containing A records that will be updates and one for
1304 the zone containing PTR records - for ISC BIND, something like this:
1305 .PP
1306 .nf
1307 key DHCP_UPDATER {
1308 algorithm HMAC-MD5.SIG-ALG.REG.INT;
1309 secret pRP5FapFoJ95JEL06sv4PQ==;
1310 };
1311
1312 zone "example.org" {
1313 type master;
1314 file "example.org.db";
1315 allow-update { key DHCP_UPDATER; };
1316 };
1317
1318 zone "17.10.10.in-addr.arpa" {
1319 type master;
1320 file "10.10.17.db";
1321 allow-update { key DHCP_UPDATER; };
1322 };
1323 .fi
1324 .PP
1325 You will also have to configure your DHCP server to do updates to
1326 these zones. To do so, you need to add something like this to your
1327 dhcpd.conf file:
1328 .PP
1329 .nf
1330 key DHCP_UPDATER {
1331 algorithm HMAC-MD5.SIG-ALG.REG.INT;
1332 secret pRP5FapFoJ95JEL06sv4PQ==;
1333 };
1334
1335 zone EXAMPLE.ORG. {
1336 primary 127.0.0.1;
1337 key DHCP_UPDATER;
1338 }
1339
1340 zone 17.127.10.in-addr.arpa. {
1341 primary 127.0.0.1;
1342 key DHCP_UPDATER;
1343 }
1344 .fi
1345 .PP
1346 The \fIprimary\fR statement specifies the IP address of the name
1347 server whose zone information is to be updated.
1348 .PP
1349 Note that the zone declarations have to correspond to authority
1350 records in your name server - in the above example, there must be an
1351 SOA record for "example.org." and for "17.10.10.in-addr.arpa.". For
1352 example, if there were a subdomain "foo.example.org" with no separate
1353 SOA, you could not write a zone declaration for "foo.example.org."
1354 Also keep in mind that zone names in your DHCP configuration should end in a
1355 "."; this is the preferred syntax. If you do not end your zone name in a
1356 ".", the DHCP server will figure it out. Also note that in the DHCP
1357 configuration, zone names are not encapsulated in quotes where there are in
1358 the DNS configuration.
1359 .PP
1360 You should choose your own secret key, of course. The ISC BIND 8 and
1361 9 distributions come with a program for generating secret keys called
1362 dnssec-keygen. The version that comes with BIND 9 is likely to produce a
1363 substantially more random key, so we recommend you use that one even
1364 if you are not using BIND 9 as your DNS server. If you are using BIND 9's
1365 dnssec-keygen, the above key would be created as follows:
1366 .PP
1367 .nf
1368 dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
1369 .fi
1370 .PP
1371 If you are using the BIND 8 dnskeygen program, the following command will
1372 generate a key as seen above:
1373 .PP
1374 .nf
1375 dnskeygen -H 128 -u -c -n DHCP_UPDATER
1376 .fi
1377 .PP
1378 You may wish to enable logging of DNS updates on your DNS server.
1379 To do so, you might write a logging statement like the following:
1380 .PP
1381 .nf
1382 logging {
1383 channel update_debug {
1384 file "/var/log/update-debug.log";
1385 severity debug 3;
1386 print-category yes;
1387 print-severity yes;
1388 print-time yes;
1389 };
1390 channel security_info {
1391 file "/var/log/named-auth.info";
1392 severity info;
1393 print-category yes;
1394 print-severity yes;
1395 print-time yes;
1396 };
1397
1398 category update { update_debug; };
1399 category security { security_info; };
1400 };
1401 .fi
1402 .PP
1403 You must create the /var/log/named-auth.info and
1404 /var/log/update-debug.log files before starting the name server. For
1405 more information on configuring ISC BIND, consult the documentation
1406 that accompanies it.
1407 .SH REFERENCE: EVENTS
1408 .PP
1409 There are three kinds of events that can happen regarding a lease, and
1410 it is possible to declare statements that occur when any of these
1411 events happen. These events are the commit event, when the server
1412 has made a commitment of a certain lease to a client, the release
1413 event, when the client has released the server from its commitment,
1414 and the expiry event, when the commitment expires.
1415 .PP
1416 To declare a set of statements to execute when an event happens, you
1417 must use the \fBon\fR statement, followed by the name of the event,
1418 followed by a series of statements to execute when the event happens,
1419 enclosed in braces. Events are used to implement DNS
1420 updates, so you should not define your own event handlers if you are
1421 using the built-in DNS update mechanism.
1422 .PP
1423 The built-in version of the DNS update mechanism is in a text
1424 string towards the top of server/dhcpd.c. If you want to use events
1425 for things other than DNS updates, and you also want DNS updates, you
1426 will have to start out by copying this code into your dhcpd.conf file
1427 and modifying it.
1428 .SH REFERENCE: DECLARATIONS
1429 .PP
1430 .B The
1431 .I include
1432 .B statement
1433 .PP
1434 .nf
1435 \fBinclude\fR \fI"filename"\fR\fB;\fR
1436 .fi
1437 .PP
1438 The \fIinclude\fR statement is used to read in a named file, and process
1439 the contents of that file as though it were entered in place of the
1440 include statement.
1441 .PP
1442 .B The
1443 .I shared-network
1444 .B statement
1445 .PP
1446 .nf
1447 \fBshared-network\fR \fIname\fR \fB{\fR
1448 [ \fIparameters\fR ]
1449 [ \fIdeclarations\fR ]
1450 \fB}\fR
1451 .fi
1452 .PP
1453 The \fIshared-network\fR statement is used to inform the DHCP server
1454 that some IP subnets actually share the same physical network. Any
1455 subnets in a shared network should be declared within a
1456 \fIshared-network\fR statement. Parameters specified in the
1457 \fIshared-network\fR statement will be used when booting clients on
1458 those subnets unless parameters provided at the subnet or host level
1459 override them. If any subnet in a shared network has addresses
1460 available for dynamic allocation, those addresses are collected into a
1461 common pool for that shared network and assigned to clients as needed.
1462 There is no way to distinguish on which subnet of a shared network a
1463 client should boot.
1464 .PP
1465 .I Name
1466 should be the name of the shared network. This name is used when
1467 printing debugging messages, so it should be descriptive for the
1468 shared network. The name may have the syntax of a valid domain name
1469 (although it will never be used as such), or it may be any arbitrary
1470 name, enclosed in quotes.
1471 .PP
1472 .B The
1473 .I subnet
1474 .B statement
1475 .PP
1476 .nf
1477 \fBsubnet\fR \fIsubnet-number\fR \fBnetmask\fR \fInetmask\fR \fB{\fR
1478 [ \fIparameters\fR ]
1479 [ \fIdeclarations\fR ]
1480 \fB}\fR
1481 .fi
1482 .PP
1483 The \fIsubnet\fR statement is used to provide dhcpd with enough
1484 information to tell whether or not an IP address is on that subnet.
1485 It may also be used to provide subnet-specific parameters and to
1486 specify what addresses may be dynamically allocated to clients booting
1487 on that subnet. Such addresses are specified using the \fIrange\fR
1488 declaration.
1489 .PP
1490 The
1491 .I subnet-number
1492 should be an IP address or domain name which resolves to the subnet
1493 number of the subnet being described. The
1494 .I netmask
1495 should be an IP address or domain name which resolves to the subnet mask
1496 of the subnet being described. The subnet number, together with the
1497 netmask, are sufficient to determine whether any given IP address is
1498 on the specified subnet.
1499 .PP
1500 Although a netmask must be given with every subnet declaration, it is
1501 recommended that if there is any variance in subnet masks at a site, a
1502 subnet-mask option statement be used in each subnet declaration to set
1503 the desired subnet mask, since any subnet-mask option statement will
1504 override the subnet mask declared in the subnet statement.
1505 .PP
1506 .B The
1507 .I subnet6
1508 .B statement
1509 .PP
1510 .nf
1511 \fBsubnet6\fR \fIsubnet6-number\fR \fB{\fR
1512 [ \fIparameters\fR ]
1513 [ \fIdeclarations\fR ]
1514 \fB}\fR
1515 .fi
1516 .PP
1517 The \fIsubnet6\fR statement is used to provide dhcpd with enough
1518 information to tell whether or not an IPv6 address is on that subnet6.
1519 It may also be used to provide subnet-specific parameters and to
1520 specify what addresses may be dynamically allocated to clients booting
1521 on that subnet.
1522 .PP
1523 The
1524 .I subnet6-number
1525 should be an IPv6 network identifier, specified as ip6-address/bits.
1526 .PP
1527 .B The
1528 .I range
1529 .B statement
1530 .PP
1531 .nf
1532 .B range\fR [ \fBdynamic-bootp\fR ] \fIlow-address\fR [ \fIhigh-address\fR]\fB;\fR
1533 .fi
1534 .PP
1535 For any subnet on which addresses will be assigned dynamically, there
1536 must be at least one \fIrange\fR statement. The range statement
1537 gives the lowest and highest IP addresses in a range. All IP
1538 addresses in the range should be in the subnet in which the
1539 \fIrange\fR statement is declared. The \fIdynamic-bootp\fR flag may
1540 be specified if addresses in the specified range may be dynamically
1541 assigned to BOOTP clients as well as DHCP clients. When specifying a
1542 single address, \fIhigh-address\fR can be omitted.
1543 .PP
1544 .B The
1545 .I range6
1546 .B statement
1547 .PP
1548 .nf
1549 .B range6\fR \fIlow-address\fR \fIhigh-address\fR\fB;\fR
1550 .B range6\fR \fIsubnet6-number\fR\fB;\fR
1551 .B range6\fR \fIsubnet6-number\fR \fBtemporary\fR\fB;\fR
1552 .B range6\fR \fIaddress\fR \fBtemporary\fR\fB;\fR
1553 .fi
1554 .PP
1555 For any IPv6 subnet6 on which addresses will be assigned dynamically, there
1556 must be at least one \fIrange6\fR statement. The \fIrange6\fR statement
1557 can either be the lowest and highest IPv6 addresses in a \fIrange6\fR, or
1558 use CIDR notation, specified as ip6-address/bits. All IP addresses
1559 in the \fIrange6\fR should be in the subnet6 in which the
1560 \fIrange6\fR statement is declared.
1561 .PP
1562 The \fItemporary\fR variant makes the prefix (by default on 64 bits) available
1563 for temporary (RFC 4941) addresses. A new address per prefix in the shared
1564 network is computed at each request with an IA_TA option. Release and Confirm
1565 ignores temporary addresses.
1566 .PP
1567 Any IPv6 addresses given to hosts with \fIfixed-address6\fR are excluded
1568 from the \fIrange6\fR, as are IPv6 addresses on the server itself.
1569 .PP
1570 .PP
1571 .B The
1572 .I prefix6
1573 .B statement
1574 .PP
1575 .nf
1576 .B prefix6\fR \fIlow-address\fR \fIhigh-address\fR \fB/\fR \fIbits\fR\fB;\fR
1577 .fi
1578 .PP
1579 The \fIprefix6\fR is the \fIrange6\fR equivalent for Prefix Delegation
1580 (RFC 3633). Prefixes of \fIbits\fR length are assigned between
1581 \fIlow-address\fR and \fIhigh-address\fR.
1582 .PP
1583 Any IPv6 prefixes given to static entries (hosts) with \fIfixed-prefix6\fR
1584 are excluded from the \fIprefix6\fR.
1585 .PP
1586 This statement is currently global but it should have a shared-network scope.
1587 .PP
1588 .B The
1589 .I host
1590 .B statement
1591 .PP
1592 .nf
1593 \fBhost\fR \fIhostname\fR {
1594 [ \fIparameters\fR ]
1595 [ \fIdeclarations\fR ]
1596 \fB}\fR
1597 .fi
1598 .PP
1599 The
1600 .B host
1601 declaration provides a scope in which to provide configuration information about
1602 a specific client, and also provides a way to assign a client a fixed address.
1603 The host declaration provides a way for the DHCP server to identify a DHCP or
1604 BOOTP client, and also a way to assign the client a static IP address.
1605 .PP
1606 If it is desirable to be able to boot a DHCP or BOOTP client on more than one
1607 subnet with fixed addresses, more than one address may be specified in the
1608 .I fixed-address
1609 declaration, or more than one
1610 .B host
1611 statement may be specified matching the same client.
1612 .PP
1613 If client-specific boot parameters must change based on the network
1614 to which the client is attached, then multiple
1615 .B host
1616 declarations should be used. The
1617 .B host
1618 declarations will only match a client if one of their
1619 .I fixed-address
1620 statements is viable on the subnet (or shared network) where the client is
1621 attached. Conversely, for a
1622 .B host
1623 declaration to match a client being allocated a dynamic address, it must not
1624 have any
1625 .I fixed-address
1626 statements. You may therefore need a mixture of
1627 .B host
1628 declarations for any given client...some having
1629 .I fixed-address
1630 statements, others without.
1631 .PP
1632 .I hostname
1633 should be a name identifying the host. If a \fIhostname\fR option is
1634 not specified for the host, \fIhostname\fR is used.
1635 .PP
1636 \fIHost\fR declarations are matched to actual DHCP or BOOTP clients
1637 by matching the \fRdhcp-client-identifier\fR option specified in the
1638 \fIhost\fR declaration to the one supplied by the client, or, if the
1639 \fIhost\fR declaration or the client does not provide a
1640 \fRdhcp-client-identifier\fR option, by matching the \fIhardware\fR
1641 parameter in the \fIhost\fR declaration to the network hardware
1642 address supplied by the client. BOOTP clients do not normally
1643 provide a \fIdhcp-client-identifier\fR, so the hardware address must
1644 be used for all clients that may boot using the BOOTP protocol.
1645 .PP
1646 DHCPv6 servers can use the \fIhost-identifier option\fR parameter in
1647 the \fIhost\fR declaration, and specify any option with a fixed value
1648 to identify hosts.
1649 .PP
1650 Please be aware that
1651 .B only
1652 the \fIdhcp-client-identifier\fR option and the hardware address can be
1653 used to match a host declaration, or the \fIhost-identifier option\fR
1654 parameter for DHCPv6 servers. For example, it is not possible to
1655 match a host declaration to a \fIhost-name\fR option. This is
1656 because the host-name option cannot be guaranteed to be unique for any
1657 given client, whereas both the hardware address and
1658 \fIdhcp-client-identifier\fR option are at least theoretically
1659 guaranteed to be unique to a given client.
1660 .PP
1661 .B The
1662 .I group
1663 .B statement
1664 .PP
1665 .nf
1666 \fBgroup\fR {
1667 [ \fIparameters\fR ]
1668 [ \fIdeclarations\fR ]
1669 \fB}\fR
1670 .fi
1671 .PP
1672 The group statement is used simply to apply one or more parameters to
1673 a group of declarations. It can be used to group hosts, shared
1674 networks, subnets, or even other groups.
1675 .SH REFERENCE: ALLOW AND DENY
1676 The
1677 .I allow
1678 and
1679 .I deny
1680 statements can be used to control the response of the DHCP server to
1681 various sorts of requests. The allow and deny keywords actually have
1682 different meanings depending on the context. In a pool context, these
1683 keywords can be used to set up access lists for address allocation
1684 pools. In other contexts, the keywords simply control general server
1685 behavior with respect to clients based on scope. In a non-pool
1686 context, the
1687 .I ignore
1688 keyword can be used in place of the
1689 .I deny
1690 keyword to prevent logging of denied requests.
1691 .PP
1692 .SH ALLOW DENY AND IGNORE IN SCOPE
1693 The following usages of allow and deny will work in any scope,
1694 although it is not recommended that they be used in pool
1695 declarations.
1696 .PP
1697 .B The
1698 .I unknown-clients
1699 .B keyword
1700 .PP
1701 \fBallow unknown-clients;\fR
1702 \fBdeny unknown-clients;\fR
1703 \fBignore unknown-clients;\fR
1704 .PP
1705 The \fBunknown-clients\fR flag is used to tell dhcpd whether
1706 or not to dynamically assign addresses to unknown clients. Dynamic
1707 address assignment to unknown clients is \fBallow\fRed by default.
1708 An unknown client is simply a client that has no host declaration.
1709 .PP
1710 The use of this option is now \fIdeprecated\fR. If you are trying to
1711 restrict access on your network to known clients, you should use \fBdeny
1712 unknown-clients;\fR inside of your address pool, as described under the
1713 heading ALLOW AND DENY WITHIN POOL DECLARATIONS.
1714 .PP
1715 .B The
1716 .I bootp
1717 .B keyword
1718 .PP
1719 \fBallow bootp;\fR
1720 \fBdeny bootp;\fR
1721 \fBignore bootp;\fR
1722 .PP
1723 The \fBbootp\fR flag is used to tell dhcpd whether
1724 or not to respond to bootp queries. Bootp queries are \fBallow\fRed
1725 by default.
1726 .PP
1727 This option does not satisfy the requirement of failover peers for denying
1728 dynamic bootp clients. The \fBdeny dynamic bootp clients;\fR option should
1729 be used instead. See the ALLOW AND DENY WITHIN POOL DECLARATIONS section
1730 of this man page for more details.
1731 .PP
1732 .B The
1733 .I booting
1734 .B keyword
1735 .PP
1736 \fBallow booting;\fR
1737 \fBdeny booting;\fR
1738 \fBignore booting;\fR
1739 .PP
1740 The \fBbooting\fR flag is used to tell dhcpd whether or not to respond
1741 to queries from a particular client. This keyword only has meaning
1742 when it appears in a host declaration. By default, booting is
1743 \fBallow\fRed, but if it is disabled for a particular client, then
1744 that client will not be able to get an address from the DHCP server.
1745 .PP
1746 .B The
1747 .I duplicates
1748 .B keyword
1749 .PP
1750 \fBallow duplicates;\fR
1751 \fBdeny duplicates;\fR
1752 .PP
1753 Host declarations can match client messages based on the DHCP Client
1754 Identifier option or based on the client's network hardware type and
1755 MAC address. If the MAC address is used, the host declaration will
1756 match any client with that MAC address - even clients with different
1757 client identifiers. This doesn't normally happen, but is possible
1758 when one computer has more than one operating system installed on it -
1759 for example, Microsoft Windows and NetBSD or Linux.
1760 .PP
1761 The \fBduplicates\fR flag tells the DHCP server that if a request is
1762 received from a client that matches the MAC address of a host
1763 declaration, any other leases matching that MAC address should be
1764 discarded by the server, even if the UID is not the same. This is a
1765 violation of the DHCP protocol, but can prevent clients whose client
1766 identifiers change regularly from holding many leases at the same time.
1767 By default, duplicates are \fBallow\fRed.
1768 .PP
1769 .B The
1770 .I declines
1771 .B keyword
1772 .PP
1773 \fBallow declines;\fR
1774 \fBdeny declines;\fR
1775 \fBignore declines;\fR
1776 .PP
1777 The DHCPDECLINE message is used by DHCP clients to indicate that the
1778 lease the server has offered is not valid. When the server receives
1779 a DHCPDECLINE for a particular address, it normally abandons that
1780 address, assuming that some unauthorized system is using it.
1781 Unfortunately, a malicious or buggy client can, using DHCPDECLINE
1782 messages, completely exhaust the DHCP server's allocation pool. The
1783 server will reclaim these leases, but while the client is running
1784 through the pool, it may cause serious thrashing in the DNS, and it
1785 will also cause the DHCP server to forget old DHCP client address
1786 allocations.
1787 .PP
1788 The \fBdeclines\fR flag tells the DHCP server whether or not to honor
1789 DHCPDECLINE messages. If it is set to \fBdeny\fR or \fBignore\fR in
1790 a particular scope, the DHCP server will not respond to DHCPDECLINE
1791 messages.
1792 .PP
1793 .B The
1794 .I client-updates
1795 .B keyword
1796 .PP
1797 \fBallow client-updates;\fR
1798 \fBdeny client-updates;\fR
1799 .PP
1800 The \fBclient-updates\fR flag tells the DHCP server whether or not to
1801 honor the client's intention to do its own update of its A record.
1802 This is only relevant when doing \fIinterim\fR DNS updates. See the
1803 documentation under the heading THE INTERIM DNS UPDATE SCHEME for
1804 details.
1805 .PP
1806 .B The
1807 .I leasequery
1808 .B keyword
1809 .PP
1810 \fBallow leasequery;\fR
1811 \fBdeny leasequery;\fR
1812 .PP
1813 The \fBleasequery\fR flag tells the DHCP server whether or not to
1814 answer DHCPLEASEQUERY packets. The answer to a DHCPLEASEQUERY packet
1815 includes information about a specific lease, such as when it was
1816 issued and when it will expire. By default, the server will not
1817 respond to these packets.
1818 .SH ALLOW AND DENY WITHIN POOL DECLARATIONS
1819 .PP
1820 The uses of the allow and deny keywords shown in the previous section
1821 work pretty much the same way whether the client is sending a
1822 DHCPDISCOVER or a DHCPREQUEST message - an address will be allocated
1823 to the client (either the old address it's requesting, or a new
1824 address) and then that address will be tested to see if it's okay to
1825 let the client have it. If the client requested it, and it's not
1826 okay, the server will send a DHCPNAK message. Otherwise, the server
1827 will simply not respond to the client. If it is okay to give the
1828 address to the client, the server will send a DHCPACK message.
1829 .PP
1830 The primary motivation behind pool declarations is to have address
1831 allocation pools whose allocation policies are different. A client
1832 may be denied access to one pool, but allowed access to another pool
1833 on the same network segment. In order for this to work, access
1834 control has to be done during address allocation, not after address
1835 allocation is done.
1836 .PP
1837 When a DHCPREQUEST message is processed, address allocation simply
1838 consists of looking up the address the client is requesting and seeing
1839 if it's still available for the client. If it is, then the DHCP
1840 server checks both the address pool permit lists and the relevant
1841 in-scope allow and deny statements to see if it's okay to give the
1842 lease to the client. In the case of a DHCPDISCOVER message, the
1843 allocation process is done as described previously in the ADDRESS
1844 ALLOCATION section.
1845 .PP
1846 When declaring permit lists for address allocation pools, the
1847 following syntaxes are recognized following the allow or deny keywords:
1848 .PP
1849 \fBknown-clients;\fR
1850 .PP
1851 If specified, this statement either allows or prevents allocation from
1852 this pool to any client that has a host declaration (i.e., is known).
1853 A client is known if it has a host declaration in \fIany\fR scope, not
1854 just the current scope.
1855 .PP
1856 \fBunknown-clients;\fR
1857 .PP
1858 If specified, this statement either allows or prevents allocation from
1859 this pool to any client that has no host declaration (i.e., is not
1860 known).
1861 .PP
1862 \fBmembers of "\fRclass\fB";\fR
1863 .PP
1864 If specified, this statement either allows or prevents allocation from
1865 this pool to any client that is a member of the named class.
1866 .PP
1867 \fBdynamic bootp clients;\fR
1868 .PP
1869 If specified, this statement either allows or prevents allocation from
1870 this pool to any bootp client.
1871 .PP
1872 \fBauthenticated clients;\fR
1873 .PP
1874 If specified, this statement either allows or prevents allocation from
1875 this pool to any client that has been authenticated using the DHCP
1876 authentication protocol. This is not yet supported.
1877 .PP
1878 \fBunauthenticated clients;\fR
1879 .PP
1880 If specified, this statement either allows or prevents allocation from
1881 this pool to any client that has not been authenticated using the DHCP
1882 authentication protocol. This is not yet supported.
1883 .PP
1884 \fBall clients;\fR
1885 .PP
1886 If specified, this statement either allows or prevents allocation from
1887 this pool to all clients. This can be used when you want to write a
1888 pool declaration for some reason, but hold it in reserve, or when you
1889 want to renumber your network quickly, and thus want the server to
1890 force all clients that have been allocated addresses from this pool to
1891 obtain new addresses immediately when they next renew.
1892 .PP
1893 \fBafter \fItime\fR\fB;\fR
1894 .PP
1895 If specified, this statement either allows or prevents allocation from
1896 this pool after a given date. This can be used when you want to move
1897 clients from one pool to another. The server adjusts the regular lease
1898 time so that the latest expiry time is at the given time+min-lease-time.
1899 A short min-lease-time enforces a step change, whereas a longer
1900 min-lease-time allows for a gradual change.
1901 \fItime\fR is either second since epoch, or a UTC time string e.g.
1902 4 2007/08/24 09:14:32 or a string with time zone offset in seconds
1903 e.g. 4 2007/08/24 11:14:32 -7200
1904 .SH REFERENCE: PARAMETERS
1905 The
1906 .I adaptive-lease-time-threshold
1907 statement
1908 .RS 0.25i
1909 .PP
1910 .B adaptive-lease-time-threshold \fIpercentage\fR\fB;\fR
1911 .PP
1912 When the number of allocated leases within a pool rises above
1913 the \fIpercentage\fR given in this statement, the DHCP server decreases
1914 the lease length for new clients within this pool to \fImin-lease-time\fR
1915 seconds. Clients renewing an already valid (long) leases get at least the
1916 remaining time from the current lease. Since the leases expire faster,
1917 the server may either recover more quickly or avoid pool exhaustion
1918 entirely. Once the number of allocated leases drop below the threshold,
1919 the server reverts back to normal lease times. Valid percentages are
1920 between 1 and 99.
1921 .RE
1922 .PP
1923 The
1924 .I always-broadcast
1925 statement
1926 .RS 0.25i
1927 .PP
1928 .B always-broadcast \fIflag\fR\fB;\fR
1929 .PP
1930 The DHCP and BOOTP protocols both require DHCP and BOOTP clients to
1931 set the broadcast bit in the flags field of the BOOTP message header.
1932 Unfortunately, some DHCP and BOOTP clients do not do this, and
1933 therefore may not receive responses from the DHCP server. The DHCP
1934 server can be made to always broadcast its responses to clients by
1935 setting this flag to 'on' for the relevant scope; relevant scopes would be
1936 inside a conditional statement, as a parameter for a class, or as a parameter
1937 for a host declaration. To avoid creating excess broadcast traffic on your
1938 network, we recommend that you restrict the use of this option to as few
1939 clients as possible. For example, the Microsoft DHCP client is known not
1940 to have this problem, as are the OpenTransport and ISC DHCP clients.
1941 .RE
1942 .PP
1943 The
1944 .I always-reply-rfc1048
1945 statement
1946 .RS 0.25i
1947 .PP
1948 .B always-reply-rfc1048 \fIflag\fR\fB;\fR
1949 .PP
1950 Some BOOTP clients expect RFC1048-style responses, but do not follow
1951 RFC1048 when sending their requests. You can tell that a client is
1952 having this problem if it is not getting the options you have
1953 configured for it and if you see in the server log the message
1954 "(non-rfc1048)" printed with each BOOTREQUEST that is logged.
1955 .PP
1956 If you want to send rfc1048 options to such a client, you can set the
1957 .B always-reply-rfc1048
1958 option in that client's host declaration, and the DHCP server will
1959 respond with an RFC-1048-style vendor options field. This flag can
1960 be set in any scope, and will affect all clients covered by that
1961 scope.
1962 .RE
1963 .PP
1964 The
1965 .I authoritative
1966 statement
1967 .RS 0.25i
1968 .PP
1969 .B authoritative;
1970 .PP
1971 .B not authoritative;
1972 .PP
1973 The DHCP server will normally assume that the configuration
1974 information about a given network segment is not known to be correct
1975 and is not authoritative. This is so that if a naive user installs a
1976 DHCP server not fully understanding how to configure it, it does not
1977 send spurious DHCPNAK messages to clients that have obtained addresses
1978 from a legitimate DHCP server on the network.
1979 .PP
1980 Network administrators setting up authoritative DHCP servers for their
1981 networks should always write \fBauthoritative;\fR at the top of their
1982 configuration file to indicate that the DHCP server \fIshould\fR send
1983 DHCPNAK messages to misconfigured clients. If this is not done,
1984 clients will be unable to get a correct IP address after changing
1985 subnets until their old lease has expired, which could take quite a
1986 long time.
1987 .PP
1988 Usually, writing \fBauthoritative;\fR at the top level of the file
1989 should be sufficient. However, if a DHCP server is to be set up so
1990 that it is aware of some networks for which it is authoritative and
1991 some networks for which it is not, it may be more appropriate to
1992 declare authority on a per-network-segment basis.
1993 .PP
1994 Note that the most specific scope for which the concept of authority
1995 makes any sense is the physical network segment - either a
1996 shared-network statement or a subnet statement that is not contained
1997 within a shared-network statement. It is not meaningful to specify
1998 that the server is authoritative for some subnets within a shared
1999 network, but not authoritative for others, nor is it meaningful to
2000 specify that the server is authoritative for some host declarations
2001 and not others.
2002 .RE
2003 .PP
2004 The \fIboot-unknown-clients\fR statement
2005 .RS 0.25i
2006 .PP
2007 .B boot-unknown-clients \fIflag\fB;\fR
2008 .PP
2009 If the \fIboot-unknown-clients\fR statement is present and has a value
2010 of \fIfalse\fR or \fIoff\fR, then clients for which there is no
2011 .I host
2012 declaration will not be allowed to obtain IP addresses. If this
2013 statement is not present or has a value of \fItrue\fR or \fIon\fR,
2014 then clients without host declarations will be allowed to obtain IP
2015 addresses, as long as those addresses are not restricted by
2016 .I allow
2017 and \fIdeny\fR statements within their \fIpool\fR declarations.
2018 .RE
2019 .PP
2020 The \fIdb-time-format\fR statement
2021 .RS 0.25i
2022 .PP
2023 .B db-time-format \fR[ \fIdefault\fR | \fIlocal\fR ] \fB;\fR
2024 .PP
2025 The DHCP server software outputs several timestamps when writing leases to
2026 persistent storage. This configuration parameter selects one of two output
2027 formats. The \fIdefault\fR format prints the day, date, and time in UTC,
2028 while the \fIlocal\fR format prints the system seconds-since-epoch, and
2029 helpfully provides the day and time in the system timezone in a comment.
2030 The time formats are described in detail in the dhcpd.leases(5) manpage.
2031 .RE
2032 .PP
2033 The \fIddns-hostname\fR statement
2034 .RS 0.25i
2035 .PP
2036 .B ddns-hostname \fIname\fB;\fR
2037 .PP
2038 The \fIname\fR parameter should be the hostname that will be used in
2039 setting up the client's A and PTR records. If no ddns-hostname is
2040 specified in scope, then the server will derive the hostname
2041 automatically, using an algorithm that varies for each of the
2042 different update methods.
2043 .RE
2044 .PP
2045 The \fIddns-domainname\fR statement
2046 .RS 0.25i
2047 .PP
2048 .B ddns-domainname \fIname\fB;\fR
2049 .PP
2050 The \fIname\fR parameter should be the domain name that will be
2051 appended to the client's hostname to form a fully-qualified
2052 domain-name (FQDN).
2053 .RE
2054 .PP
2055 The \fIddns-rev-domainname\fR statement
2056 .RS 0.25i
2057 .PP
2058 .B ddns-rev-domainname \fIname\fB;\fR
2059 The \fIname\fR parameter should be the domain name that will be
2060 appended to the client's reversed IP address to produce a name for use
2061 in the client's PTR record. By default, this is "in-addr.arpa.", but
2062 the default can be overridden here.
2063 .PP
2064 The reversed IP address to which this domain name is appended is
2065 always the IP address of the client, in dotted quad notation, reversed
2066 - for example, if the IP address assigned to the client is
2067 10.17.92.74, then the reversed IP address is 74.92.17.10. So a
2068 client with that IP address would, by default, be given a PTR record
2069 of 10.17.92.74.in-addr.arpa.
2070 .RE
2071 .PP
2072 The \fIddns-update-style\fR parameter
2073 .RS 0.25i
2074 .PP
2075 .B ddns-update-style \fIstyle\fB;\fR
2076 .PP
2077 The
2078 .I style
2079 parameter must be one of \fBad-hoc\fR, \fBinterim\fR or \fBnone\fR.
2080 The \fIddns-update-style\fR statement is only meaningful in the outer
2081 scope - it is evaluated once after reading the dhcpd.conf file, rather
2082 than each time a client is assigned an IP address, so there is no way
2083 to use different DNS update styles for different clients. The default
2084 is \fBnone\fR.
2085 .RE
2086 .PP
2087 .B The
2088 .I ddns-updates
2089 .B statement
2090 .RS 0.25i
2091 .PP
2092 \fBddns-updates \fIflag\fR\fB;\fR
2093 .PP
2094 The \fIddns-updates\fR parameter controls whether or not the server will
2095 attempt to do a DNS update when a lease is confirmed. Set this to \fIoff\fR
2096 if the server should not attempt to do updates within a certain scope.
2097 The \fIddns-updates\fR parameter is on by default. To disable DNS
2098 updates in all scopes, it is preferable to use the
2099 \fIddns-update-style\fR statement, setting the style to \fInone\fR.
2100 .RE
2101 .PP
2102 The
2103 .I default-lease-time
2104 statement
2105 .RS 0.25i
2106 .PP
2107 .B default-lease-time \fItime\fR\fB;\fR
2108 .PP
2109 .I Time
2110 should be the length in seconds that will be assigned to a lease if
2111 the client requesting the lease does not ask for a specific expiration
2112 time. This is used for both DHCPv4 and DHCPv6 leases (it is also known
2113 as the "valid lifetime" in DHCPv6).
2114 .RE
2115 .PP
2116 The
2117 .I delayed-ack
2118 and
2119 .I max-ack-delay
2120 statements
2121 .RS 0.25i
2122 .PP
2123 .B delayed-ack \fIcount\fR\fB;\fR
2124 .B max-ack-delay \fImicroseconds\fR\fB;\fR
2125 .PP
2126 .I Count
2127 should be an integer value from zero to 2^16-1, and defaults to 28. The
2128 count represents how many DHCPv4 replies maximum will be queued pending
2129 transmission until after a database commit event. If this number is
2130 reached, a database commit event (commonly resulting in fsync() and
2131 representing a performance penalty) will be made, and the reply packets
2132 will be transmitted in a batch afterwards. This preserves the RFC2131
2133 direction that "stable storage" be updated prior to replying to clients.
2134 Should the DHCPv4 sockets "go dry" (select() returns immediately with no
2135 read sockets), the commit is made and any queued packets are transmitted.
2136 .PP
2137 Similarly, \fImicroseconds\fR indicates how many microseconds are permitted
2138 to pass inbetween queuing a packet pending an fsync, and performing the
2139 fsync. Valid values range from 0 to 2^32-1, and defaults to 250,000 (1/4 of
2140 a second).
2141 .PP
2142 Please note that as delayed-ack is currently experimental, the delayed-ack
2143 feature is not compiled in by default, but must be enabled at compile time
2144 with './configure --enable-delayed-ack'.
2145 .RE
2146 .PP
2147 The
2148 .I do-forward-updates
2149 statement
2150 .RS 0.25i
2151 .PP
2152 .B do-forward-updates \fIflag\fB;\fR
2153 .PP
2154 The \fIdo-forward-updates\fR statement instructs the DHCP server as
2155 to whether it should attempt to update a DHCP client's A record
2156 when the client acquires or renews a lease. This statement has no
2157 effect unless DNS updates are enabled and \fBddns-update-style\fR is
2158 set to \fBinterim\fR. Forward updates are enabled by default. If
2159 this statement is used to disable forward updates, the DHCP server
2160 will never attempt to update the client's A record, and will only ever
2161 attempt to update the client's PTR record if the client supplies an
2162 FQDN that should be placed in the PTR record using the fqdn option.
2163 If forward updates are enabled, the DHCP server will still honor the
2164 setting of the \fBclient-updates\fR flag.
2165 .RE
2166 .PP
2167 The
2168 .I dynamic-bootp-lease-cutoff
2169 statement
2170 .RS 0.25i
2171 .PP
2172 .B dynamic-bootp-lease-cutoff \fIdate\fB;\fR
2173 .PP
2174 The \fIdynamic-bootp-lease-cutoff\fR statement sets the ending time
2175 for all leases assigned dynamically to BOOTP clients. Because BOOTP
2176 clients do not have any way of renewing leases, and don't know that
2177 their leases could expire, by default dhcpd assigns infinite leases
2178 to all BOOTP clients. However, it may make sense in some situations
2179 to set a cutoff date for all BOOTP leases - for example, the end of a
2180 school term, or the time at night when a facility is closed and all
2181 machines are required to be powered off.
2182 .PP
2183 .I Date
2184 should be the date on which all assigned BOOTP leases will end. The
2185 date is specified in the form:
2186 .PP
2187 .ce 1
2188 W YYYY/MM/DD HH:MM:SS
2189 .PP
2190 W is the day of the week expressed as a number
2191 from zero (Sunday) to six (Saturday). YYYY is the year, including the
2192 century. MM is the month expressed as a number from 1 to 12. DD is
2193 the day of the month, counting from 1. HH is the hour, from zero to
2194 23. MM is the minute and SS is the second. The time is always in
2195 Coordinated Universal Time (UTC), not local time.
2196 .RE
2197 .PP
2198 The
2199 .I dynamic-bootp-lease-length
2200 statement
2201 .RS 0.25i
2202 .PP
2203 .B dynamic-bootp-lease-length\fR \fIlength\fR\fB;\fR
2204 .PP
2205 The \fIdynamic-bootp-lease-length\fR statement is used to set the
2206 length of leases dynamically assigned to BOOTP clients. At some
2207 sites, it may be possible to assume that a lease is no longer in
2208 use if its holder has not used BOOTP or DHCP to get its address within
2209 a certain time period. The period is specified in \fIlength\fR as a
2210 number of seconds. If a client reboots using BOOTP during the
2211 timeout period, the lease duration is reset to \fIlength\fR, so a
2212 BOOTP client that boots frequently enough will never lose its lease.
2213 Needless to say, this parameter should be adjusted with extreme
2214 caution.
2215 .RE
2216 .PP
2217 The
2218 .I filename
2219 statement
2220 .RS 0.25i
2221 .PP
2222 .B filename\fR \fB"\fR\fIfilename\fR\fB";\fR
2223 .PP
2224 The \fIfilename\fR statement can be used to specify the name of the
2225 initial boot file which is to be loaded by a client. The
2226 .I filename
2227 should be a filename recognizable to whatever file transfer protocol
2228 the client can be expected to use to load the file.
2229 .RE
2230 .PP
2231 The
2232 .I fixed-address
2233 declaration
2234 .RS 0.25i
2235 .PP
2236 .B fixed-address address\fR [\fB,\fR \fIaddress\fR ... ]\fB;\fR
2237 .PP
2238 The \fIfixed-address\fR declaration is used to assign one or more fixed
2239 IP addresses to a client. It should only appear in a \fIhost\fR
2240 declaration. If more than one address is supplied, then when the
2241 client boots, it will be assigned the address that corresponds to the
2242 network on which it is booting. If none of the addresses in the
2243 \fIfixed-address\fR statement are valid for the network to which the client
2244 is connected, that client will not match the \fIhost\fR declaration
2245 containing that \fIfixed-address\fR declaration. Each \fIaddress\fR
2246 in the \fIfixed-address\fR declaration should be either an IP address or
2247 a domain name that resolves to one or more IP addresses.
2248 .RE
2249 .PP
2250 The
2251 .I fixed-address6
2252 declaration
2253 .RS 0.25i
2254 .PP
2255 .B fixed-address6 ip6-address\fR ;\fR
2256 .PP
2257 The \fIfixed-address6\fR declaration is used to assign a fixed
2258 IPv6 addresses to a client. It should only appear in a \fIhost\fR
2259 declaration.
2260 .RE
2261 .PP
2262 The
2263 .I get-lease-hostnames
2264 statement
2265 .RS 0.25i
2266 .PP
2267 .B get-lease-hostnames\fR \fIflag\fR\fB;\fR
2268 .PP
2269 The \fIget-lease-hostnames\fR statement is used to tell dhcpd whether
2270 or not to look up the domain name corresponding to the IP address of
2271 each address in the lease pool and use that address for the DHCP
2272 \fIhostname\fR option. If \fIflag\fR is true, then this lookup is
2273 done for all addresses in the current scope. By default, or if
2274 \fIflag\fR is false, no lookups are done.
2275 .RE
2276 .PP
2277 The
2278 .I hardware
2279 statement
2280 .RS 0.25i
2281 .PP
2282 .B hardware \fIhardware-type hardware-address\fB;\fR
2283 .PP
2284 In order for a BOOTP client to be recognized, its network hardware
2285 address must be declared using a \fIhardware\fR clause in the
2286 .I host
2287 statement.
2288 .I hardware-type
2289 must be the name of a physical hardware interface type. Currently,
2290 only the
2291 .B ethernet
2292 and
2293 .B token-ring
2294 types are recognized, although support for a
2295 .B fddi
2296 hardware type (and others) would also be desirable.
2297 The
2298 .I hardware-address
2299 should be a set of hexadecimal octets (numbers from 0 through ff)
2300 separated by colons. The \fIhardware\fR statement may also be used
2301 for DHCP clients.
2302 .RE
2303 .PP
2304 The
2305 .I host-identifier option
2306 statement
2307 .RS 0.25i
2308 .PP
2309 .B host-identifier option \fIoption-name option-data\fB;\fR
2310 .PP
2311 This identifies a DHCPv6 client in a
2312 .I host
2313 statement.
2314 .I option-name
2315 is any option, and
2316 .I option-data
2317 is the value for the option that the client will send. The
2318 .I option-data
2319 must be a constant value.
2320 .RE
2321 .PP
2322 The
2323 .I infinite-is-reserved
2324 statement
2325 .RS 0.25i
2326 .PP
2327 .B infinite-is-reserved \fIflag\fB;\fR
2328 .PP
2329 ISC DHCP now supports 'reserved' leases. See the section on RESERVED LEASES
2330 below. If this \fIflag\fR is on, the server will automatically reserve leases
2331 allocated to clients which requested an infinite (0xffffffff) lease-time.
2332 .PP
2333 The default is off.
2334 .RE
2335 .PP
2336 The
2337 .I lease-file-name
2338 statement
2339 .RS 0.25i
2340 .PP
2341 .B lease-file-name \fIname\fB;\fR
2342 .PP
2343 .I Name
2344 should be the name of the DHCP server's lease file. By default, this
2345 is DBDIR/dhcpd.leases. This statement \fBmust\fR appear in the outer
2346 scope of the configuration file - if it appears in some other scope,
2347 it will have no effect. Furthermore, it has no effect if overridden
2348 by the
2349 .B -lf
2350 flag or the
2351 .B PATH_DHCPD_DB
2352 environment variable.
2353 .RE
2354 .PP
2355 The
2356 .I limit-addrs-per-ia
2357 statement
2358 .RS 0.25i
2359 .PP
2360 .B limit-addrs-per-ia \fInumber\fB;\fR
2361 .PP
2362 By default, the DHCPv6 server will limit clients to one IAADDR per IA
2363 option, meaning one address. If you wish to permit clients to hang onto
2364 multiple addresses at a time, configure a larger \fInumber\fR here.
2365 .PP
2366 Note that there is no present method to configure the server to forcibly
2367 configure the client with one IP address per each subnet on a shared network.
2368 This is left to future work.
2369 .RE
2370 .PP
2371 The
2372 .I dhcpv6-lease-file-name
2373 statement
2374 .RS 0.25i
2375 .PP
2376 .B dhcpv6-lease-file-name \fIname\fB;\fR
2377 .PP
2378 .I Name
2379 is the name of the lease file to use if and only if the server is running
2380 in DHCPv6 mode. By default, this is DBDIR/dhcpd6.leases. This statement,
2381 like
2382 .I lease-file-name,
2383 \fBmust\fR appear in the outer scope of the configuration file. It
2384 has no effect if overridden by the
2385 .B -lf
2386 flag or the
2387 .B PATH_DHCPD6_DB
2388 environment variable. If
2389 .I dhcpv6-lease-file-name
2390 is not specified, but
2391 .I lease-file-name
2392 is, the latter value will be used.
2393 .RE
2394 .PP
2395 The
2396 .I local-port
2397 statement
2398 .RS 0.25i
2399 .PP
2400 .B local-port \fIport\fB;\fR
2401 .PP
2402 This statement causes the DHCP server to listen for DHCP requests on
2403 the UDP port specified in \fIport\fR, rather than on port 67.
2404 .RE
2405 .PP
2406 The
2407 .I local-address
2408 statement
2409 .RS 0.25i
2410 .PP
2411 .B local-address \fIaddress\fB;\fR
2412 .PP
2413 This statement causes the DHCP server to listen for DHCP requests sent
2414 to the specified \fIaddress\fR, rather than requests sent to all addresses.
2415 Since serving directly attached DHCP clients implies that the server must
2416 respond to requests sent to the all-ones IP address, this option cannot be
2417 used if clients are on directly attached networks...it is only realistically
2418 useful for a server whose only clients are reached via unicasts, such as via
2419 DHCP relay agents.
2420 .PP
2421 Note: This statement is only effective if the server was compiled using
2422 the USE_SOCKETS #define statement, which is default on a small number of
2423 operating systems, and must be explicitly chosen at compile-time for all
2424 others. You can be sure if your server is compiled with USE_SOCKETS if
2425 you see lines of this format at startup:
2426 .PP
2427 Listening on Socket/eth0
2428 .PP
2429 Note also that since this bind()s all DHCP sockets to the specified
2430 address, that only one address may be supported in a daemon at a given
2431 time.
2432 .RE
2433 .PP
2434 The
2435 .I log-facility
2436 statement
2437 .RS 0.25i
2438 .PP
2439 .B log-facility \fIfacility\fB;\fR
2440 .PP
2441 This statement causes the DHCP server to do all of its logging on the
2442 specified log facility once the dhcpd.conf file has been read. By
2443 default the DHCP server logs to the daemon facility. Possible log
2444 facilities include auth, authpriv, cron, daemon, ftp, kern, lpr, mail,
2445 mark, news, ntp, security, syslog, user, uucp, and local0 through
2446 local7. Not all of these facilities are available on all systems,
2447 and there may be other facilities available on other systems.
2448 .PP
2449 In addition to setting this value, you may need to modify your
2450 .I syslog.conf
2451 file to configure logging of the DHCP server. For example, you might
2452 add a line like this:
2453 .PP
2454 .nf
2455 local7.debug /var/log/dhcpd.log
2456 .fi
2457 .PP
2458 The syntax of the \fIsyslog.conf\fR file may be different on some
2459 operating systems - consult the \fIsyslog.conf\fR manual page to be
2460 sure. To get syslog to start logging to the new file, you must first
2461 create the file with correct ownership and permissions (usually, the
2462 same owner and permissions of your /var/log/messages or
2463 /usr/adm/messages file should be fine) and send a SIGHUP to syslogd.
2464 Some systems support log rollover using a shell script or program
2465 called newsyslog or logrotate, and you may be able to configure this
2466 as well so that your log file doesn't grow uncontrollably.
2467 .PP
2468 Because the \fIlog-facility\fR setting is controlled by the dhcpd.conf
2469 file, log messages printed while parsing the dhcpd.conf file or before
2470 parsing it are logged to the default log facility. To prevent this,
2471 see the README file included with this distribution, which describes
2472 how to change the default log facility. When this parameter is used,
2473 the DHCP server prints its startup message a second time after parsing
2474 the configuration file, so that the log will be as complete as
2475 possible.
2476 .RE
2477 .PP
2478 The
2479 .I max-lease-time
2480 statement
2481 .RS 0.25i
2482 .PP
2483 .B max-lease-time \fItime\fR\fB;\fR
2484 .PP
2485 .I Time
2486 should be the maximum length in seconds that will be assigned to a
2487 lease. The only exception to this is that Dynamic BOOTP lease
2488 lengths, which are not specified by the client, are not limited by
2489 this maximum.
2490 .RE
2491 .PP
2492 The
2493 .I min-lease-time
2494 statement
2495 .RS 0.25i
2496 .PP
2497 .B min-lease-time \fItime\fR\fB;\fR
2498 .PP
2499 .I Time
2500 should be the minimum length in seconds that will be assigned to a
2501 lease.
2502 .RE
2503 .PP
2504 The
2505 .I min-secs
2506 statement
2507 .RS 0.25i
2508 .PP
2509 .B min-secs \fIseconds\fR\fB;\fR
2510 .PP
2511 .I Seconds
2512 should be the minimum number of seconds since a client began trying to
2513 acquire a new lease before the DHCP server will respond to its request.
2514 The number of seconds is based on what the client reports, and the maximum
2515 value that the client can report is 255 seconds. Generally, setting this
2516 to one will result in the DHCP server not responding to the client's first
2517 request, but always responding to its second request.
2518 .PP
2519 This can be used
2520 to set up a secondary DHCP server which never offers an address to a client
2521 until the primary server has been given a chance to do so. If the primary
2522 server is down, the client will bind to the secondary server, but otherwise
2523 clients should always bind to the primary. Note that this does not, by
2524 itself, permit a primary server and a secondary server to share a pool of
2525 dynamically-allocatable addresses.
2526 .RE
2527 .PP
2528 The
2529 .I next-server
2530 statement
2531 .RS 0.25i
2532 .PP
2533 .B next-server\fR \fIserver-name\fR\fB;\fR
2534 .PP
2535 The \fInext-server\fR statement is used to specify the host address of
2536 the server from which the initial boot file (specified in the
2537 \fIfilename\fR statement) is to be loaded. \fIServer-name\fR should
2538 be a numeric IP address or a domain name.
2539 .RE
2540 .PP
2541 The
2542 .I omapi-port
2543 statement
2544 .RS 0.25i
2545 .PP
2546 .B omapi-port\fR \fIport\fR\fB;\fR
2547 .PP
2548 The \fIomapi-port\fR statement causes the DHCP server to listen for
2549 OMAPI connections on the specified port. This statement is required
2550 to enable the OMAPI protocol, which is used to examine and modify the
2551 state of the DHCP server as it is running.
2552 .RE
2553 .PP
2554 The
2555 .I one-lease-per-client
2556 statement
2557 .RS 0.25i
2558 .PP
2559 .B one-lease-per-client \fIflag\fR\fB;\fR
2560 .PP
2561 If this flag is enabled, whenever a client sends a DHCPREQUEST for a
2562 particular lease, the server will automatically free any other leases
2563 the client holds. This presumes that when the client sends a
2564 DHCPREQUEST, it has forgotten any lease not mentioned in the
2565 DHCPREQUEST - i.e., the client has only a single network interface
2566 .I and
2567 it does not remember leases it's holding on networks to which it is
2568 not currently attached. Neither of these assumptions are guaranteed
2569 or provable, so we urge caution in the use of this statement.
2570 .RE
2571 .PP
2572 The
2573 .I pid-file-name
2574 statement
2575 .RS 0.25i
2576 .PP
2577 .B pid-file-name
2578 .I name\fR\fB;\fR
2579 .PP
2580 .I Name
2581 should be the name of the DHCP server's process ID file. This is the
2582 file in which the DHCP server's process ID is stored when the server
2583 starts. By default, this is RUNDIR/dhcpd.pid. Like the
2584 .I lease-file-name
2585 statement, this statement must appear in the outer scope
2586 of the configuration file. It has no effect if overridden by the
2587 .B -pf
2588 flag or the
2589 .B PATH_DHCPD_PID
2590 environment variable.
2591 .PP
2592 The
2593 .I dhcpv6-pid-file-name
2594 statement
2595 .RS 0.25i
2596 .PP
2597 .B dhcpv6-pid-file-name \fIname\fB;\fR
2598 .PP
2599 .I Name
2600 is the name of the pid file to use if and only if the server is running
2601 in DHCPv6 mode. By default, this is DBDIR/dhcpd6.pid. This statement,
2602 like
2603 .I pid-file-name,
2604 \fBmust\fR appear in the outer scope of the configuration file. It
2605 has no effect if overridden by the
2606 .B -pf
2607 flag or the
2608 .B PATH_DHCPD6_PID
2609 environment variable. If
2610 .I dhcpv6-pid-file-name
2611 is not specified, but
2612 .I pid-file-name
2613 is, the latter value will be used.
2614 .RE
2615 .PP
2616 The
2617 .I ping-check
2618 statement
2619 .RS 0.25i
2620 .PP
2621 .B ping-check
2622 .I flag\fR\fB;\fR
2623 .PP
2624 When the DHCP server is considering dynamically allocating an IP
2625 address to a client, it first sends an ICMP Echo request (a \fIping\fR)
2626 to the address being assigned. It waits for a second, and if no
2627 ICMP Echo response has been heard, it assigns the address. If a
2628 response \fIis\fR heard, the lease is abandoned, and the server does
2629 not respond to the client.
2630 .PP
2631 This \fIping check\fR introduces a default one-second delay in responding
2632 to DHCPDISCOVER messages, which can be a problem for some clients. The
2633 default delay of one second may be configured using the ping-timeout
2634 parameter. The ping-check configuration parameter can be used to control
2635 checking - if its value is false, no ping check is done.
2636 .RE
2637 .PP
2638 The
2639 .I ping-timeout
2640 statement
2641 .RS 0.25i
2642 .PP
2643 .B ping-timeout
2644 .I seconds\fR\fB;\fR
2645 .PP
2646 If the DHCP server determined it should send an ICMP echo request (a
2647 \fIping\fR) because the ping-check statement is true, ping-timeout allows
2648 you to configure how many seconds the DHCP server should wait for an
2649 ICMP Echo response to be heard, if no ICMP Echo response has been received
2650 before the timeout expires, it assigns the address. If a response \fIis\fR
2651 heard, the lease is abandoned, and the server does not respond to the client.
2652 If no value is set, ping-timeout defaults to 1 second.
2653 .RE
2654 .PP
2655 The
2656 .I preferred-lifetime
2657 statement
2658 .RS 0.25i
2659 .PP
2660 .B preferred-lifetime
2661 .I seconds\fR\fB;\fR
2662 .PP
2663 IPv6 addresses have 'valid' and 'preferred' lifetimes. The valid lifetime
2664 determines at what point at lease might be said to have expired, and is no
2665 longer useable. A preferred lifetime is an advisory condition to help
2666 applications move off of the address and onto currently valid addresses
2667 (should there still be any open TCP sockets or similar).
2668 .PP
2669 The preferred lifetime defaults to the renew+rebind timers, or 3/4 the
2670 default lease time if none were specified.
2671 .RE
2672 .PP
2673 The
2674 .I remote-port
2675 statement
2676 .RS 0.25i
2677 .PP
2678 .B remote-port \fIport\fB;\fR
2679 .PP
2680 This statement causes the DHCP server to transmit DHCP responses to DHCP
2681 clients upon the UDP port specified in \fIport\fR, rather than on port 68.
2682 In the event that the UDP response is transmitted to a DHCP Relay, the
2683 server generally uses the \fBlocal-port\fR configuration value. Should the
2684 DHCP Relay happen to be addressed as 127.0.0.1, however, the DHCP Server
2685 transmits its response to the \fBremote-port\fR configuration value. This
2686 is generally only useful for testing purposes, and this configuration value
2687 should generally not be used.
2688 .RE
2689 .PP
2690 The
2691 .I server-identifier
2692 statement
2693 .RS 0.25i
2694 .PP
2695 .B server-identifier \fIhostname\fR\fB;\fR
2696 .PP
2697 The server-identifier statement can be used to define the value that
2698 is sent in the DHCP Server Identifier option for a given scope. The
2699 value specified \fBmust\fR be an IP address for the DHCP server, and
2700 must be reachable by all clients served by a particular scope.
2701 .PP
2702 The use of the server-identifier statement is not recommended - the only
2703 reason to use it is to force a value other than the default value to be
2704 sent on occasions where the default value would be incorrect. The default
2705 value is the first IP address associated with the physical network interface
2706 on which the request arrived.
2707 .PP
2708 The usual case where the
2709 \fIserver-identifier\fR statement needs to be sent is when a physical
2710 interface has more than one IP address, and the one being sent by default
2711 isn't appropriate for some or all clients served by that interface.
2712 Another common case is when an alias is defined for the purpose of
2713 having a consistent IP address for the DHCP server, and it is desired
2714 that the clients use this IP address when contacting the server.
2715 .PP
2716 Supplying a value for the dhcp-server-identifier option is equivalent
2717 to using the server-identifier statement.
2718 .RE
2719 .PP
2720 The
2721 .I server-duid
2722 statement
2723 .RS 0.25i
2724 .PP
2725 .B server-duid \fILLT\fR [ \fIhardware-type\fR \fItimestamp\fR \fIhardware-address\fR ] \fB;\fR
2726
2727 .B server-duid \fIEN\fR \fIenterprise-number\fR \fIenterprise-identifier\fR \fB;\fR
2728
2729 .B server-duid \fILL\fR [ \fIhardware-type\fR \fIhardware-address\fR ] \fB;\fR
2730 .PP
2731 The server-duid statement configures the server DUID. You may pick either
2732 LLT (link local address plus time), EN (enterprise), or LL (link local).
2733 .PP
2734 If you choose LLT or LL, you may specify the exact contents of the DUID.
2735 Otherwise the server will generate a DUID of the specified type.
2736 .PP
2737 If you choose EN, you must include the enterprise number and the
2738 enterprise-identifier.
2739 .PP
2740 The default server-duid type is LLT.
2741 .RE
2742 .PP
2743 The
2744 .I server-name
2745 statement
2746 .RS 0.25i
2747 .PP
2748 .B server-name "\fIname\fB";\fR
2749 .PP
2750 The \fIserver-name\fR statement can be used to inform the client of
2751 the name of the server from which it is booting. \fIName\fR should
2752 be the name that will be provided to the client.
2753 .RE
2754 .PP
2755 The
2756 .I site-option-space
2757 statement
2758 .RS 0.25i
2759 .PP
2760 .B site-option-space "\fIname\fB";\fR
2761 .PP
2762 The \fIsite-option-space\fR statement can be used to determine from
2763 what option space site-local options will be taken. This can be used
2764 in much the same way as the \fIvendor-option-space\fR statement.
2765 Site-local options in DHCP are those options whose numeric codes are
2766 greater than 224. These options are intended for site-specific
2767 uses, but are frequently used by vendors of embedded hardware that
2768 contains DHCP clients. Because site-specific options are allocated
2769 on an ad hoc basis, it is quite possible that one vendor's DHCP client
2770 might use the same option code that another vendor's client uses, for
2771 different purposes. The \fIsite-option-space\fR option can be used
2772 to assign a different set of site-specific options for each such
2773 vendor, using conditional evaluation (see \fBdhcp-eval (5)\fR for
2774 details).
2775 .RE
2776 .PP
2777 The
2778 .I stash-agent-options
2779 statement
2780 .RS 0.25i
2781 .PP
2782 .B stash-agent-options \fIflag\fB;\fR
2783 .PP
2784 If the \fIstash-agent-options\fR parameter is true for a given client,
2785 the server will record the relay agent information options sent during
2786 the client's initial DHCPREQUEST message when the client was in the
2787 SELECTING state and behave as if those options are included in all
2788 subsequent DHCPREQUEST messages sent in the RENEWING state. This
2789 works around a problem with relay agent information options, which is
2790 that they usually not appear in DHCPREQUEST messages sent by the
2791 client in the RENEWING state, because such messages are unicast
2792 directly to the server and not sent through a relay agent.
2793 .RE
2794 .PP
2795 The
2796 .I update-conflict-detection
2797 statement
2798 .RS 0.25i
2799 .PP
2800 .B update-conflict-detection \fIflag\fB;\fR
2801 .PP
2802 If the \fIupdate-conflict-detection\fR parameter is true, the server will
2803 perform standard DHCID multiple-client, one-name conflict detection. If
2804 the parameter has been set false, the server will skip this check and
2805 instead simply tear down any previous bindings to install the new
2806 binding without question. The default is true.
2807 .RE
2808 .PP
2809 The
2810 .I update-optimization
2811 statement
2812 .RS 0.25i
2813 .PP
2814 .B update-optimization \fIflag\fB;\fR
2815 .PP
2816 If the \fIupdate-optimization\fR parameter is false for a given client,
2817 the server will attempt a DNS update for that client each time the
2818 client renews its lease, rather than only attempting an update when it
2819 appears to be necessary. This will allow the DNS to heal from
2820 database inconsistencies more easily, but the cost is that the DHCP
2821 server must do many more DNS updates. We recommend leaving this option
2822 enabled, which is the default. This option only affects the behavior of
2823 the interim DNS update scheme, and has no effect on the ad-hoc DNS update
2824 scheme. If this parameter is not specified, or is true, the DHCP server
2825 will only update when the client information changes, the client gets a
2826 different lease, or the client's lease expires.
2827 .RE
2828 .PP
2829 The
2830 .I update-static-leases
2831 statement
2832 .RS 0.25i
2833 .PP
2834 .B update-static-leases \fIflag\fB;\fR
2835 .PP
2836 The \fIupdate-static-leases\fR flag, if enabled, causes the DHCP
2837 server to do DNS updates for clients even if those clients are being
2838 assigned their IP address using a \fIfixed-address\fR statement - that
2839 is, the client is being given a static assignment. This can only
2840 work with the \fIinterim\fR DNS update scheme. It is not
2841 recommended because the DHCP server has no way to tell that the update
2842 has been done, and therefore will not delete the record when it is not
2843 in use. Also, the server must attempt the update each time the
2844 client renews its lease, which could have a significant performance
2845 impact in environments that place heavy demands on the DHCP server.
2846 .RE
2847 .PP
2848 The
2849 .I use-host-decl-names
2850 statement
2851 .RS 0.25i
2852 .PP
2853 .B use-host-decl-names \fIflag\fB;\fR
2854 .PP
2855 If the \fIuse-host-decl-names\fR parameter is true in a given scope,
2856 then for every host declaration within that scope, the name provided
2857 for the host declaration will be supplied to the client as its
2858 hostname. So, for example,
2859 .PP
2860 .nf
2861 group {
2862 use-host-decl-names on;
2863
2864 host joe {
2865 hardware ethernet 08:00:2b:4c:29:32;
2866 fixed-address joe.fugue.com;
2867 }
2868 }
2869
2870 is equivalent to
2871
2872 host joe {
2873 hardware ethernet 08:00:2b:4c:29:32;
2874 fixed-address joe.fugue.com;
2875 option host-name "joe";
2876 }
2877 .fi
2878 .PP
2879 An \fIoption host-name\fR statement within a host declaration will
2880 override the use of the name in the host declaration.
2881 .PP
2882 It should be noted here that most DHCP clients completely ignore the
2883 host-name option sent by the DHCP server, and there is no way to
2884 configure them not to do this. So you generally have a choice of
2885 either not having any hostname to client IP address mapping that the
2886 client will recognize, or doing DNS updates. It is beyond
2887 the scope of this document to describe how to make this
2888 determination.
2889 .RE
2890 .PP
2891 The
2892 .I use-lease-addr-for-default-route
2893 statement
2894 .RS 0.25i
2895 .PP
2896 .B use-lease-addr-for-default-route \fIflag\fR\fB;\fR
2897 .PP
2898 If the \fIuse-lease-addr-for-default-route\fR parameter is true in a
2899 given scope, then instead of sending the value specified in the
2900 routers option (or sending no value at all), the IP address of the
2901 lease being assigned is sent to the client. This supposedly causes
2902 Win95 machines to ARP for all IP addresses, which can be helpful if
2903 your router is configured for proxy ARP. The use of this feature is
2904 not recommended, because it won't work for many DHCP clients.
2905 .RE
2906 .PP
2907 The
2908 .I vendor-option-space
2909 statement
2910 .RS 0.25i
2911 .PP
2912 .B vendor-option-space \fIstring\fR\fB;\fR
2913 .PP
2914 The \fIvendor-option-space\fR parameter determines from what option
2915 space vendor options are taken. The use of this configuration
2916 parameter is illustrated in the \fBdhcp-options(5)\fR manual page, in
2917 the \fIVENDOR ENCAPSULATED OPTIONS\fR section.
2918 .RE
2919 .SH SETTING PARAMETER VALUES USING EXPRESSIONS
2920 Sometimes it's helpful to be able to set the value of a DHCP server
2921 parameter based on some value that the client has sent. To do this,
2922 you can use expression evaluation. The
2923 .B dhcp-eval(5)
2924 manual page describes how to write expressions. To assign the result
2925 of an evaluation to an option, define the option as follows:
2926 .nf
2927 .sp 1
2928 \fImy-parameter \fB= \fIexpression \fB;\fR
2929 .fi
2930 .PP
2931 For example:
2932 .nf
2933 .sp 1
2934 ddns-hostname = binary-to-ascii (16, 8, "-",
2935 substring (hardware, 1, 6));
2936 .fi
2937 .RE
2938 .SH RESERVED LEASES
2939 It's often useful to allocate a single address to a single client, in
2940 approximate perpetuity. Host statements with \fBfixed-address\fR clauses
2941 exist to a certain extent to serve this purpose, but because host statements
2942 are intended to approximate 'static configuration', they suffer from not being
2943 referenced in a littany of other Server Services, such as dynamic DNS,
2944 failover, 'on events' and so forth.
2945 .PP
2946 If a standard dynamic lease, as from any range statement, is marked 'reserved',
2947 then the server will only allocate this lease to the client it is identified
2948 by (be that by client identifier or hardware address).
2949 .PP
2950 In practice, this means that the lease follows the normal state engine, enters
2951 ACTIVE state when the client is bound to it, expires, or is released, and any
2952 events or services that would normally be supplied during these events are
2953 processed normally, as with any other dynamic lease. The only difference
2954 is that failover servers treat reserved leases as special when they enter
2955 the FREE or BACKUP states - each server applies the lease into the state it
2956 may allocate from - and the leases are not placed on the queue for allocation
2957 to other clients. Instead they may only be 'found' by client identity. The
2958 result is that the lease is only offered to the returning client.
2959 .PP
2960 Care should probably be taken to ensure that the client only has one lease
2961 within a given subnet that it is identified by.
2962 .PP
2963 Leases may be set 'reserved' either through OMAPI, or through the
2964 \'infinite-is-reserved' configuration option (if this is applicable to your
2965 environment and mixture of clients).
2966 .PP
2967 It should also be noted that leases marked 'reserved' are effectively treated
2968 the same as leases marked 'bootp'.
2969 .RE
2970 .SH REFERENCE: OPTION STATEMENTS
2971 DHCP option statements are documented in the
2972 .B dhcp-options(5)
2973 manual page.
2974 .SH REFERENCE: EXPRESSIONS
2975 Expressions used in DHCP option statements and elsewhere are
2976 documented in the
2977 .B dhcp-eval(5)
2978 manual page.
2979 .SH SEE ALSO
2980 dhcpd(8), dhcpd.leases(5), dhcp-options(5), dhcp-eval(5), RFC2132, RFC2131.
2981 .SH AUTHOR
2982 .B dhcpd.conf(5)
2983 was written by Ted Lemon
2984 under a contract with Vixie Labs. Funding
2985 for this project was provided by Internet Systems Consortium.
2986 Information about Internet Systems Consortium can be found at
2987 .B https://www.isc.org.