Troubleshooting DHCP Client Configuration Problems
The problems that you might encounter with a DHCP client fall into
the following categories:
Problems Communicating With the DHCP Server
This section describes problems that you might encounter as you add DHCP
clients to the network.
After you enable the client software and reboot the system, the client
tries to reach the DHCP server to obtain its network configuration. If the
client fails to reach the server, you might see error messages such as
the following:
DHCP or BOOTP server not responding
Before you can determine the problem, you must gather diagnostic information from both
the client and the server. To gather information, you can perform the
following tasks:
How to Run the DHCP Client in Debugging Mode
How to Run the DHCP Server in Debugging Mode
How to Use snoop to Monitor DHCP Network Traffic
You can do these things separately or concurrently.
The information that you gather can help you determine if the problem
is with the client, server, or a relay agent. Then, you can find
a solution.
How to Run the DHCP Client in Debugging Mode
If the client is not a Solaris DHCP client, refer to the
client's documentation for information about how to run the client in debugging mode.
If you have a Solaris DHCP client, use the following steps.
- Become superuser on the DHCP client system.
- Kill the DHCP client daemon.
# pkill -x dhcpagent
- Restart the daemon in debugging mode.
# /sbin/dhcpagent -d1 -f &
The -d switch puts the DHCP client in debugging mode with level 1
verbosity. The -f switch causes output to be sent to the console instead
of to syslog.
- Configure the interface to start DHCP negotiation.
# ifconfig interface dhcp start
Replace interface with the name of the network interface of the client, such
as ge0.
When run in debugging mode, the client daemon displays messages to your screen
while performing DHCP requests. See Output from DHCP Client in Debugging Mode for information about client debugging mode output.
How to Run the DHCP Server in Debugging Mode
- Become superuser on the server system.
- Stop the DHCP server temporarily.
# svcadm disable -t svc:/network/dhcp-server
You can also use DHCP Manager or dhcpconfig to stop the server.
- Restart the daemon in debugging mode.
# /usr/lib/inet/in.dhcpd -d -v
You should also use any in.dhcpd command-line options that you normally use when
you run the daemon. For example, if you run the daemon as
a BOOTP relay agent, include the -r option with the in.dhcpd -d -v command.
When run in debugging mode, the daemon displays messages to your screen while
processing DHCP or BOOTP requests. See Output from the DHCP Server in Debugging Mode for information about server debugging mode
output.
How to Use snoop to Monitor DHCP Network Traffic
- Become superuser on the DHCP server system.
- Start snoop to begin tracing network traffic across the server's network interface.
# /usr/sbin/snoop -d interface -o snoop-output-filename udp port 67 or udp port 68
For example, you might type the following command:
# /usr/sbin/snoop -d hme0 -o /tmp/snoop.output udp port 67 or udp port 68
snoop continues to monitor the interface until you stop snoop by pressing
Control-C after you have the information that you need.
- Boot the client system, or restart the dhcpagent on the client system.
How to Run the DHCP Client in Debugging Mode describes how to restart dhcpagent.
- On the server system, use snoop to display the output file with the
contents of network packets:
# /usr/sbin/snoop -i snoop-output-filename -x0 -v
For example, you might type the following command:
# /usr/sbin/snoop -i /tmp/snoop.output -x0 -v
See Also
See DHCP snoop Output for information about interpreting the output.
Output from DHCP Client in Debugging Mode
The following example shows normal output when a DHCP client in debugging mode
sends its DHCP request and receives its configuration information from a DHCP server.
Example 17-1 Normal Output from the DHCP Client in Debugging Mode
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter)
/sbin/dhcpagent: debug: init_ifs: initted interface hme0
/sbin/dhcpagent: debug: insert_ifs: hme0: sdumax 1500, optmax 1260, hwtype 1, hwlen 6
/sbin/dhcpagent: debug: insert_ifs: inserted interface hme0
/sbin/dhcpagent: debug: register_acknak: registered acknak id 5
/sbin/dhcpagent: debug: unregister_acknak: unregistered acknak id 5
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x26018 (ARP reply filter)
/sbin/dhcpagent: info: setting IP netmask on hme0 to 255.255.192.0
/sbin/dhcpagent: info: setting IP address on hme0 to 10.23.3.233
/sbin/dhcpagent: info: setting broadcast address on hme0 to 10.23.63.255
/sbin/dhcpagent: info: added default router 10.23.0.1 on hme0
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x28054 (blackhole filter)
/sbin/dhcpagent: debug: configure_if: bound ifsp->if_sock_ip_fd
/sbin/dhcpagent: info: hme0 acquired lease, expires Tue Aug 10 16:18:33 2006
/sbin/dhcpagent: info: hme0 begins renewal at Tue Aug 10 15:49:44 2006
/sbin/dhcpagent: info: hme0 begins rebinding at Tue Aug 10 16:11:03 2006
If the client cannot reach the DHCP server, you might see debugging
mode output that is similar to the output shown in the following example.
Example 17-2 Output Indicating a Problem from the DHCP Client in Debugging Mode
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter)
/sbin/dhcpagent: debug: init_ifs: initted interface hme0
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
If you see this message, the client request never reached the server,
or the server cannot send a response to the client. Run snoop on
the server as described in How to Use snoop to Monitor DHCP Network Traffic to determine if packets from the client
have reached the server.
Output from the DHCP Server in Debugging Mode
Normal server debugging mode output shows server configuration information followed by information about
each network interface as the daemon starts. After daemon startup, the debugging mode
output shows information about requests the daemon processes. Example 17-3 shows debugging mode
output for a DHCP server that has just started. The server extends the
lease for a client that is using an address owned by another DHCP
server that is not responding.
Example 17-3 Normal Output for DHCP Server in Debugging Mode
Daemon Version: 3.1
Maximum relay hops: 4
Transaction logging to console enabled.
Run mode is: DHCP Server Mode.
Datastore: nisplus
Path: org_dir.dhcp.test..:dhcp.test..:$
DHCP offer TTL: 10
Ethers compatibility enabled.
BOOTP compatibility enabled.
ICMP validation timeout: 1000 milliseconds, Attempts: 2.
Monitor (0005/hme0) started...
Thread Id: 0005 - Monitoring Interface: hme0 *****
MTU: 1500 Type: DLPI
Broadcast: 10.21.255.255
Netmask: 255.255.0.0
Address: 10.21.0.2
Monitor (0006/nf0) started...
Thread Id: 0006 - Monitoring Interface: nf0 *****
MTU: 4352 Type: DLPI
Broadcast: 10.22.255.255
Netmask: 255.255.0.0
Address: 10.22.0.1
Monitor (0007/qfe0) started...
Thread Id: 0007 - Monitoring Interface: qfe0 *****
MTU: 1500 Type: DLPI
Broadcast: 10.23.63.255
Netmask: 255.255.192.0
Address: 10.23.0.1
Read 33 entries from DHCP macro database on Tue Aug 10 15:10:27 2006
Datagram received on network device: qfe0
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4
Datagram received on network device: qfe0
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4
Datagram received on network device: qfe0
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4
Datagram received on network device: qfe0
Client: 0800201DBA3A maps to IP: 10.23.3.233
Unicasting datagram to 10.23.3.233 address.
Adding ARP entry: 10.23.3.233 == 0800201DBA3A
DHCP EXTEND 0934312543 0934316143 10.23.3.233 10.21.0.2
0800201DBA3A SUNW.Ultra-5_10 0800201DBA3A
Example 17-4 shows debugging mode output from a DHCP daemon that starts as a
BOOTP relay agent. The agent relays requests from a client to a DHCP
server, and relays the server's responses to the client.
Example 17-4 Normal Output from BOOTP Relay in Debugging Mode
Relay destination: 10.21.0.4 (blue-servr2) network: 10.21.0.0
Daemon Version: 3.1
Maximum relay hops: 4
Transaction logging to console enabled.
Run mode is: Relay Agent Mode.
Monitor (0005/hme0) started...
Thread Id: 0005 - Monitoring Interface: hme0 *****
MTU: 1500 Type: DLPI
Broadcast: 10.21.255.255
Netmask: 255.255.0.0
Address: 10.21.0.2
Monitor (0006/nf0) started...
Thread Id: 0006 - Monitoring Interface: nf0 *****
MTU: 4352 Type: DLPI
Broadcast: 10.22.255.255
Netmask: 255.255.0.0
Address: 10.22.0.1
Monitor (0007/qfe0) started...
Thread Id: 0007 - Monitoring Interface: qfe0 *****
MTU: 1500 Type: DLPI
Broadcast: 10.23.63.255
Netmask: 255.255.192.0
Address: 10.23.0.1
Relaying request 0800201DBA3A to 10.21.0.4, server port.
BOOTP RELAY-SRVR 0934297685 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A
N/A 0800201DBA3A
Packet received from relay agent: 10.23.0.1
Relaying reply to client 0800201DBA3A
Unicasting datagram to 10.23.3.233 address.
Adding ARP entry: 10.23.3.233 == 0800201DBA3A
BOOTP RELAY-CLNT 0934297688 0000000000 10.23.0.1 10.23.3.233 0800201DBA3A
N/A 0800201DBA3A
Relaying request 0800201DBA3A to 10.21.0.4, server port.
BOOTP RELAY-SRVR 0934297689 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A
N/A 0800201DBA3A
Packet received from relay agent: 10.23.0.1
Relaying reply to client 0800201DBA3A
Unicasting datagram to 10.23.3.233 address.
Adding ARP entry: 10.23.3.233 == 0800201DBA3A
If there is a problem with DHCP, the debugging mode output might
display warnings or error messages. Use the following list of DHCP server error
messages to find solutions.
ICMP ECHO reply to OFFER candidate: ip_address disabling
Cause:
Before the DHCP server offers an IP address to a client, the server
pings the address to verify that the address is not in use.
If a client replies, the address is in use.
Solution:
Make sure the addresses that you configured are not already in use. You
can use the ping command. See the ping(1M) man page for more
information.
No more IP addresses on network-address network.
Cause:
No IP addresses are available in the DHCP network table associated with the
client's network.
Solution:
Create more IP addresses with DHCP Manager or the pntadm command. If
the DHCP daemon is monitoring multiple subnets, be sure the additional addresses are
for the subnet where the client is located. See Adding IP Addresses to the DHCP Service for more information.
No more IP addresses for network-address network when you are running the DHCP
daemon in BOOTP compatibility mode.
Cause:
BOOTP does not use a lease time, so the DHCP server looks for
free addresses with the BOOTP flag set to allocate to BOOTP clients.
Solution:
Use DHCP Manager to allocate BOOTP addresses. See Supporting BOOTP Clients With the DHCP Service (Task Map).
Request to access nonexistent per network database: database-name in datastore: datastore.
Cause:
During configuration of the DHCP server, a DHCP network table for a subnet
was not created.
Solution:
Use DHCP Manager or the pntadm command to create the DHCP network table
and new IP addresses. See Adding DHCP Networks.
There is no table-name dhcp-network table for DHCP client's network.
Cause:
During configuration of the DHCP server, a DHCP network table for a subnet
was not created.
Solution:
Use DHCP Manager or the pntadm command to create the DHCP network table
and new IP addresses. See Adding DHCP Networks.
Client using non_RFC1048 BOOTP cookie.
Cause:
A device on the network is trying to access an unsupported implementation of
BOOTP.
Solution:
Ignore this message, unless you need to configure this device. If you want
to support the device, see Supporting BOOTP Clients With the DHCP Service (Task Map) for more information.
DHCP snoop Output
In the snoop output, you should see that packets are exchanged between the
DHCP client system and the DHCP server system. The IP address for
each system is indicated in each packet. IP addresses for any routers or
relay agents in the packet's path are also included. If the systems do
not exchange packets, the client system might not be able to contact the
server system at all. The problem is then at a lower level.
To evaluate snoop output, you must know what the expected behavior is. For
example, you must know if the request should be going through a
BOOTP relay agent. You must also know the MAC addresses and the IP
address of the systems involved so that you can determine if those values
are as expected. If there is more than one network interface, you must
know the addresses of the network interfaces as well.
The following example shows normal snoop output for a DHCP acknowledgement message sent
from the DHCP server on blue-servr2 to a client whose MAC address is
8:0:20:8e:f3:7e. In the message, the server assigns the client the IP address 192.168.252.6
and the host name white-6. The message also includes a number of standard network
options and several vendor-specific options for the client.
Example 17-5 Sample
snoop Output for One Packet
ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 26 arrived at 14:43:19.14
ETHER: Packet size = 540 bytes
ETHER: Destination = 8:0:20:8e:f3:7e, Sun
ETHER: Source = 8:0:20:1e:31:c1, Sun
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: Total length = 526 bytes
IP: Identification = 64667
IP: Flags = 0x4 IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 254 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 157a
IP: Source address = 10.21.0.4, blue-servr2
IP: Destination address = 192.168.252.6, white-6
IP: No options
IP: UDP: ----- UDP Header -----
UDP:
UDP: Source port = 67
UDP: Destination port = 68 (BOOTPC)
UDP: Length = 506
UDP: Checksum = 5D4C
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) = 1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x2e210f17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 192.168.252.6
DHCP: Next server address (siaddr) = 10.21.0.2
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 08:00:20:11:E0:1B
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPACK
DHCP: DHCP Server Identifier = 10.21.0.4
DHCP: Subnet Mask = 255.255.255.0
DHCP: Router at = 192.168.252.1
DHCP: Broadcast Address = 192.168.252.255
DHCP: NISPLUS Domainname = dhcp.test
DHCP: IP Address Lease Time = 3600 seconds
DHCP: UTC Time Offset = -14400 seconds
DHCP: RFC868 Time Servers at = 10.21.0.4
DHCP: DNS Domain Name = sem.example.com
DHCP: DNS Servers at = 10.21.0.1
DHCP: Client Hostname = white-6
DHCP: Vendor-specific Options (166 total octets):
DHCP: (02) 04 octets 0x8194AE1B (unprintable)
DHCP: (03) 08 octets "pacific"
DHCP: (10) 04 octets 0x8194AE1B (unprintable)
DHCP: (11) 08 octets "pacific"
DHCP: (15) 05 octets "xterm"
DHCP: (04) 53 octets "/export/s2/base.s2s/latest/Solaris_8/Tools/Boot"
DHCP: (12) 32 octets "/export/s2/base.s2s/latest"
DHCP: (07) 27 octets "/platform/sun4u/kernel/unix"
DHCP: (08) 07 octets "EST5EDT"
0: 0800 208e f37e 0800 201e 31c1 0800 4500 .. .ó~.. .1...E.
16: 020e fc9b 4000 fe11 157a ac15 0004 c0a8 [email protected]......
32: fc06 0043 0044 01fa 5d4c 0201 0600 2e21 ...C.D..]L.....!
48: 0f17 0000 0000 0000 0000 c0a8 fc06 ac15 ................
64: 0002 0000 0000 0800 2011 e01b 0000 0000 ........ .......
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 6382 5363 3501 0536 04ac ......c.Sc5..6..
288: 1500 0401 04ff ffff 0003 04c0 a8fc 011c ................
304: 04c0 a8fc ff40 0964 6863 702e 7465 7374 [email protected]
320: 3304 0000 0e10 0204 ffff c7c0 0404 ac15 3...............
336: 0004 0f10 736e 742e 6561 7374 2e73 756e ....sem.example.
352: 2e63 6f6d 0604 ac15 0001 0c07 7768 6974 com.........whit
368: 652d 362b a602 0481 94ae 1b03 0861 746c e-6+.........pac
384: 616e 7469 630a 0481 94ae 1b0b 0861 746c ific.........pac
400: 616e 7469 630f 0578 7465 726d 0435 2f65 ific...xterm.5/e
416: 7870 6f72 742f 7332 382f 6261 7365 2e73 xport/sx2/bcvf.s
432: 3238 735f 776f 732f 6c61 7465 7374 2f53 2xs_btf/latest/S
448: 6f6c 6172 6973 5f38 2f54 6f6f 6c73 2f42 olaris_x/Tools/B
464: 6f6f 740c 202f 6578 706f 7274 2f73 3238 oot. /export/s2x
480: 2f62 6173 652e 7332 3873 5f77 6f73 2f6c /bcvf.s2xs_btf/l
496: 6174 6573 7407 1b2f 706c 6174 666f 726d atest../platform
512: 2f73 756e 346d 2f6b 6572 6e65 6c2f 756e /sun4u/kernel/un
528: 6978 0807 4553 5435 4544 54ff ix..EST5EDT.
Problems With Inaccurate DHCP Configuration Information
If a DHCP client receives inaccurate information in its network configuration information, look
at the DHCP server data. You must examine the option values in
the macros that the DHCP server processes for this client. Examples of
inaccurate information might be the wrong NIS domain name or router IP address.
Use the following general guidelines to help you determine the source of
the inaccurate information:
Problems With the DHCP Client-Supplied Host Name
This section describes problems that you might experience with DHCP clients that supply
their own host names to be registered with DNS.
DHCP Client Does Not Request a Host Name
If your client is not a Solaris DHCP client, consult the client's
documentation to determine how to configure the client to request a host name.
For Solaris DHCP clients, see How to Enable a Solaris Client to Request a Specific Host Name.
DHCP Client Does Not Get Requested Host Name
The following list includes describes possible problems a client might have in getting
its requested hostname, and suggested solutions.
Problem: Client accepted an offer from a DHCP server that does not issue
DNS updates.
Solution: If two DHCP servers are available to the client, the servers should both
be configured to provide DNS updates. See Enabling Dynamic DNS Updates by a DHCP Server for information about configuring the
DHCP server and the DNS server.
To determine whether the DHCP server is configured to provide DNS updates:
Determine the IP address of the client's DHCP server. On the client system, use snoop or another application for capturing network packets. See How to Use snoop to Monitor DHCP Network Traffic, and perform the procedure on the client instead of the server. In the snoop output, look for the DHCP Server Identifier to get the IP address of the server.
Log in to the DHCP server system to verify that the system is configured to make DNS updates. Type the following command as superuser:
dhcpconfig -P
If UPDATE_TIMEOUT is listed as a server parameter, the DHCP server is configured to make DNS updates.
On the DNS server, look at the /etc/named.conf file. Find the allow-update keyword in the zone section of the appropriate domain. If the server allows DNS updates by the DHCP server, the DHCP server's IP address is listed in the allow-update keyword.
Problem: Client is using FQDN option to specify host name. Solaris DHCP does not
currently support the FQDN option because the option is not officially in the
DHCP protocol.
Solution: On the server, use snoop or another application for capturing network packets. See
How to Use snoop to Monitor DHCP Network Traffic. In the snoop output, look for the FQDN option in a packet
from the client.
Configure the client to specify host name using Hostname option. Hostname is
option code 12. Refer to client documentation for instructions.
For a Solaris client, see How to Enable a Solaris Client to Request a Specific Host Name
Problem: DHCP server that makes an address offer to the client does
not know the client's DNS domain.
Solution: On the DHCP server look for the DNSdmain option with a valid value.
Set the DNSdmain option to the correct DNS domain name in a macro
that is processed for this client. DNSdmain is usually contained in the network
macro. See Modifying DHCP Macros for information about changing values of options in a
macro.
Problem: The host name requested by client corresponds to an IP address that is
not managed by the DHCP server. The Solaris DHCP server does not
perform DNS updates for IP addresses that the server does not manage.
Solution: Check syslog for one of the following messages from the DHCP server:
There is no n.n.n.n dhcp-network table for DHCP client's network.
DHCP network record for n.n.n.n is unavailable, ignoring request.
Configure the client to request a different name. See How to Enable a Solaris Client to Request a Specific Host Name. Choose a
name that is mapped to an address managed by the DHCP server. You
can see address mappings in DHCP Manager's Addresses tab. Alternatively, choose an address
that is not mapped to any IP address.
Problem: The host name requested by client corresponds to an IP address that is
currently not available for use. The address might be in use, leased
to another client, or under offer to another client.
Solution: Check syslog for the following message from the DHCP server: ICMP ECHO reply to OFFER candidate: n.n.n.n.
Configure the client to choose a name corresponding to a different IP address.
Alternatively, reclaim the address from the client that uses the address.
Problem: DNS server is not configured to accept updates from the DHCP server.
Solution: Examine the /etc/named.conf file on the DNS server. Look for the DHCP server's
IP address with the allow-update keyword in the appropriate zone section for the
DHCP server's domain. If the IP address is not present, the DNS server
is not configured to accept updates from the DHCP server.
See How to Enable Dynamic DNS Updating for DHCP Clients for information about configuring the DNS server.
If the DHCP server has multiple interfaces, you might need to configure the
DNS server to accept updates from all of the DHCP server's addresses. Enable
debugging on the DNS server to see whether the updates are reaching
the DNS server. If the DNS server received update requests, examine the debugging
mode output to determine why the updates did not occur. See the in.named.1M man
page for information about DNS debugging mode.
Problem: DNS updates might not have completed in the allotted time. DHCP servers do
not return host names to clients if the DNS updates have not
completed by the configured time limit. However, attempts to complete the DNS
updates continue.
Solution: Use the nslookup command to determine whether the updates completed successfully. See the
nslookup(1M) man page.
For example, suppose the DNS domain is hills.example.org, and the DNS server's
IP address is 10.76.178.11. The host name that the client wants to register
is cathedral. You could use the following command to determine if cathedral has
been registered with that DNS server:
nslookup cathedral.hills.example.org 10.76.178.11
If the updates completed successfully, but not in the allotted time, you need
to increase the time out value. See How to Enable Dynamic DNS Updating for DHCP Clients. In this procedure, you should
increase the number of seconds to wait for a response from the
DNS server before timing out.