D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
The Internet Software Consortium DHCP Server keeps a per
sistent database of leases that it has assigned. This
- database is a free-form ASCII file containing one valid
- declaration per lease. If more than one declaration
- appears for a given lease, the last one in the file is
- used. The file is written as a log, so this is not an
- unusual occurrance.
+ database is a free-form ASCII file containing a series of
+ lease declarations. Every time a lease is acquired,
+ renewed or released, its new value is recorded at the end
+ of the lease file. So if more than one declaration
+ appears for a given lease, the last one in the file is the
+ current one.
When dhcpd is first installed, there is no lease database.
- However, dhcpd requires that a lease database be present
+ However, dhcpd requires that a lease database be present
before it will start. To make the initial lease database,
just create an empty file called /var/db/dhcpd.leases.
- In order to prevent the lease database from growing with
- out bound, the file is rewritten from time to time.
+ In order to prevent the lease database from growing with
+ out bound, the file is rewritten from time to time.
First, a temporary lease database is created and all known
leases are dumped to it. Then, the old lease database is
- renamed /var/db/dhcpd.leases~. Finally, the newly writ
+ renamed /var/db/dhcpd.leases~. Finally, the newly writ
ten lease database is moved into place.
There is a window of vulnerability where if the dhcpd pro
- cess is killed or the system crashes after the old lease
- database has been renamed but before the new one has been
- moved into place, there will be no /var/db/dhcpd.leases.
+ cess is killed or the system crashes after the old lease
+ database has been renamed but before the new one has been
+ moved into place, there will be no /var/db/dhcpd.leases.
In this case, dhcpd will refuse to start, and will require
- manual intervention. D\bDO\bO N\bNO\bOT\bT simply create a new lease
+ manual intervention. D\bDO\bO N\bNO\bOT\bT simply create a new lease
file when this happens - if you do, you will lose all your
- old bindings, and chaos will ensue. Instead, rename
- /var/db/dhcpd.leases~ to /var/db/dhcpd.leases, restoring
- the old, valid lease file, and then start dhcpd. This
+ old bindings, and chaos will ensue. Instead, rename
+ /var/db/dhcpd.leases~ to /var/db/dhcpd.leases, restoring
+ the old, valid lease file, and then start dhcpd. This
guarantees that a valid lease file will be restored.
F\bFO\bOR\bRM\bMA\bAT\bT
- The format of the lease declarations is not currently doc
- umented.
+ Lease descriptions are stored in a format that is parsed
+ by the same recursive descent parser used to read the
+ d\bdh\bhc\bcp\bpd\bd.\b.c\bco\bon\bnf\bf(\b(5\b5)\b) and d\bdh\bhc\bcl\bli\bie\ben\bnt\bt.\b.c\bco\bon\bnf\bf(\b(5\b5)\b) files. Currently, the
+ only declaration that is used in the dhcpd.leases file is
+ the l\ble\bea\bas\bse\be declaration.
+
+ l\ble\bea\bas\bse\be _\bi_\bp_\b-_\ba_\bd_\bd_\br_\be_\bs_\bs {\b{ _\bs_\bt_\ba_\bt_\be_\bm_\be_\bn_\bt_\bs_\b._\b._\b. }\b}
+
+ Each lease declaration include the single IP address that
+ has been leased to the client. The statements within the
+ braces define the duration of the lease and to whom it is
+ assigned.
+
+ The start and end time of a lease are recorded using the
+ ``starts'' and ``ends'' statements:
+
+
+
+
+ 1
+
+
+
+
+
+dhcpd.leases(5) dhcpd.leases(5)
+
+
+ s\bst\bta\bar\brt\bts\bs _\bd_\ba_\bt_\be;\b;
+ e\ben\bnd\bds\bs _\bd_\ba_\bt_\be;\b;
+
+ Dates are specified as follows:
+
+ _\bw_\be_\be_\bk_\bd_\ba_\by _\by_\be_\ba_\br/\b/_\bm_\bo_\bn_\bt_\bh/\b/_\bd_\ba_\by _\bh_\bo_\bu_\br:\b:_\bm_\bi_\bn_\bu_\bt_\be:\b:_\bs_\be_\bc_\bo_\bn_\bd
+
+ The weekday is present to make it easy for a human to tell
+ when a lease expires - it's specified as a number from
+ zero to six, with zero being Sunday. The day of week is
+ ignored on input. The year is specified with the century,
+ so it should generally be four digits except for really
+ long leases. The month is specified as a number starting
+ with 1 for January. The day of the month is likewise
+ specified starting with 1. The hour is a number between 0
+ and 23, the minute a number between 0 and 59, and the sec
+ ond also a number between 0 and 59.
+
+ Lease times are specified in Greenwich Mean Time (GMT),
+ not in the local time zone. Since Greenwich is actually
+ on Daylight Savings Time part of the year, there is proba
+ bly nowhere in the world where the times recorded on a
+ lease are always the same as wall clock times. On a unix
+ machine, one can often figure out the current time in GMT
+ by typing d\bda\bat\bte\be -\b-u\bu.
+
+ The MAC address of the network interface that was used to
+ acquire the lease is recorded with the h\bha\bar\brd\bdw\bwa\bar\bre\be statement:
+
+ h\bha\bar\brd\bdw\bwa\bar\bre\be _\bh_\ba_\br_\bd_\bw_\ba_\br_\be_\b-_\bt_\by_\bp_\be _\bm_\ba_\bc_\b-_\ba_\bd_\bd_\br_\be_\bs_\bs;\b;
+
+ The MAC address is specified as a series of hexadecimal
+ octets, seperated by colons.
+
+ If the client used a client identifier to acquire its
+ address, the client identifier is recorded using the u\bui\bid\bd
+ statement:
+
+ u\bui\bid\bd _\bc_\bl_\bi_\be_\bn_\bt_\b-_\bi_\bd_\be_\bn_\bt_\bi_\bf_\bi_\be_\br;\b;
+
+ The client identifier is recorded as a series of hexadeci
+ mal octets, regardless of whether the client specifies an
+ ASCII string or uses the newer hardware type/MAC address
+ format.
+
+ If the client sends a hostname using the _\bC_\bl_\bi_\be_\bn_\bt _\bH_\bo_\bs_\bt_\bn_\ba_\bm_\be
+ option, as specified in some versions of the DHCP-DNS
+ Interaction draft, that hostname is recorded using the
+ c\bcl\bli\bie\ben\bnt\bt-\b-h\bho\bos\bst\btn\bna\bam\bme\be statement.
+
+ c\bcl\bli\bie\ben\bnt\bt-\b-h\bho\bos\bst\btn\bna\bam\bme\be "\b"_\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be"\b";\b;
+
+ If the client sends its hostname using the _\bH_\bo_\bs_\bt_\bn_\ba_\bm_\be
+ option, as Windows 95 does, it is recorded using the
+
+
+
+ 2
+
+
+
+
+
+dhcpd.leases(5) dhcpd.leases(5)
+
+
+ h\bho\bos\bst\btn\bna\bam\bme\be statement.
+
+ h\bho\bos\bst\btn\bna\bam\bme\be "\b"_\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be"\b";\b;
+
+ The DHCP server may determine that a lease has been mis
+ used in some way, either because a client that has been
+ assigned a lease NAKs it, or because the server's own
+ attempt to see if an address is in use prior to reusing it
+ reveals that the address is in fact already in use. In
+ that case, the a\bab\bba\ban\bnd\bdo\bon\bne\bed\bd statement will be used to indi
+ cate that the lease should not be reassigned.
+
+ a\bab\bba\ban\bnd\bdo\bon\bne\bed\bd;\b;
+
+ Abandoned leases are reclaimed automatically. When a
+ client asks for a new address, and the server finds that
+ there are no new addresses, it checks to see if there are
+ any abandoned leases, and allocates the least recently
+ abandoned lease. The standard mechanisms for checking
+ for lease address conflicts are still followed, so if the
+ abandoned lease's IP address is still in use, it will be
+ reabandoned.
+
+ If a client r\bre\beq\bqu\bue\bes\bst\bts\bs an abandoned address, the server
+ assumes that the reason the address was abandoned was that
+ the lease file was corrupted, and that the client is the
+ machine that responded when the lease was probed, causing
+ it to be abandoned. In that case, the address is immedi
+ ately assigned to the client.
F\bFI\bIL\bLE\bES\bS
/\b/v\bva\bar\br/\b/d\bdb\bb/\b/d\bdh\bhc\bcp\bpd\bd.\b.l\ble\bea\bas\bse\bes\bs
- 1
+
+
+
+
+
+
+
+
+
+
+ 3