Rewriting the Network Prefix
Problem
You want to rewrite all of the addresses in a particular range by simply replacing the prefix with one of equal length.
Solution
Sometimes you need to connect your network to another network that uses an unregistered range, such as 172.16.0.0/16. However, if you already use this range in your network, the easiest thing to do is to simply replace this prefix with another one that doesn't have a conflict, such as 172.17.0.0/16:
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip nat outside source static network 172.16.0.0 172.17.0.0 /16 no-alias Router(config)#ip route 172.16.0.0 255.255.0.0 Ethernet1/0 Router(config)#ip route 172.17.0.0 255.255.0.0 Ethernet1/0 Router(config)#interface FastEthernet 0/0 Router(config-if)#ip address 10.1.1.1 255.255.255.0 Router(config-if)#ip nat inside Router(config-if)#exit Router(config)#interface Ethernet1/0 Router(config-if)#ip address 172.16.1.6 255.255.255.252 Router(config-if)#ip nat outside Router(config-if)#exit Router(config)#end Router#
Discussion
Unlike the previous examples, this recipe shows a very simple static form of NAT that translates addresses by simply replacing one prefix with another. So, for example, the remote host, 172.16.55.19, gets its address rewritten simply as 172.17.55.19.
The router can accomplish this with the following command:
Router(config)#ip nat outside source static network 172.16.0.0 172.17.0.0 /16 no-alias
This defines a static mapping of one network prefix to another, as required.
Note that we have included the no-alias keyword in this command. If we didn't include this keyword, the router would try to generate aliases for the translated addresses to allow it to answer ARP requests for them. This keyword is necessary because one of the router's own interfaces belongs to the translated range.