]> git.ipfire.org Git - thirdparty/dhcp.git/blame - server/dhcpd.8
Merge changes between 3.0rc7 and 3.0rc8pl2.
[thirdparty/dhcp.git] / server / dhcpd.8
CommitLineData
08fe7cdb
TL
1.\" dhcpd.8
2.\"
69c620f2
TL
3.\" Copyright (c) 1996-2001 Internet Software Consortium.
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
08fe7cdb 7.\"
69c620f2
TL
8.\" 1. Redistributions of source code must retain the above copyright
9.\" notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\" notice, this list of conditions and the following disclaimer in the
12.\" documentation and/or other materials provided with the distribution.
13.\" 3. Neither the name of The Internet Software Consortium nor the names
14.\" of its contributors may be used to endorse or promote products derived
15.\" from this software without specific prior written permission.
08fe7cdb 16.\"
69c620f2
TL
17.\" THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
18.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21.\" DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
22.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE.
08fe7cdb 30.\"
69c620f2
TL
31.\" This software has been written for the Internet Software Consortium
32.\" by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
33.\" To learn more about the Internet Software Consortium, see
34.\" ``http://www.isc.org/''. To learn more about Vixie Enterprises,
35.\" see ``http://www.vix.com''. To learn more about Nominum, Inc., see
36.\" ``http://www.nominum.com''.
ee0cda4d
TL
37.TH dhcpd 8
38.SH NAME
5e6b52dc 39dhcpd - Dynamic Host Configuration Protocol Server
ee0cda4d
TL
40.SH SYNOPSIS
41.B dhcpd
42[
43.B -p
44.I port
45]
d27562c7
TL
46[
47.B -f
48]
49[
5e6b52dc
TL
50.B -d
51]
52[
6edb572b
TL
53.B -q
54]
55[
897065dc
TL
56.B -t
57|
58.B -T
59]
60[
e2ac5814
TL
61.B -cf
62.I config-file
63]
64[
65.B -lf
66.I lease-file
67]
68[
51fe0cce
TL
69.B -tf
70.I trace-output-file
71]
72[
73.B -play
74.I trace-playback-file
75]
76[
d27562c7
TL
77.I if0
78[
79.I ...ifN
80]
81]
ee0cda4d 82.SH DESCRIPTION
5e6b52dc
TL
83The Internet Software Consortium DHCP Server, dhcpd, implements the
84Dynamic Host Configuration Protocol (DHCP) and the Internet Bootstrap
85Protocol (BOOTP). DHCP allows hosts on a TCP/IP network to request
86and be assigned IP addresses, and also to discover information about
87the network to which they are attached. BOOTP provides similar
88functionality, with certain restrictions.
f21a7b4a
TL
89.SH CONTRIBUTIONS
90.PP
46a65180
TL
91This software is free software. At various times its development has
92been underwritten by various organizations, including the ISC and
93Vixie Enterprises. The development of 3.0 has been funded almost
94entirely by Nominum, Inc.
95.PP
96At this point development is being shepherded by Ted Lemon, and hosted
97by the ISC, but the future of this project depends on you. If you
98have features you want, please consider implementing them.
ee0cda4d
TL
99.SH OPERATION
100.PP
08fe7cdb
TL
101The DHCP protocol allows a host which is unknown to the network
102administrator to be automatically assigned a new IP address out of a
103pool of IP addresses for its network. In order for this to work, the
104network administrator allocates address pools in each subnet and
ee0cda4d
TL
105enters them into the dhcpd.conf(5) file.
106.PP
08fe7cdb 107On startup, dhcpd reads the
ee0cda4d 108.IR dhcpd.conf
5e6b52dc
TL
109file and stores a list of available addresses on each subnet in
110memory. When a client requests an address using the DHCP protocol,
111dhcpd allocates an address for it. Each client is assigned a lease,
112which expires after an amount of time chosen by the administrator (by
113default, one day). Before leases expire, the clients to which leases
114are assigned are expected to renew them in order to continue to use
115the addresses. Once a lease has expired, the client to which that
116lease was assigned is no longer permitted to use the leased IP
117address.
ee0cda4d 118.PP
08fe7cdb 119In order to keep track of leases across system reboots and server
ee0cda4d
TL
120restarts, dhcpd keeps a list of leases it has assigned in the
121dhcpd.leases(5) file. Before dhcpd grants a lease to a host, it
122records the lease in this file and makes sure that the contents of the
123file are flushed to disk. This ensures that even in the event of a
124system crash, dhcpd will not forget about a lease that it has
125assigned. On startup, after reading the dhcpd.conf file, dhcpd
126reads the dhcpd.leases file to refresh its memory about what leases
127have been assigned.
128.PP
129New leases are appended to the end of the dhcpd.leases
08fe7cdb 130file. In order to prevent the file from becoming arbitrarily large,
ee0cda4d
TL
131from time to time dhcpd creates a new dhcpd.leases file from its
132in-core lease database. Once this file has been written to disk, the
133old file is renamed
134.IR dhcpd.leases~ ,
135and the new file is renamed dhcpd.leases. If the system crashes in
136the middle of this process, whichever dhcpd.leases file remains will
137contain all the lease information, so there is no need for a special
138crash recovery process.
139.PP
5e6b52dc
TL
140BOOTP support is also provided by this server. Unlike DHCP, the BOOTP
141protocol does not provide a protocol for recovering
142dynamically-assigned addresses once they are no longer needed. It is
143still possible to dynamically assign addresses to BOOTP clients, but
144some administrative process for reclaiming addresses is required. By
145default, leases are granted to BOOTP clients in perpetuity, although
146the network administrator may set an earlier cutoff date or a shorter
147lease length for BOOTP leases if that makes sense.
148.PP
149BOOTP clients may also be served in the old standard way, which is to
150simply provide a declaration in the dhcpd.conf file for each
151BOOTP client, permanently assigning an address to each client.
ee0cda4d
TL
152.PP
153Whenever changes are made to the dhcpd.conf file, dhcpd must be
154restarted. To restart dhcpd, send a SIGTERM (signal 15) to the
155process ID contained in
5e6b52dc
TL
156.IR RUNDIR/dhcpd.pid ,
157and then re-invoke dhcpd. Because the DHCP server database is not as
158lightweight as a BOOTP database, dhcpd does not automatically restart
159itself when it sees a change to the dhcpd.conf file.
4e19a6df
TL
160.PP
161Note: We get a lot of complaints about this. We realize that it would
162be nice if one could send a SIGHUP to the server and have it reload
163the database. This is not technically impossible, but it would
164require a great deal of work, our resources are extremely limited, and
165they can be better spent elsewhere. So please don't complain about
166this on the mailing list unless you're prepared to fund a project to
167implement this feature, or prepared to do it yourself.
d27562c7
TL
168.SH COMMAND LINE
169.PP
5e6b52dc
TL
170The names of the network interfaces on which dhcpd should listen for
171broadcasts may be specified on the command line. This should be done
172on systems where dhcpd is unable to identify non-broadcast interfaces,
173but should not be required on other systems. If no interface names
174are specified on the command line dhcpd will identify all network
175interfaces which are up, elimininating non-broadcast interfaces if
176possible, and listen for DHCP broadcasts on each interface.
d27562c7 177.PP
5e6b52dc
TL
178If dhcpd should listen on a port other than the standard (port 67),
179the
d27562c7 180.B -p
5e6b52dc
TL
181flag may used. It should be followed by the udp port number on which
182dhcpd should listen. This is mostly useful for debugging purposes.
d27562c7 183.PP
5e6b52dc
TL
184To run dhcpd as a foreground process, rather than allowing it to run
185as a daemon in the background, the
d27562c7 186.B -f
5e6b52dc
TL
187flag should be specified. This is useful when running dhcpd under a
188debugger, or when running it out of inittab on System V systems.
189.PP
190To have dhcpd log to the standard error descriptor, specify the
191.B -d
192flag. This can be useful for debugging, and also at sites where a
193complete log of all dhcp activity must be kept but syslogd is not
194reliable or otherwise cannot be used. Normally, dhcpd will log all
195output using the syslog(3) function with the log facility set to
196LOG_DAEMON.
e2ac5814
TL
197.PP
198Dhcpd can be made to use an alternate configuration file with the
199.B -cf
200flag, or an alternate lease file with the
201.B -lf
202flag. Because of the importance of using the same lease database at
203all times when running dhcpd in production, these options should be
204used \fBonly\fR for testing lease files or database files in a
205non-production environment.
6edb572b
TL
206.PP
207When starting dhcpd up from a system startup script (e.g., /etc/rc),
208it may not be desirable to print out the entire copyright message on
209startup. To avoid printing this message, the
210.B -q
211flag may be specified.
897065dc
TL
212.PP
213The DHCP server reads two files on startup: a configuration file, and
214a lease database. If the
215.B -t
216flag is specified, the server will simply test the configuration file
217for correct syntax, but will not attempt to perform any network
218operations. This can be used to test the a new configuration file
219automatically before installing it.
220.PP
221The
222.B -T
223flag can be used to test the lease database file in a similar way.
51fe0cce
TL
224.PP
225The \fB-tf\fR and \fB-play\fR options allow you to specify a file into
226which the entire startup state of the server and all the transactions
227it processes are either logged or played back from. This can be
228useful in submitting bug reports - if you are getting a core dump
229every so often, you can start the server with the \fB-tf\fR option and
230then, when the server dumps core, the trace file will contain all the
231transactions that led up to it dumping core, so that the problem can
232be easily debugged with \fB-play\fR.
233.PP
234The \fB-play\fR option must be specified with an alternate lease file,
235using the \fB-lf\fR switch, so that the DHCP server doesn't wipe out
236your existing lease file with its test data. The DHCP server will
237refuse to operate in playback mode unless you specify an alternate
238lease file.
ee0cda4d 239.SH CONFIGURATION
ba7ed239 240The syntax of the dhcpd.conf(5) file is discussed seperately. This
ee0cda4d 241section should be used as an overview of the configuration process,
ba7ed239 242and the dhcpd.conf(5) documentation should be consulted for detailed
ee0cda4d
TL
243reference information.
244.PP
245.SH Subnets
246dhcpd needs to know the subnet numbers and netmasks of all subnets for
247which it will be providing service. In addition, in order to
248dynamically allocate addresses, it must be assigned one or more ranges
249of addresses on each subnet which it can in turn assign to client
250hosts as they boot. Thus, a very simple configuration providing DHCP
08fe7cdb
TL
251support might look like this:
252.nf
253.sp 1
5e6b52dc 254 subnet 239.252.197.0 netmask 255.255.255.0 {
08fe7cdb 255 range 239.252.197.10 239.252.197.250;
5e6b52dc 256 }
08fe7cdb 257.fi
ee0cda4d 258.PP
08fe7cdb
TL
259Multiple address ranges may be specified like this:
260.nf
261.sp 1
5e6b52dc
TL
262 subnet 239.252.197.0 netmask 255.255.255.0 {
263 range 239.252.197.10 239.252.197.107;
08fe7cdb 264 range 239.252.197.113 239.252.197.250;
5e6b52dc 265 }
08fe7cdb 266.fi
ee0cda4d 267.PP
08fe7cdb
TL
268If a subnet will only be provided with BOOTP service and no dynamic
269address assignment, the range clause can be left out entirely, but the
270subnet statement must appear.
ee0cda4d
TL
271.PP
272.SH Lease Lengths
08fe7cdb
TL
273DHCP leases can be assigned almost any length from zero seconds to
274infinity. What lease length makes sense for any given subnet, or for
275any given installation, will vary depending on the kinds of hosts
276being served.
ee0cda4d 277.PP
08fe7cdb
TL
278For example, in an office environment where systems are added from
279time to time and removed from time to time, but move relatively
280infrequently, it might make sense to allow lease times of a month of
281more. In a final test environment on a manufacturing floor, it may
282make more sense to assign a maximum lease length of 30 minutes -
283enough time to go through a simple test procedure on a network
284appliance before packaging it up for delivery.
ee0cda4d 285.PP
08fe7cdb
TL
286It is possible to specify two lease lengths: the default length that
287will be assigned if a client doesn't ask for any particular lease
288length, and a maximum lease length. These are specified as clauses
289to the subnet command:
290.nf
291.sp 1
5e6b52dc
TL
292 subnet 239.252.197.0 netmask 255.255.255.0 {
293 range 239.252.197.10 239.252.197.107;
294 default-lease-time 600;
08fe7cdb 295 max-lease-time 7200;
5e6b52dc 296 |
08fe7cdb 297.fi
ee0cda4d 298.PP
08fe7cdb
TL
299This particular subnet declaration specifies a default lease time of
300600 seconds (ten minutes), and a maximum lease time of 7200 seconds
301(two hours). Other common values would be 86400 (one day), 604800
302(one week) and 2592000 (30 days).
ee0cda4d 303.PP
08fe7cdb
TL
304Each subnet need not have the same lease\(emin the case of an office
305environment and a manufacturing environment served by the same DHCP
306server, it might make sense to have widely disparate values for
307default and maximum lease times on each subnet.
ee0cda4d
TL
308.SH BOOTP Support
309Each BOOTP client must be explicitly declared in the dhcpd.conf
08fe7cdb
TL
310file. A very basic client declaration will specify the client
311network interface's hardware address and the IP address to assign to
312that client. If the client needs to be able to load a boot file from
313the server, that file's name must be specified. A simple bootp
314client declaration might look like this:
315.nf
316.sp 1
fc5aedc9
TL
317 host haagen {
318 hardware ethernet 08:00:2b:4c:59:23;
5e6b52dc 319 fixed-address 239.252.197.9;
08fe7cdb 320 filename "/tftpboot/haagen.boot";
5e6b52dc 321 }
08fe7cdb 322.fi
ee0cda4d 323.SH Options
08fe7cdb
TL
324DHCP (and also BOOTP with Vendor Extensions) provide a mechanism
325whereby the server can provide the client with information about how
326to configure its network interface (e.g., subnet mask), and also how
327the client can access various network services (e.g., DNS, IP routers,
328and so on).
ee0cda4d 329.PP
08fe7cdb
TL
330These options can be specified on a per-subnet basis, and, for BOOTP
331clients, also on a per-client basis. In the event that a BOOTP
332client declaration specifies options that are also specified in its
333subnet declaration, the options specified in the client declaration
334take precedence. An reasonably complete DHCP configuration might
335look something like this:
336.nf
337.sp 1
5e6b52dc
TL
338 subnet 239.252.197.0 netmask 255.255.255.0 {
339 range 239.252.197.10 239.252.197.250;
340 default-lease-time 600 max-lease-time 7200;
341 option subnet-mask 255.255.255.0;
342 option broadcast-address 239.252.197.255;
343 option routers 239.252.197.1;
344 option domain-name-servers 239.252.197.2, 239.252.197.3;
08fe7cdb 345 option domain-name "isc.org";
5e6b52dc 346 }
08fe7cdb 347.fi
ee0cda4d 348.PP
08fe7cdb
TL
349A bootp host on that subnet that needs to be in a different domain and
350use a different name server might be declared as follows:
351.nf
352.sp 1
ba7ed239
TL
353 host haagen {
354 hardware ethernet 08:00:2b:4c:59:23;
5e6b52dc
TL
355 fixed-address 239.252.197.9;
356 filename "/tftpboot/haagen.boot";
357 option domain-name-servers 192.5.5.1;
08fe7cdb 358 option domain-name "vix.com";
5e6b52dc 359 }
08fe7cdb 360.fi
ee0cda4d 361.PP
5e6b52dc
TL
362A more complete description of the dhcpd.conf file syntax is provided
363in dhcpd.conf(5).
90e0ef94
TL
364.SH OMAPI
365The DHCP server provides the capability to modify some of its
366configuration while it is running, without stopping it, modifying its
367database files, and restarting it. This capability is currently
368provided using OMAPI - an API for manipulating remote objects. OMAPI
369clients connect to the server using TCP/IP, authenticate, and can then
370examine the server's current status and make changes to it.
371.PP
372Rather than implementing the underlying OMAPI protocol directly, user
373programs should use the dhcpctl API or OMAPI itself. Dhcpctl is a
374wrapper that handles some of the housekeeping chores that OMAPI does
375not do automatically. Dhcpctl and OMAPI are documented in \fBdhcpctl(3)\fR
376and \fBomapi(3)\fR.
377.PP
378OMAPI exports objects, which can then be examined and modified. The
379DHCP server exports the following objects: lease, host,
380failover-state and group. Each object has a number of methods that
381are provided: lookup, create, and destroy. In addition, it is
382possible to look at attributes that are stored on objects, and in some
383cases to modify those attributes.
384.SH THE LEASE OBJECT
385Leases can't currently be created or destroyed, but they can be looked
386up to examine and modify their state.
387.PP
388Leases have the following attributes:
389.PP
390.B state \fIinteger\fR lookup, examine
391.RS 0.5i
392.nf
3931 = free
3942 = active
3953 = expired
3964 = released
3975 = abandoned
3986 = reset
3997 = backup
4008 = reserved
4019 = bootp
402.fi
403.RE
404.PP
405.B ip-address \fIdata\fR lookup, examine
406.RS 0.5i
407The IP address of the lease.
408.RE
409.PP
410.B dhcp-client-identifier \fIdata\fR lookup, examine, update
411.RS 0.5i
412The
413client identifier that the client used when it acquired the lease.
414Not all clients send client identifiers, so this may be empty.
415.RE
416.PP
417.B client-hostname \fIdata\fR examine, update
418.RS 0.5i
419The value the client sent in the host-name option.
420.RE
421.PP
422.B host \fIhandle\fR examine
423.RS 0.5i
424the host declaration associated with this lease, if any.
425.RE
426.PP
427.B subnet \fIhandle\fR examine
428.RS 0.5i
429the subnet object associated with this lease (the subnet object is not
430currently supported).
431.RE
432.PP
433.B pool \fIhandle\fR examine
434.RS 0.5i
435the pool object associted with this lease (the pool object is not
436currently supported).
437.RE
438.PP
439.B billing-class \fIhandle\fR examine
440.RS 0.5i
441the handle to the class to which this lease is currently billed, if
442any (the class object is not currently supported).
443.RE
444.PP
445.B hardware-address \fIdata\fR examine, update
446.RS 0.5i
447the hardware address (chaddr) field sent by the client when it
448acquired its lease.
449.RE
450.PP
451.B hardware-type \fIinteger\fR examine, update
452.RS 0.5i
453the type of the network interface that the client reported when it
454acquired its lease.
455.RE
456.PP
457.B ends \fItime\fR examine
458.RS 0.5i
459the time when the lease's current state ends, as understood by the
460client.
461.RE
462.PP
463.B tstp \fItime\fR examine
464.RS 0.5i
465the time when the lease's current state ends, as understood by the
466server.
467.RE
468.B tsfp \fItime\fR examine
469.RS 0.5i
470the time when the lease's current state ends, as understood by the
471failover peer (if there is no failover peer, this value is
472undefined).
473.RE
474.PP
475.B cltt \fItime\fR examine
476.RS 0.5i
477The time of the last transaction with the client on this lease.
478.RE
479.SH THE HOST OBJECT
480Hosts can be created, destroyed, looked up, examined and modified.
481If a host declaration is created or deleted using OMAPI, that
482information will be recorded in the dhcpd.leases file. It is
483permissible to delete host declarations that are declared in the
484dhcpd.conf file.
485.PP
486Hosts have the following attributes:
487.PP
488.B name \fIdata\fR lookup, examine, modify
489.RS 0.5i
490the name of the host declaration. This name must be unique among all
491host declarations.
492.RE
493.PP
494.B group \fIhandle\fR examine, modify
495.RS 0.5i
496the named group associated with the host declaration, if there is one.
497.RE
498.PP
499.B hardware-address \fIdata\fR lookup, examine, modify
500.RS 0.5i
501the link-layer address that will be used to match the client, if any.
502Only valid if hardware-type is also present.
503.RE
504.PP
505.B hardware-type \fIinteger\fR lookup, examine, modify
506.RS 0.5i
507the type of the network interface that will be used to match the
508client, if any. Only valid if hardware-address is also present.
509.RE
510.PP
511.B dhcp-client-identifier \fIdata\fR lookup, examine, modify
512.RS 0.5i
513the dhcp-client-identifier option that will be used to match the
514client, if any.
515.RE
516.PP
517.B ip-address \fIdata\fR examine, modify
518.RS 0.5i
519a fixed IP address which is reserved for a DHCP client that matches
520this host declaration. The IP address will only be assigned to the
521client if it is valid for the network segment to which the client is
522connected.
523.RE
524.PP
525.B statements \fIdata\fR modify
526.RS 0.5i
527a list of statements in the format of the dhcpd.conf file that will be
528executed whenever a message from the client is being processed.
529.RE
530.PP
531.B known \fIinteger\fR examine, modify
532.RS 0.5i
533if nonzero, indicates that a client matching this host declaration
534will be treated as \fIknown\fR in pool permit lists. If zero, the
535client will not be treated as known.
536.RE
537.SH THE GROUP OBJECT
538Named groups can be created, destroyed, looked up, examined and
539modified. If a group declaration is created or deleted using OMAPI,
540that information will be recorded in the dhcpd.leases file. It is
541permissible to delete group declarations that are declared in the
542dhcpd.conf file.
543.PP
544Named groups currently can only be associated with
545hosts - this allows one set of statements to be efficiently attached
546to more than one host declaration.
547.PP
548Groups have the following attributes:
549.PP
550.B name \fIdata\fR
551.RS 0.5i
552the name of the group. All groups that are created using OMAPI must
553have names, and the names must be unique among all groups.
554.RE
555.PP
556.B statements \fIdata\fR
557.RS 0.5i
558a list of statements in the format of the dhcpd.conf file that will be
559executed whenever a message from a client whose host declaration
560references this group is processed.
561.RE
d758ad8c
TL
562.SH THE CONTROL OBJECT
563The control object allows you to shut the server down. If the server
564is doing failover with another peer, it will make a clean transition
565into the shutdown state and notify its peer, so that the peer can go
566into partner down, and then record the "recover" state in the lease
567file so that when the server is restarted, it will automatically
568resynchronize with its peer.
569.PP
570On shutdown the server will also attempt to cleanly shut down all
571OMAPI connections. If these connections do not go down cleanly after
572five seconds, they are shut down pre-emptively. It can take as much
573as 25 seconds from the beginning of the shutdown process to the time
574that the server actually exits.
575.PP
576To shut the server down, open its control object and set the state
577attribute to 2.
ee0cda4d
TL
578.SH FILES
579.B ETCDIR/dhcpd.conf, DBDIR/dhcpd.leases, RUNDIR/dhcpd.pid,
580.B DBDIR/dhcpd.leases~.
581.SH SEE ALSO
66b01364 582dhclient(8), dhcrelay(8), dhcpd.conf(5), dhcpd.leases(5)
ee0cda4d
TL
583.SH AUTHOR
584.B dhcpd(8)
90e0ef94
TL
585was originally written by Ted Lemon under a contract with Vixie Labs.
586Funding for this project was provided by the Internet Software
587Consortium. Version 3 of the DHCP server was funded by Nominum, Inc.
588Information about the Internet Software Consortium is available at
589.B http://www.isc.org/isc\fR.
590Information about Nominum and support contracts for DHCP and BIND can
591be found at \fBhttp://www.nominum.com\fR.