dhclient
Section: Maintenance Commands (8)
Index
Return to Main Contents
NAME
dhclient - Dynamic Host Configuration Protocol Client
SYNOPSIS
dhclient
[
-4
|
-6
]
[
-S
]
[
-N
[
-N...
]
]
[
-T
[
-T...
]
]
[
-P
[
-P...
]
]
[
-p
port
]
[
-d
]
[
-e
VAR=value
]
[
-q
]
[
-1
]
[
-r
|
-x
]
[
-lf
lease-file
]
[
-pf
pid-file
]
[
-cf
config-file
]
[
-sf
script-file
]
[
-s
server
]
[
-g
relay
]
[
-n
]
[
-nw
]
[
-w
]
[
-B
]
[
-I
dhcp-client-identifier
]
[
-H
host-name
]
[
-F
fqdn.fqdn
]
[
-V
vendor-class-identifier
]
[
-R
request-option-list
]
[
-timeout
timeout
]
[
-v
]
[
--version
]
[
if0
[
...ifN
]
]
DESCRIPTION
The Internet Systems Consortium DHCP Client, dhclient, provides a
means for configuring one or more network interfaces using the Dynamic
Host Configuration Protocol, BOOTP protocol, or if these protocols
fail, by statically assigning an address.
OPERATION
The DHCP protocol allows a host to contact a central server which
maintains a list of IP addresses which may be assigned on one or more
subnets. A DHCP client may request an address from this pool, and
then use it on a temporary basis for communication on network. The
DHCP protocol also provides a mechanism whereby a client can learn
important details about the network to which it is attached, such as
the location of a default router, the location of a name server, and
so on.
On startup, dhclient reads the
dhclient.conf
for configuration instructions. It then gets a list of all the
network interfaces that are configured in the current system. For
each interface, it attempts to configure the interface using the DHCP
protocol.
In order to keep track of leases across system reboots and server
restarts, dhclient keeps a list of leases it has been assigned in the
dhclient.leases(5) file. On startup, after reading the dhclient.conf
file, dhclient reads the dhclient.leases file to refresh its memory
about what leases it has been assigned.
When a new lease is acquired, it is appended to the end of the
dhclient.leases file. In order to prevent the file from becoming
arbitrarily large, from time to time dhclient creates a new
dhclient.leases file from its in-core lease database. The old version
of the dhclient.leases file is retained under the name
dhclient.leases~
until the next time dhclient rewrites the database.
Old leases are kept around in case the DHCP server is unavailable when
dhclient is first invoked (generally during the initial system boot
process). In that event, old leases from the dhclient.leases file
which have not yet expired are tested, and if they are determined to
be valid, they are used until either they expire or the DHCP server
becomes available.
A mobile host which may sometimes need to access a network on which no
DHCP server exists may be preloaded with a lease for a fixed
address on that network. When all attempts to contact a DHCP server
have failed, dhclient will try to validate the static lease, and if it
succeeds, will use that lease until it is restarted.
A mobile host may also travel to some networks on which DHCP is not
available but BOOTP is. In that case, it may be advantageous to
arrange with the network administrator for an entry on the BOOTP
database, so that the host can boot quickly on that network rather
than cycling through the list of old leases.
COMMAND LINE
The names of the network interfaces that dhclient should attempt to
configure may be specified on the command line. If no interface names
are specified on the command line dhclient will normally identify all
network interfaces, eliminating non-broadcast interfaces if
possible, and attempt to configure each interface.
It is also possible to specify interfaces by name in the
dhclient.conf(5)
file. If interfaces are specified in this way, then the client will
only configure interfaces that are either specified in the
configuration file or on the command line, and will ignore all other
interfaces.
OPTIONS
- -4
-
Use the DHCPv4 protocol to obtain an IPv4 address and configuration
parameters (default).
- -6
-
Use the DHCPv6 protocol to obtain whatever IPv6 addresses are available
along with configuration parameters. The functionality of DHCPv6 mode
may be modified with the
-S
,
-T
, and
-N
options.
- -S
-
Perform an information-only request over DHCPv6 to get stateless
configuration parameters. It is not recommended to combine this option
with the
-N
,
-P
, or
-T
options or to share lease files between different modes of operation. Only
valid with the
-6
option.
- -N
-
Perform a normal (IA_NA) address query over DHCPv6. It is not recommended
to combine this option with the
-P
,
-S
, or
-T
options or to share lease files between different modes of operation. Only
valid with the
-6
option.
- -T
-
Perform a temporary (IA_TA) address query over DHCPv6 (disables normal address
query). It is not recommended to combine this option with the
-N
,
-P
, or
-S
options or to share lease files between different modes of operation. Only
valid with the
-6
option.
- -P
-
Enable IPv6 prefix delegation (disables normal address query). It is not
not recommended to combine this option with the
-N
,
-S
, or
-T
options or to share lease files between different modes of operation. Only
valid with the
-6
option.
- -p <port number>
-
The UDP port number the DHCP client should listen and transmit on. If
unspecified,
dhclient
uses the default port 68. This option is mostly useful for debugging
purposes. If a different port is specified for the client to listen and
transmit on, the client will also use a different destination port - one
less than the specified port.
- -d
-
Force
dhclient
to run as a foreground process. This is useful when running the client
under a debugger, or when running it out of inittab on System V systems.
- -e VAR=value
-
Define additional environment variables for the environment where
dhclient-script executes. You may specify multiplate
-e
options on the command line. For example:
-e IF_METRIC=1
- -q
-
Suppress all terminal and log output except error messages.
- -1
-
Try once to get a lease. One failure, exit with code 2.
- -r
-
Tell
dhclient
to release the current lease it has from the server. This is not required
by the DHCP protocol, but some ISPs require their clients to notify the
server if they wish to release an assigned IP address.
- -lf <lease-file>
-
Path to the lease database file. If unspecified, the default
/var/db/dhclient/dhclient.leases
is used.
- -pf <pid-file>
-
Path to the process ID file. If unspecified, the default
/var/run/dhclient.pid
is used.
- -cf <config-file>
-
Path to the client configuration file. If unspecified, the default
/etc/dhcp/dhclient.conf
is used.
- -sf <script-file>
-
Path to the network configuration script invoked by
dhclient
when it gets a lease. If unspecified, the default
/sbin/dhclient-script
is used.
- -s <server>
-
Specifiy the server IP address or fully qualified domain name to transmit
DHCP protocol messages to. Normally,
dhclient
transmits these messages to 255.255.255.255 (the IP limited broadcast
address). Overriding this is mostly useful for debugging purposes.
- -g <relay>
-
Only for debugging. Set the giaddr field of all packets the client
sends to the IP address specified. This should not be expected to work
in any consistent or useful way.
- -n
-
Do not configure any interfaces. Most useful combined with the
-w
option.
- -nw
-
Become a daemon process immediately (nowait) rather than waiting until an IP
address has been acquired.
- -w
-
Keep running even if no network interfaces are found. The
omshell
program can be used to notify the client when a network interface has been
added or removed so it can attempt to configure an IP address on that
interface.
- -B
-
Set the BOOTP broadcast flag in request packets so servers will always
broadcast replies.
- -I <dhcp-client-identifier>
-
Specify the dhcp-client-identifier option to send to the DHCP server.
- -H <host-name>
-
Specify the host-name option to send to the DHCP server. The host-name
string only contains the client's hostname prefix, to which the server will
append the ddns-domainname or domain-name options, if any, to derive the
fully qualified domain name of the client. The
-H
option cannot be used with the
-F
option.
- -F <fqdn.fqdn>
-
Specify the fqdn.fqdn option to send to the DHCP server. This option cannot
be used with the
-H
option. The fqdn.fqdn option must specify the complete domain name of the
client host, which the server may use for dynamic DNS updates.
- -V <vendor-class-identifier>
-
Specify the vendor-class-identifier option to send to the DHCP server.
- -R <option>[,<option>...]
-
Specify the list of options the client is to request from the server. The
option list must be a single string consisting of option names separated
by at least one command and optional space characters. The default option
list is:
subnet-mask,broadcast-address,time-offset,routers,
domain-name,domain-name-servers,host-name,nis-domain,
nis-servers,ntp-servers
The
-R
option does not append options to the default request, it overrides the
default request list. Keep this in mind if you want to request an
additional option besides the default request list. You will have to
specify all option names for the
-R
parameter.
- -timeout <timeout>
-
Specify the time after which
dhclient
will decide that no DHCP servers can be contacted when no responses have been
received.
- -v
-
Enable verbose log messages.
If the client is killed by a signale (for example at shutdown or reboot), it
will not execute the
dhclient-script (8)
at exit. However, if you shut the client down gracefully with
-r
or
-x
it will execute
dhclient-script (8)
at shutdown with the specific reason for calling the script set in the
environment table.
CONFIGURATION
The syntax of the dhclient.conf(5) file is discussed separately.
OMAPI
The DHCP client provides some ability to control it while it is
running, without stopping it. This capability is provided using OMAPI,
an API for manipulating remote objects. OMAPI clients connect to the
client using TCP/IP, authenticate, and can then examine the client's
current status and make changes to it.
Rather than implementing the underlying OMAPI protocol directly, user
programs should use the dhcpctl API or OMAPI itself. Dhcpctl is a
wrapper that handles some of the housekeeping chores that OMAPI does
not do automatically. Dhcpctl and OMAPI are documented in dhcpctl(3)
and omapi(3). Most things you'd want to do with the client can
be done directly using the omshell(1) command, rather than
having to write a special program.
THE CONTROL OBJECT
The control object allows you to shut the client down, releasing all
leases that it holds and deleting any DNS records it may have added.
It also allows you to pause the client - this unconfigures any
interfaces the client is using. You can then restart it, which
causes it to reconfigure those interfaces. You would normally pause
the client prior to going into hibernation or sleep on a laptop
computer. You would then resume it after the power comes back.
This allows PC cards to be shut down while the computer is hibernating
or sleeping, and then reinitialized to their previous state once the
computer comes out of hibernation or sleep.
The control object has one attribute - the state attribute. To shut
the client down, set its state attribute to 2. It will automatically
do a DHCPRELEASE. To pause it, set its state attribute to 3. To
resume it, set its state attribute to 4.
FILES
/sbin/dhclient-script,
/etc/dhcp/dhclient.conf, /var/db/dhclient/dhclient.leases, /var/run/dhclient.pid,
/var/db/dhclient/dhclient.leases~.
SEE ALSO
dhcpd(8), dhcrelay(8), dhclient-script(8), dhclient.conf(5),
dhclient.leases(5), dhcp-eval(5).
AUTHOR
dhclient(8)
has been written for Internet Systems Consortium
by Ted Lemon in cooperation with Vixie
Enterprises. To learn more about Internet Systems Consortium,
see
http://www.isc.org
To learn more about Vixie
Enterprises, see
http://www.vix.com.
This client was substantially modified and enhanced by Elliot Poger
for use on Linux while he was working on the MosquitoNet project at
Stanford.
The current version owes much to Elliot's Linux enhancements, but
was substantially reorganized and partially rewritten by Ted Lemon
so as to use the same networking framework that the Internet Systems
Consortium DHCP server uses. Much system-specific configuration code
was moved into a shell script so that as support for more operating
systems is added, it will not be necessary to port and maintain
system-specific configuration code to these operating systems - instead,
the shell script can invoke the native tools to accomplish the same
purpose.