Creating a 6to4 tunnel
Nice—but to make this happen, you’ll need a couple of dual-stacked devices, which I just
demonstrated for you, so you should be good to go. Now you have to add a little configuration
to place a tunnel between those routers. Tunnels are pretty simple—you just have to tell each
router where the tunnel begins and where you want it to end. Here’s an example:
Router1(config)#int tunnel 0
Router1(config-if)#ipv6 address 2001:db8:1:1::1/64
Router1(config-if)#tunnel source 192.168.30.1
Router1(config-if)#tunnel destination 192.168.40.1
Router1(config-if)#tunnel mode ipv6ip
IPv4 network
IPv6 packet encapsulated in an IPv4 packet
Router2(config)#int tunnel 0
Router2(config-if)#ipv6 address 2001:db8:2:2::1/64
Router2(config-if)#tunnel source 192.168.40.1
Router2(config-if)#tunnel destination 192.168.30.1
Router2(config-if)#tunnel mode ipv6ip
With this in place, your IPv6 networks can now communicate over the IPv4 network. Now,
I have to tell you that this is not meant to be a permanent configuration; your end goal should
still be to run a total, complete IPv6 network end to end.
One important note here—if the IPv4 network that you’re traversing in this situation has
a NAT translation point, it would absolutely break the tunnel encapsulation you’ve just created!
Over the years, NAT has been upgraded a lot so that it can handle specific protocols and
dynamic connections, and without one of these upgrades, NAT likes to demolish most connections.
And since this transition strategy isn’t present in most NAT implementations, that
means trouble.
There is a way around this little problem, and it’s called Teredo, which allows all your tunnel
traffic to be placed in UDP packets. NAT doesn’t blast away at UDP packets, so they won’t
get broken as other protocols packets do. So with Teredo in place and your packets disguised
under their UDP cloak, the packets will easily slip by NAT alive and well!