


dhclient(8)                                           dhclient(8)


NNAAMMEE
       dhclient - Dynamic Host Configuration Protocol Client

SSYYNNOOPPSSIISS
       ddhhcclliieenntt [ --pp _p_o_r_t ] [ --dd ] [ --ee _V_A_R_=_v_a_l_u_e ] [ --qq ] [ --11 ]
       [ --rr ] [ --xx ] [ --llff _l_e_a_s_e_-_f_i_l_e ] [ --ppff _p_i_d_-_f_i_l_e  ]  [  --ccff
       _c_o_n_f_i_g_-_f_i_l_e ] [ --ssff _s_c_r_i_p_t_-_f_i_l_e ] [ --ss server ] [ --gg relay
       ] [ --nn ] [ --nnww ] [ --ww ] [ _i_f_0 [ _._._._i_f_N ] ]

DDEESSCCRRIIPPTTIIOONN
       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.

OOPPEERRAATTIIOONN
       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 _d_h_c_l_i_e_n_t_._c_o_n_f for  configu-
       ration instructions.   It then gets a list of all the net-
       work 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
       _d_h_c_l_i_e_n_t_._l_e_a_s_e_s_~ 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 dur-
       ing 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



                                                                1





dhclient(8)                                           dhclient(8)


       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.

CCOOMMMMAANNDD LLIINNEE
       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
       ddhhcclliieenntt..ccoonnff((55)) 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.

       If  the  DHCP  client should listen and transmit on a port
       other than the standard (port 68), the --pp flag  may  used.
       It should be followed by the udp port number that dhclient
       should use.  This is mostly useful for debugging purposes.
       If  a different port is specified for the client to listen
       on and transmit on, the client will also use  a  different
       destination port - one less than the specified port.

       The  DHCP  client normally transmits any protocol messages
       it   sends   before   acquiring   an   IP   address    to,
       255.255.255.255,  the  IP limited broadcast address.   For
       debugging purposes, it may be useful to  have  the  server
       transmit  these messages to some other address.   This can
       be specified with the --ss flag, followed by the IP  address
       or domain name of the destination.

       For testing purposes, the giaddr field of all packets that
       the client sends can be set using the --gg flag, followed by
       the IP address to send.   This is only useful for testing,
       and should not be expected to work in  any  consistent  or
       useful way.

       The  DHCP client will normally run in the foreground until



                                                                2





dhclient(8)                                           dhclient(8)


       it has configured an interface, and then  will  revert  to
       running  in  the  background.    To  run force dhclient to
       always run as a foreground process, the --dd flag should  be
       specified.  This is useful when running the client under a
       debugger, or when running it out of inittab  on  System  V
       systems.

       The  dhclient daemon creates its own environment when exe-
       cuting the dhclient-script to do the grunt work of  inter-
       face configuration.  To define extra environment variables
       and their values, use the --ee flag, followed by  the  envi-
       ronment  variable  name  and value assignment, just as one
       would assign a variable in a shell.  Eg: --ee _I_F___M_E_T_R_I_C_=_1

       The client normally prints a startup message and  displays
       the  protocol  sequence  to  the standard error descriptor
       until it has acquired an address, and then only logs  mes-
       sages  using  the  ssyysslloogg ((33)) facility.   The --qq flag pre-
       vents any messages other than errors from being printed to
       the standard error descriptor.

       The  client  normally doesn't release the current lease as
       it is not required by the DHCP protocol.  Some cable  ISPs
       require their clients to notify the server if they wish to
       release an assigned IP address.  The  --rr  flag  explicitly
       releases  the  current  lease, and once the lease has been
       released, the client exits.

       If the client is killed by a signal (for example at  shut-
       down  or  reboot) it won't execute the ddhhcclliieenntt--ssccrriipptt ((88))
       at exit. However if you shut the  client  down  gracefully
       with --rr or --xx it will execute ddhhcclliieenntt--ssccrriipptt ((88)) at shut-
       down with the specific reason for calling the script  set.

       The  --11  flag  will  cause  dhclient  to try once to get a
       lease.  If it fails, dhclient exits with exit code two.

       The DHCP client normally gets its  configuration  informa-
       tion  from  //eettcc//ddhhcclliieenntt..ccoonnff,,  its  lease  database from
       //vvaarr//ddbb//ddhhcclliieenntt..lleeaasseess,, stores its process ID in  a  file
       called  //vvaarr//rruunn//ddhhcclliieenntt..ppiidd,,  and configures the network
       interface using //uussrr//llooccaall//ssbbiinn//ddhhcclliieenntt--ssccrriipptt To specify
       different  names and/or locations for these files, use the
       --ccff,, --llff,, --ppff and --ssff flags, respectively, followed by the
       name  of  the  file.   This can be particularly useful if,
       for example, //vvaarr//ddbb or //vvaarr//rruunn has not yet been  mounted
       when the DHCP client is started.

       The  DHCP  client normally exits if it isn't able to iden-
       tify any network interfaces to configure.   On laptop com-
       puters  and  other computers with hot-swappable I/O buses,
       it is possible that a broadcast  interface  may  be  added
       after  system  startup.   The --ww flag can be used to cause
       the client not to exit  when  it  doesn't  find  any  such



                                                                3





dhclient(8)                                           dhclient(8)


       interfaces.    The oommsshheellll ((11)) program can then be used to
       notify the client when a network interface has been  added
       or removed, so that the client can attempt to configure an
       IP address on that interface.

       The DHCP client can be directed not to attempt to  config-
       ure  any  interfaces  using  the  --nn  flag.   This is most
       likely to be useful in combination with the --ww flag.

       The client can also be instructed to become a daemon imme-
       diately,  rather  than waiting until it has acquired an IP
       address.   This can be done by supplying the --nnww flag.

CCOONNFFIIGGUURRAATTIIOONN
       The syntax of the dhclient.conf(5) file is discussed sepa-
       rately.

OOMMAAPPII
       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 automati-
       cally.   Dhcpctl and OMAPI are  documented  in  ddhhccppccttll((33))
       and  oommaappii((33)).    Most  things  you'd  want to do with the
       client can be done directly using the oommsshheellll((11))  command,
       rather than having to write a special program.

TTHHEE CCOONNTTRROOLL OOBBJJEECCTT
       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.




                                                                4





dhclient(8)                                           dhclient(8)


FFIILLEESS
       //uussrr//llooccaall//ssbbiinn//ddhhcclliieenntt--ssccrriipptt,,       //eettcc//ddhhcclliieenntt..ccoonnff,,
       //vvaarr//ddbb//ddhhcclliieenntt..lleeaasseess,,            //vvaarr//rruunn//ddhhcclliieenntt..ppiidd,,
       //vvaarr//ddbb//ddhhcclliieenntt..lleeaasseess~~..

SSEEEE AALLSSOO
       dhcpd(8),         dhcrelay(8),         dhclient-script(8),
       dhclient.conf(5), dhclient.leases(5), dhcp-eval(5).

AAUUTTHHOORR
       ddhhcclliieenntt((88))  has been written for Internet Systems Consor-
       tium by Ted Lemon in cooperation with  Vixie  Enterprises.
       To  learn  more  about  Internet  Systems  Consortium, see
       hhttttppss::////wwwwww..iisscc..oorrgg To learn more about Vixie Enterprises,
       see hhttttpp::////wwwwww..vviixx..ccoomm..

       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 enhance-
       ments, 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 oper-
       ating  systems  - instead, the shell script can invoke the
       native tools to accomplish the same purpose.



























                                                                5


