DHCP Static Mapping

DHCP Static Mapping

Problem

You want to enable the assignment of static IP addresses from a text file.

Solution

To enable the assignment of static IP addresses from a text file, first you must create a static DHCP mapping file on your TFTP server:

Freebsd% cat /tftpboot/dhcp.static
*time* Aug 17 2006 03:52 PM

*version* 2

!IP address Type Hardware address Lease expiration

10.1.1.16 /24 id 0100.104b.33da.74 Infinite
10.1.1.17 /24 id 0100.0dbc.eff6.38 Infinite
10.1.1.18 /24 id 0100.0a5e.4001.27 Infinite
10.1.1.19 /24 id 0100.0331.327e.41 Infinite
10.1.1.20 /24 id 0100.0d60.b21a.4c Infinite

*end*
Freebsd%

To enable the router to read the static text file from the TFTP server, use the origin file command:

Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool OREILLY
Router1(dhcp-config)#origin file tftp://172.25.1.1/dhcp.static
Router1(dhcp-config)#default-router 10.1.1.1
Router1(dhcp-config)#dns-server 172.25.1.1 172.25.1.3
Router1(dhcp-config)#domain-name oreilly.com
Router1(dhcp-config)#lease 3
Router1(dhcp-config)#end
Router1#

Discussion

As demonstrated in Recipe 20.7, we can statically bind IP addresses to hardware addresses; however, doing so requires a dedicated DHCP pool, and more importantly, many lines of configuration. For instance, the following is a sample configuration for a single statically mapped IP address:

Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool IAN
Router1(dhcp-config)#host 172.25.1.33 255.255.255.0
Router1(dhcp-config)#client-identifier 0100.0103.85e9.87
Router1(dhcp-config)#default-router 172.25.1.1
Router1(dhcp-config)#domain-name oreilly.com
Router1(dhcp-config)#dns-server 172.25.1.1
Router1(dhcp-config)#end
Router1#

While this method of assigning static IP addresses is useful for sites with a few required static addresses, it doesn't scale well when you need to assign a large number of them. Building a new DHCP pool per static address not only consumes NVRAM space, but also clutters the router configuration file.

Beginning with IOS Version 12.3(11)T, Cisco supports the ability to assign static IP address via text files. To begin, you must first create the static mapping text file on your TFTP server. There is no limit to the number of static entries you can add to the file; however, the file must follow a certain format. The following is an example text file:

Freebsd% cat /tftpboot/dhcp.static
*time* Aug 17 2006 03:52 PM

*version* 2

!IP address Type Hardware address Lease expiration

10.1.1.16 /24 id 0100.104b.33da.74 Infinite
10.1.1.17 /24 id 0100.0dbc.eff6.38 Infinite
10.1.1.18 /24 id 0100.0a5e.4001.27 Infinite
10.1.1.19 /24 id 0100.0331.327e.41 Infinite
10.1.1.20 /24 id 0100.0d60.b21a.4c Infinite

*end*
Freebsd%

The file must contain the following elements:

  • Time the file was created

  • Database version number

  • IP address, including mask (must have a space before the mask)

  • Hardware type

  • Hardware address

  • Lease expiration

  • End of file designator

For more information regarding the elements of this file, see the Discussion section of Recipe 20.7.

Once you've created the static mapping text file, you can configure the router to read the file by using the origin file command:

Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool OREILLY
Router1(dhcp-config)#origin file tftp://172.25.1.1/dhcp.static
Router1(dhcp-config)#end
Router1#

Use the show ip dhcp binding command to ensure that the static mapping text file loaded correctly:

Router1#show ip dhcp binding 
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
10.1.1.16/24 0100.104b.33da.74 Infinite Static
10.1.1.17/24 0100.0dbc.eff6.38 Infinite Static
10.1.1.18/24 0100.0a5e.4001.27 Infinite Static
10.1.1.19/24 0100.0331.327e.41 Infinite Static
10.1.1.20/24 0100.0d60.b21a.4c Infinite Static
Router1#

You will notice that the static mapping have been loaded from the text file and the router is now ready to assign IP addresses based on the static mapping. If you modify the static mapping text file to add, change, or remove entries, then you need to disabled the DHCP server and start it again by removing the DHCP service. By doing so, the router will TFTP the new static mapping file:

Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#no service dhcp
Router1(config)#service dhcp
Router1(config)#end
Router1#

See Also