The term "client" is sometimes used to refer to a physical machine that is performing a client role on the network. However, the DHCP client described here is a software entity. The Solaris DHCP client is a daemon (dhcpagent) that runs in the Solaris operating environment on a machine that is configured to receive its network configuration from a DHCP server. DHCP clients from other vendors can also use the services of the Solaris DHCP server. However, this section describes only the Solaris DHCP client.
Notice that the description assumes one network interface. The section "DHCP Clients With Multiple Network Interfaces" discusses issues important for hosts having two or more network interfaces.
The Solaris DHCP client is installed and enabled on a system during installation of the Solaris operating environment when you specify that you want to use DHCP to configure network interfaces. There is nothing further you need to do on the Solaris client to use DHCP.
If you want a machine that is already running the Solaris environment to use DHCP to configure network interfaces, see "Configuring and Unconfiguring a Solaris DHCP Client".
The dhcpagent daemon obtains configuration information that is needed by other processes involved in booting the system. For this reason, dhcpagent is started early in the boot process by the system startup scripts; booting is suspended until the network configuration information is obtained.
The presence of the file /etc/dhcp.interface (for example, /etc/dhcp.hme0 on a Sun Enterprise UltraTM machine) indicates to the startup scripts that DHCP is to be used on the specified interface. Upon finding a dhcp.interface file, the startup scripts start the dhcpagent.
After starting up, dhcpagent waits until it receives instructions to configure a network interface. The startup scripts issue the ifconfig interface dhcp startcommand, which instructs dhcpagent to start DHCP as described in "How DHCP Works". If commands are contained within the dhcp.interface file, they are appended to the dhcp start option of ifconfig. See theifconfig(1M) man page for more information about options used with dhcp.
After the information packet is obtained from a DHCP server, dhcpagent configures the network interface and brings it up, controlling the interface for the duration of the lease time for the IP address. dhcpagent maintains the configuration data in an internal table held in memory. The system startup scripts use the dhcpinfo command to extract configuration option values from the dhcpagent's table. The values are used in configuring the system and becoming part of the network.
The agent waits passively until a set period of time elapses, usually half the lease time, and then requests an extension of the lease from a DHCP server. If dhcpagent finds that the interface is down or the IP address has changed, it does not control the interface until it is instructed by ifconfig to do so. If dhcpagent finds that the interface is up and the IP address hasn't changed, it sends a request to the server for a lease renewal. If the lease cannot be renewed, dhcpagent takes the interface down at the end of the lease time.
The Solaris DHCP client does not need to be managed under normal system operation. It automatically starts when the system boots, renegotiates leases, and stops when the system shuts down. You cannot manually start and stop the dhcpagent daemon. However, you can use the ifconfig command as superuser on the client machine to affect the client's management of the network interface if necessary.
The ifconfig command lets you:
Start the DHCP client- The command ifconfig interface dhcp start initiates the interaction between the DHCP client and DHCP server for the purpose of obtaining an IP address and a new set of configuration options. This might be useful when you change options on the server, such as adding IP addresses or changing the subnet mask, that you want clients to use immediately.
Request network configuration information only - The command ifconfig interface dhcp inform causes dhcpagent to issue a request for network configuration parameters, with the exception of the IP address. This is useful for situations where the network interface has a valid IP address, but the client system needs updated network options. For example, this might be useful if you do not use DHCP to manage IP addresses, but do use it for configuring hosts on the network.
Request a lease extension - The command ifconfig interface dhcp extend causes dhcpagent to issue a request to renew the lease. This happens automatically, but you might want to use this if you change the lease time and want clients to use the new lease time immediately rather than waiting for the next attempt at lease renewal.
Release the IP address - The command ifconfig interface dhcp release causes dhcpagent to relinquish the IP address being used by the network interface. This happens automatically when the lease expires. You might want to issue this command if the lease time is long and you need to take down the network interface for an extended period of time or you are removing the system from the network.
Drop the IP address - The command ifconfig interface dhcp drop causes dhcpagent to take down the network interface without informing the DHCP server that it is doing so. This enables the client to use the same IP address when it reboots.
Ping the network interface - The command ifconfig interface dhcp ping lets you test to see if the interface is under the control of DHCP.
View DHCP configuration status of the network interface - The command ifconfig interface dhcp status displays the current state of the DHCP client. The display includes information about whether an IP address has been bound to the client; the number of requests sent, received, and declined; flags indicating whether this is the primary interface; and times indicating when the lease was obtained, expires, and when attempts to renew it will/did start. For example::
# ifconfig hme0 dhcp status Interface State Sent Recv Declined Flags hme0 BOUND 1 1 0 [PRIMARY] (Began, Expires, Renew) = (07/15/1999 15:27, 07/17/1999 13:31, 07/16/1999 15:24) |
The file /etc/default/dhcpagent on the client system contains tunable parameters for dhcpagent. You can use a text editor to change several parameters that affect client operation. The file is well-documented so please refer to the file for more information about the parameters.
When the system running the DHCP client shuts down normally, the dhcpagent daemon writes the current configuration information to the file /etc/dhcp/interface.dhc. The lease is dropped rather than released, so the DHCP server does not know that the IP address is not in active use.
If the lease is still valid when the system is rebooted, the DHCP client sends an abbreviated request to use the same IP address and network configuration information it had used before the system was rebooted. If the DHCP server permits this, the client can use the information that it wrote to disk when the system shut down. If the server does not permit using the information, the client initiates the DHCP protocol sequence described previously and obtains new network configuration information.
The DHCP client daemon can manage several different interfaces on one system simultaneously, each with its own IP address and lease time. If more than one network interface is configured for DHCP, the client issues separate requests to configure them and maintains a separate set of network configuration options for each interface. However, although the parameters are stored separately, some of the parameters are global in nature, applying to the system as a whole, rather than to a particular network interface. Options such as hostname, NIS domain name, and timezone are global parameters and should have the same values for each interface, but it might not be the case due to errors in the information entered by the DHCP administrator. To ensure that there is only one answer to a query for a global parameter, only the parameters for the primary network interface are requested. You can insert the word primary in the /etc/dhcp.interface file for the interface you want to be treated as the primary interface.