Introduction
This document describes how to implement Static NAT-PT on Cisco IOS® devices through an example configuration. In this example, IPv6 network nodes communicate with IPv4 network nodes through a static mapping between an IPv6 prefix and an IPv4 address. This static mapping is configured on the Network Address Translation - Protocol Translation (NAT-PT) router.
The NAT-PT feature is an IPv6-to-IPv4 translation mechanism that allows IPv6-only devices to communicate with IPv4-only devices and vice versa. Similarly to traditional IPv4 NAT, NAT-PT allows for static, dynamic, and port address translation (PAT) operations to facilitate direct communication between IPv6-only networks and IPv4-only networks.
Prerequisites
Requirements
Cisco recommends that you have knowledge of these topics:
-
Basic knowledge of NAT concepts and operations.
-
Basic knowledge of IPv6 Addressing Scheme
-
Basic knowledge of IPv6 Static Routing
Note: NAT-PT has been deemed deprecated by IETF because of its tight coupling with Domain Name System (DNS) and its general limitations in translation, and it has proven as technology to be too complex to maintain scalable translational services. With the deprecation of NAT-PT and the increasing IPv6 transition among users has led to the introduction of NAT64. Refer to these documents for more information on NAT64:
- NAT64 Technology: Connecting IPv6 and IPv4 Networks
- NAT64-Stateless versus Stateful
- IPv6 Stateful NAT64 Configuration Example
Components Used
The configurations in this document are based on the Cisco 3700 series router on Cisco IOS Software Release 12.4 (15)T 13.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.
Configure
In this example, three routers (R1, R2, and R3) are connected through serial interfaces. R1 acts as a NAT-PT router, which connects to R2 using an IPv4 address and to R3 using an IPv6 address.
Note: NAT-PT is not supported with Cisco Express Forwarding (CEF). CEF must be disabled in order for NAT-PT to work as expected.
Network Diagram
This example uses the network setup as shown in this diagram:
Configurations
This example uses these configurations:
R1 Configuration |
hostname R1
ipv6 unicast-routing
!
interface Serial0/0
ip address 192.168.30.10 255.255.255.0
duplex auto
speed auto
ipv6 nat
!
interface Serial0/1
no ip address
duplex auto
speed auto
ipv6 address 2001:DB8:3002::9/64
ipv6 enable ipv6 nat
!
ipv6 route ::/0 2001:DB8:3002::10
ipv6 nat v4v6 source 192.168.30.9 2000::960B:202
!--- Translates the ipv4 add of R2 fa0/0 to ipv6 address.
ipv6 nat v6v4 source 3001:11:0:1::1 150.11.3.1
!--- Translates the ipv6 add of loop0 of R3 to ipv4 address.
ipv6 nat prefix 2000::/96
!--- The destination prefixes that matches 2000::/96 !--- are translated by NAT-PT.
!
end
|
R2 Configuration |
hostname R2
!
interface Serial0/0
ip address 192.168.30.9 255.255.255.0
duplex auto
speed auto
!
ip route 0.0.0.0 0.0.0.0 192.168.30.10
!
!
end
|
R3 Configuration |
hostname R3
ipv6 unicast-routing
!
interface Loopback0
no ip address
ipv6 address 3001:11:0:1::1/64
!
interface Serial0/0
no ip address
duplex auto
speed auto
ipv6 address 2001:DB8:3002::10/64
!
ipv6 route ::/0 2001:DB8:3002::9
!
|
Verify
Use this section to confirm that your configuration works properly.
In Router R3
An ICMP Echo Request packet generated by R3 that is sourced from the IPv6 address of R3's Loopback0 interface (3001:11:0:1::1) should reach the IPv4 address of R2's Serial0/0 interface (192.168.30.9) using the IPv6 address 2000::960B:202. A working example is shown here:
Ping |
R3#ping 2000::960b:202 source Loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2000::960B:202, timeout is 2 seconds:
Packet sent with a source address of 3001:11:0:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/60/124 ms
!--- This shows that the router R3 is able to reach !--- the router R2 through lo address 3001:11:0:1::1.
|
In Router R2
An ICMP Echo Request packet generated by R2 (which will be automatically sourced from 192.168.30.9, which is the IPv4 address of R2's Serial0/0 interface) should reach the IPv6 address of R3's Loopback0 interface (3001:11:0:1::1) using the IPv4 address 150.11.3.1. A working example is shown here:
Ping |
R2#ping 150.11.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.11.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/68/120 ms
!--- The successful ping response shows that the router R2 !--- is able to reach the IPv6 network.
|
In Router R1
On R1, active NAT-PT translations between R2 and R3 can be observed through the output of the show ipv6 nat translations command.
show ipv6 nat translations |
R1#show ipv6 nat translations
Prot IPv4 source IPv6 source
IPv4 destination IPv6 destination
--- --- ---
192.168.30.9 2000::960B:202
--- 150.11.3.1 3001:11:0:1::1
--- ---
R1#show ipv6 nat translations
Prot IPv4 source IPv6 source
IPv4 destination IPv6 destination
--- --- ---
192.168.30.9 2000::960B:202
--- 150.11.3.1 3001:11:0:1::1
--- ---
!--- This command displays the active NAT-PT translations in the router.
|
Activating detailed IPv6 NAT debugs with the debug ipv6 nat detailed command while an ICMP ping between R2 and R3 shows that R1 translates traffic as expected.
debug ipv6 nat detailed |
R1#debug ipv6 nat detailed
R1#
*Mar 1 09:12:41.877: IPv6 NAT: Found prefix 2000::/96
*Mar 1 09:12:41.881: IPv6 NAT: IPv4->IPv6:
src (192.168.30.9 -> 2000::960B:202)
dst (0.0.0.0 -> ::)
ref_count = 1, usecount = 0, flags = 513,
rt_flags = 0, more_flags = 0
*Mar 1 09:12:41.881: IPv6 NAT: IPv4->IPv6:
src (0.0.0.0 -> ::)
dst (150.11.3.1 -> 3001:11:0:1::1)
ref_count = 1, usecount = 0, flags = 257,
rt_flags = 0, more_flags = 0
*Mar 1 09:12:41.925: IPv6 NAT: IPv6->IPv4:
src (3001:11:0:1::1 -> 150.11.3.1)
dst (2000::960B:202 -> 192.168.30.9)
ref_count = 1, usecount = 0, flags = 2,
rt_flags = 0, more_flags = 0
*Mar 1 09:12:41.925: IPv6 NAT: icmp src (3001:11:0:1::1) -> (150.11.3.1),
dst (2000::960B:202) -> (192.168.30.9)
*Mar 1 09:12:41.965: IPv6 NAT: Found prefix 2000::/96
*Mar 1 09:12:41.965: IPv6 NAT: IPv4->IPv6:
src (192.168.30.9 -> 2000::960B:202)
dst (150.11.3.1 -> 3001:11:0:1::1)
ref_count = 1, usecount = 0, flags = 2,
rt_flags = 0,
!--- This command displays detailed information about NAT-PT events.
|
|
Troubleshoot
There is currently no specific troubleshooting information available for this configuration.
Related Information