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
Recipe 20.7