I am not going to get into a long discussion of DHCP. I run the DNS/DHCP servers at work and have a pretty good idea of how it all works. Even though the basics are the same, BIND is a different animal than IOS.
The DCHP process from debug messages
–> DHCPD: DHCPDISCOVER received from client
<– DHCPD: Sending DHCPOFFER to client
–> DHCPD: DHCPREQUEST received from client
<– DHCPD: Sending DHCPACK to client
And the actual debug output.
R4#debug ip dhcp server packet DHCP server packet debugging is on. R4# *Apr 28 22:51:33.407: DHCPD: DHCPDISCOVER received from client 0063.6973.636f.2d30.3030.342e.6464.3639.2e66.6430.312d.4661.302f.30 through relay 10.2.1.1. *Apr 28 22:51:33.407: DHCPD: Allocate an address without class information (10.2.1.0) R4# *Apr 28 22:51:35.407: DHCPD: Sending DHCPOFFER to client 0063.6973.636f.2d30.3030.342e.6464.3639.2e66.6430.312d.4661.302f.30 (10.2.1.7). *Apr 28 22:51:35.407: DHCPD: unicasting BOOTREPLY for client 0004.dd69.fd01 to relay 10.2.1.1. *Apr 28 22:51:35.411: DHCPD: DHCPREQUEST received from client 0063.6973.636f.2d30.3030.342e.6464.3639.2e66.6430.312d.4661.302f.30. *Apr 28 22:51:35.411: DHCPD: No default domain to append - abort update *Apr 28 22:51:35.411: DHCPD: Sending DHCPACK to client 0063.6973.636f.2d30.3030.342e.6464.3639.2e66.6430.312d.4661.302f.30 (10.2.1.7). *Apr 28 22:51:35.411: DHCPD: unicasting BOOTREPLY for client 0004.dd69.fd01 to relay 10.2.1.1.
DHCP Message Table
Message | Use |
DHCPDISCOVER | Host is querying available servers, sent to broadcast address 255.255.255.255 on UDP port 67. |
DHCPOFFER | Server responds on UDP port 68. |
DHCPREQUEST | Client broadcasts to a specific DHCP server requesting the offered parameters from that server |
DHCPDECLINE | Message sent from the client to the server that the address is already in use. |
DHCPACK | The server sends configuration parameters including network address to a client. |
DHCPNAK | The server sends a refusal to the client for request for configuration. |
DHCPRELEASE | Client tells a server it is giving up an address and the remaining lease. |
DHCPINFORM | A client already has an IP address but is requesting other configuration paramets that the DHCP server is configured to deliver such as DNS or Winbind addresses. |
IOS DHCP Server Configuration
The lease command is in days. Also, the excluded-address field can be a range low to high, for instance the snippet below will exclude the range of .1 to .50 on the 10.2.1.x subnet.
ip dhcp excluded-address 10.2.1.1 10.2.1.50
DHCP Server configuration:
no ip dhcp use vrf connected ip dhcp excluded-address 10.2.1.1 ip dhcp excluded-address 10.2.1.2 ip dhcp excluded-address 10.2.1.254 ! ip dhcp pool vlan10 network 10.2.1.0 255.255.255.0 default-router 10.2.1.1 lease 5
DHCP Helper Address
DHCP uses broadcast address because the client does not have an IP address with which to communicate. Routers do not forward broadcasts, therefore routers need to set up to forward DHCP traffic, the IP helper-address command also forwards the following protocols:
TFTP
Domain Name System (DNS)
Internet Time Service (ITS)
NetBIOS name server
NetBIOS datagram server
BootP
TACACS
interface Vlan10 ip address 10.2.1.1 255.255.255.0 ip helper-address 10.1.4.5
An IOS router as a DHCP client:
interface FastEthernet0/0 ip address dhcp
DHCP Troubleshooting
show ip dhcp conflict
show ip dhcp binding
R4#sh ip dhcp binding Bindings from all pools not associated with VRF: IP address Client-ID/ Lease expiration Type Hardware address/ User name 10.2.1.5 0063.6973.636f.2d30. May 06 2010 11:16 AM Automatic 3064.302e.6262.6566. 2e36.3463.312d.4661. 302f.30 10.2.1.8 0063.6973.636f.2d30. May 07 2010 07:09 PM Automatic 3030.342e.6464.3639. 2e66.6430.312d.4661. 302f.30
clear ip dhcp binding *
This is not necessarily the best command to run on a production router because you clear the addresses the router knows it has given out.
clear ip dhcp conflict *
debug ip dhcp server packet
See the listing above.
debug ip dhcp server events
R4#debug ip dhcp server events DHCP server event debugging is on. R4# *May 2 19:07:21.660: DHCPD: checking for expired leases. R4# *May 2 19:07:59.764: DHCPD: Sending notification of TERMINATION: *May 2 19:07:59.764: DHCPD: address 10.2.1.7 mask 255.255.255.0 *May 2 19:07:59.764: DHCPD: reason flags: RELEASE *May 2 19:07:59.764: DHCPD: htype 1 chaddr 0004.dd69.fd01 *May 2 19:07:59.764: DHCPD: lease time remaining (secs) = 315841 *May 2 19:07:59.764: DHCPD: returned 10.2.1.7 to address pool vlan10. R4# *May 2 19:09:04.224: DHCPD: Sending notification of DISCOVER: *May 2 19:09:04.224: DHCPD: htype 1 chaddr 0004.dd69.fd01 *May 2 19:09:04.224: DHCPD: remote id 020a00000a01040500000000 *May 2 19:09:04.224: DHCPD: circuit id 00000000 *May 2 19:09:04.224: DHCPD: Seeing if there is an internally specified pool class: *May 2 19:09:04.224: DHCPD: htype 1 chaddr 0004.dd69.fd01 *May 2 19:09:04.224: DHCPD: remote id 020a00000a01040500000000 *May 2 19:09:04.224: DHCPD: circuit id 00000000 R4# *May 2 19:09:06.224: DHCPD: Adding binding to radix tree (10.2.1.8) *May 2 19:09:06.224: DHCPD: Adding binding to hash tree *May 2 19:09:06.224: DHCPD: assigned IP address 10.2.1.8 to client 0063.6973.636f.2d30.3030.342e.6464.3639.2e66.6430.312d.4661.302f.30. *May 2 19:09:06.228: DHCPD: Sending notification of ASSIGNMENT: *May 2 19:09:06.228: DHCPD: address 10.2.1.8 mask 255.255.255.0 *May 2 19:09:06.228: DHCPD: htype 1 chaddr 0004.dd69.fd01 *May 2 19:09:06.228: DHCPD: lease time remaining (secs) = 432000 R4# *May 2 19:09:21.660: DHCPD: checking for expired leases.
sh ip dhcp pool
R4#sh ip dhcp pool Pool vlan10 : Utilization mark (high/low) : 100 / 0 Subnet size (first/next) : 0 / 0 Total addresses : 254 Leased addresses : 1 Pending event : none 1 subnet is currently in the pool : Current index IP address range Leased addresses 10.2.1.10 10.2.1.1 - 10.2.1.254 1
Additional Source:
Document ID: 27470