DHCP Cisco IOS

From Teknologisk videncenter
Jump to: navigation, search
Comment The information in this article is targeted to Cisco CCNA and CCNP curriculum, and not meant as in-depth information on all IOS

See the page DHCP for an explanation of DHCP.

DHCP Server

IOS DHCP Servers service is installed on Cisco Router IOS and most Cisco Switch IOS.


DHCP Server example with fixed options

ip dhcp excluded-address 192.168.22.2 192.168.22.99
ip dhcp excluded-address 192.168.22.200 192.168.22.255
!
ip dhcp pool STUDENTS
  network 192.168.22.0 255.255.255.0
  domain-name tekkom.dk
  default-router 192.168.22.1
  dns-server 192.168.22.223

DHCP Server manual options

To add options which are not preconfigured, use the option flag. See example below. Option 150 adds a TFTP server, which for example are often used by IP Phones. The IP address points to the Call Manager (IP PBX).

ip dhcp excluded-address 172.20.0.1 172.20.0.99
!
ip dhcp pool VINKEL20
   network 172.20.0.0 255.255.255.0
   domain-name tekkom.dk
   default-router 172.20.0.1
   dns-server 172.21.0.201
   option 150 ip 172.21.0.201

Example below often used to LWAPP - Lightweight Access Points. Option 43 the number f104 describes the following as anIP address 0a0a0a0a=10.10.10.10 is the IP address of the WLAN Controller

ip dhcp excluded-address 172.20.0.1 172.20.0.99
!
ip dhcp pool VINKEL20
   network 172.20.0.0 255.255.255.0
   domain-name tekkom.dk
   default-router 172.20.0.1
   dns-server 172.21.0.201
   option 43 hex f1040a0a0a0a

Lease time

  • default lease time 1 day

To set lease time to 8 hours and 30 minutes, use the command lease 0 8 30 (0 days 8 hours and 30 minuttes)

ip dhcp excluded-address 172.20.0.1 172.20.0.99
!
ip dhcp pool VINKEL20
   network 172.20.0.0 255.255.255.0
   domain-name tekkom.dk
   default-router 172.20.0.1
   dns-server 172.21.0.201
   <notice>lease 0 8 30</notice>

DHCP Server often used SHOW commands

Show leased addresses

Mercantec#<input>show ip dhcp binding</input>
IP address       Client-ID/Hardware address	 Lease expiration          Type
192.168.22.100   0063.5972.636f.9da6.            Jan 25 2009 12:30 AM      Automatic
192.168.22.101   0063.6c72.636f.6e38.            Jan 25 2009 12:53 AM      Automatic
192.168.22.108   0063.7e7a.636f.247f.            Jan 25 2009 14:32 AM      Automatic

Show Server statistics

Mercantec#<input>show ip dhcp server statistics</input>
Memory usage         13906
Address pools        1
Database agents      1
Automatic bindings   1
Manual bindings      0
Expired bindings     0
Malformed messages   0

Message              Received
BOOTREQUEST          0
DHCPDISCOVER         1
DHCPREQUEST          1
DHCPDECLINE          0
DHCPRELEASE          0
DHCPINFORM           0

Message              Sent
BOOTREPLY            0
DHCPOFFER            1
DHCPACK              1
DHCPNAK              0


Show imported parameters from DHCP Client

This show command is used to see which DHCP server options that are imported from the Client. For example when connecting to an ISP the DHCP Client receives DNS server IP Addresses, that the inside clients need to use. This information is imported into the DHCP server.

Mercantec#<input>show ip dhcp import</input>
Address Pool Name: Client
Domain Name Server(s): 10.0.0.2
NetBIOS Name Server(s): 10.0.0.2
Domain Name Option: tekkom.dk

Showing the pools

Mercantec#<input>show ip dhcp pool</input>

Pool VINKELVEJ :
 Utilization mark (high/low)    : 100 / 0
 Subnet size (first/next)       : 0 / 0
 Total addresses                : 65534
 Leased addresses               : 0
 Pending event                  : none
 1 subnet is currently in the pool :
 Current index        IP address range                    Leased addresses
 172.20.1.12          172.20.0.1       - 172.20.255.254    0

DHCP Server Debug commands

Decode DHCP server receptions and transmissions

Mercantec#<input>debug ip dhcp server</input>

DHCP Relay

ip helper-address command

When using a Cisco Router as a DHCP Relay you need to set the ip helper-address on the interface which receives the broadcast from the DHCP-client and specify the IP-address of the DHCP Server. See example below. R2 Receives the broadcasts on fastethernet 0/0 and need to transmit the request as a unicast to the DHCP-server R1. Se config examples below.

DHCP Relay example

Example network DHCP Relay


Configuration of R1

hostname R1
! 
ip dhcp excluded-address 192.168.22.1 192.168.22.99
ip dhcp excluded-address 192.168.22.200 192.168.22.255
!
ip dhcp pool STUDENTS
  network 192.168.22.0 255.255.255.0
  domain-name tekkom.dk
  default-router 192.168.22.1
  dns-server 192.168.22.223 
! 
interface fastethernet 0/0
  ip address 172.16.10.1 255.255.255.0


Configuration of R2

hostname R2
!
interface fastethernet 0/0
  ip address 192.168.22.1 255.255.255.0
  ip helper-address 172.16.10.1     
!
interface fastethernet 0/1
  ip address 172.16.10.2 255.255.255.0


More than you really want to know about ip helper-addresses

The ip helper-address command forwards incoming UDP broadcast packets on the interface where the command is specified. default for the following ports

  • Time UDP port 37
  • Tacacs UDP port 49
  • DNS UDP port 53
  • BOOTP server UDP port 67
  • BOOTP client UDP port 68
  • TFTP UDP port 69
  • NetBIOS name service UDP port 137
  • NetBIOS Datagram service UDP port 138

Altering the default helper-address UDP ports

If you want to change the default UDP port forwaring, you can use the ip forward-protocol udp command. The example below will only allow DHCP clients BOOTP port 68 and SYSLOG port 514 to be forwarded.

Mercantec(config)#<input>no ip forward-protocol udp 37</input>
Mercantec(config)#<input>no ip forward-protocol udp 49</input>
Mercantec(config)#<input>no ip forward-protocol udp 53</input>
Mercantec(config)#<input>no ip forward-protocol udp 67</input>
Mercantec(config)#<input>no ip forward-protocol udp 69</input>
Mercantec(config)#<input>no ip forward-protocol udp 137</input>
Mercantec(config)#<input>no ip forward-protocol udp 138</input>
Mercantec(config)#<input>ip forward-protocol udp 514</input>

DHCP Packet types

DHCP Packets (messages)
Packet type Sent by From UDP port to UDP port Description
DHCP Discover Client 68 67 Client looking for available DHCP Servers. It is a UDP broadcast.
DHCP offer Server 67 68 This is a response to the Clients DHCP Discover packet. This is also a UDP broadcast.
DHCP request Client 68 67 This is the clients response to a specific DHCP offer packet.
DHCP decline Server 67 68 Server indicating that IP address already in use. (Perhaps client to slow)
DHCP ack Server 67 68 This message is the posetive response to a client DHCP request. IP address leased by client.
DCHP nack Server 67 68 This message is the negative response to a client DHCP request. IP address lease rejected.
DHCP release Client 68 67 The client relinguishes its IP address and other parameters.
DHCP inform Client 68 67 Using this message the client can optain local configuration parameters such as DNS server IP address, but gain its own IP address else where

DHCP Client

DHCP Client simple example

!
interface FastEthernet0/1
 description Outside: Internet connection to ISP
 ip address dhcp

Checking the DHCP client

To show the leased IP address and the additional options issue the show dhcp lease command. See example below.

FireWall#<input>show dhcp lease</input>
Temp IP addr: 192.168.22.178  for peer on Interface: FastEthernet0/1
Temp  sub net mask: 255.255.255.0
   DHCP Lease server: 192.168.22.73, state: 5 Bound
   DHCP transaction id: 1075
   Lease: 600 secs,  Renewal: 300 secs,  Rebind: 525 secs
Temp default-gateway addr: 192.168.22.73
   Next timer fires after: 00:04:10
   Retry count: 0   Client-ID: cisco-001b.d40f.d813-Fa0/1
   Client-ID hex dump: 636973636F2D303031622E643430662E
                       643831332D4661302F31
   Hostname: FireWall

Releasing a DHCP lease

To release a lease from a DHCP server

FireWall#<input>release dhcp lease fastethernet0/1</input>

Renewing a DHCP lease

To renew a lease from a DHCP server

FireWall#<input>renew dhcp lease fastethernet0/1</input>

Examples with Server and Client

DHCP Client and Server with NAT/PAT example

ip dhcp excluded-address 192.168.22.1 192.168.22.99
ip dhcp excluded-address 192.168.22.200 192.168.22.255
!
ip dhcp pool HETH
   network 192.168.22.0 255.255.255.0
   domain-name tekkom.dk
   default-router 192.168.22.1
   dns-server 192.168.22.223
!
interface FastEthernet0/0
 description Inside. Internal LAN
 ip address 192.168.22.1 255.255.255.0
 ip nat inside
!
interface FastEthernet0/1
  description Outside: Internet connection to ISP
 ip address dhcp
 ip nat outside
!
ip nat inside source list 1 interface FastEthernet0/1 overload
!
access-list 1 remark Permit traffic from RFC1918 private net
access-list 1 permit 10.0.0.0 0.255.255.255
access-list 1 permit 172.16.0.0 0.15.255.255
access-list 1 permit 192.168.0.0 0.0.255.255

DHCP Client and Server with NAT/PAT example and import

This example show a typical configuration of a small Internet gateway, which imports the IP-addresses of for example the DNS servers from the ISP.

ip dhcp excluded-address 192.168.22.1 192.168.22.99
ip dhcp excluded-address 192.168.22.200 192.168.22.255
!
ip dhcp pool HETH
   network 192.168.22.0 255.255.255.0
   default-router 192.168.22.1
   import all
!
interface FastEthernet0/0
 description Inside: Internal LAN
 ip address 192.168.22.1 255.255.255.0
 ip nat inside
!
interface FastEthernet0/1
  description Outside: Internet connection to ISP
 ip address dhcp
 ip nat outside
!
ip nat inside source list 1 interface FastEthernet0/1 overload
!
access-list 1 remark Permit traffic from RFC1918 private net
access-list 1 permit 10.0.0.0 0.255.255.255
access-list 1 permit 172.16.0.0 0.15.255.255
access-list 1 permit 192.168.0.0 0.0.255.255


Troubleshooting DHCP

Is the DHCP server running

Show ip socket - shows active UDP sockets on a router. Notice below the Router is listing to UDP port 67.

R1#<input>sh ip socket</input>
Proto    Remote      Port      Local       Port  In Out Stat TTY OutputIF
 17 172.16.4.84       162 192.168.159.1   57390   0   0    0   0
 17   --listen--          172.16.4.20      1975   0   0   11   0
 17 172.16.4.20     54042 172.16.4.20      2228   0   0  211   0
 <notice>17</notice> 0.0.0.0             0 172.16.4.20        <notice>67</notice>   0   0 2211   0
 17   --listen--          172.16.4.20       123   0   0    1   0
 17 172.16.4.88     51407 172.16.4.20       161   0   0    1   0
 17   --listen--          172.16.4.20       162   0   0   11   0
 17   --listen--          172.16.4.20     54159   0   0   11   0
 17   --listen--          224.0.1.40        496   0   0   61   0

In the example above protocol 17 (UDP) is listening on port 67 (bootp).

Start DHCP service

R1(config)#<input>service dhcp</input>
R1(config)#<input>^Z</input>

R1#<input>sh ip sockets</input>
Proto    Remote      Port      Local       Port  In Out Stat TTY OutputIF
 17 0.0.0.0             0 10.10.10.1         67   0   0 2211   0
R1#