First posted 11/20/2022

As always, opinions in this post are solely those of my own, and not necessarily those of any organization I am currently affiliated with or have been in the past.

The Homelab Hiatus is over! I renewed my CCNP last month and have been messing around with IPv6-only networks both at work & at home because Uncle Sam says it’s a good idea. A few weeks ago I thought it’d be fun to dust off the old Cisco ASA 5512-x from my first-ever homelab writeup to see how well the ASA’s NAT64 for IPv6-only devices accessing IPv4 things works when paired with Cloudflare’s free DNS64 offering. Only problem is my home ISP doesn’t support IPv6 yet, so I had to add an extra step of creating a free account paired with my Mikrotik RB4011 for IPv6 internet access.

Even with all this added complexity, I’m really happy with how well DNS64/NAT64 is working for my IPv6-only devices when browsing the web. Sites that are notoriously IPv4-only like Twitter are loading up without any difficulty whatsoever. The below topology is far from perfect, but if you’re looking to get familiarized with how to bring a very legacy IPv4-only Cisco ASA environment into the IPv6-only world without upset end-users, this might just work for you too:

Step 1 (optional if your ISP supports IPv6) – Setup a tunnel on a device other than Cisco ASA

As illustrated by Keith O’Brien and Cisco’s community forums about a decade ago , Cisco ASA does not support IPv6 tunnels. But that’s perfectly fine; fortunately I have a Mikrotik RouterOS device on the border of my homelab, which supports a shockingly easy configuration to get IPv6 tunneling via Hurricane Electric up. Simply sign up for an account at, request a /48 (both because it’s cool to get that many addresses for free, and because it makes life easier when creating subnets going towards the Cisco ASA), and apply a config similar to the following on your Mikrotik device:

/interface 6to4
add comment="Hurricane Electric" !keepalive local-address=149.75.x.x mtu=1280 name=sit1 remote-address=184.105.x.x

/ipv6 address
add address=2001:470:1f10:17::2 advertise=no interface=sit1
add address=2001:470:c648:1:: advertise=no interface=bridge

/ipv6 firewall filter
add action=accept chain=forward dst-address=2000::/3 in-interface=bridge out-interface=all-ethernet src-address=2001:470:c648:2022::/64

/ipv6 route
add distance=1 dst-address=2000::/3 gateway=2001:470:1f10:17::1
add distance=1 dst-address=2001:470:c648:2022::/64 gateway=2001:470:c648:1::2

If you search for “Mikrotik”, you’ll find many other example configs that should work just fine. I’m not going to post my entire RB4011’s config here, but I can assure you it’s as close to factory default as possible with some minor additional security tweaks. The important thing to note in my homelab is I’m doing a static route for 2001:470:c648:2022::/64 towards the Cisco ASA’s IP address of 2001:470:c648:1::2. Without that static route and Hurricane Electric’s generous policy to give anyone using a full /48 of IPv6 addresses, this lab would be much sloppier 🙂

After you get the config into the Mikrotik, I would recommend doing a quick ping to Cloudflare’s DNS64 servers at 2606:4700:4700::64 and 2606:4700:4700::6400 for good measure. Note how I set “advertise=no” on the Mikrotik’s interfaces; this is because I don’t want any universe where my Samsung SmartTV pulls a SLAAC IPv6 address and unsuccessfully tries to access Netflix via the tunnel. It’s well documented that Netflix doesn’t play well with IPv6 tunnels, so be careful!

Step 2: Configure NAT64 on the Cisco ASA

Now that you have a working setup, let’s go ahead and configure NAT64 on the Cisco ASA, using the standard /96 allocation for NAT64. I’m starting off with the original config I wrote up for this ASA years ago at because I’m lazy and figured this would be a great way to illustrate even a dated ASA config can be used to go IPv6-only!

interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address dhcp setroute
 ipv6 address 2001:470:c648:1::2/64
 ipv6 enable
interface GigabitEthernet0/3
 nameif v6testbed
 security-level 100
 no ip address
 ipv6 address 2001:470:c648:2022::1/64
 ipv6 enable
object network inside_v6
 nat (v6testbed,outside) dynamic interface
object network outside_v4_any
 nat (outside,v6testbed) static 64:ff9b::/96
ipv6 route outside ::/0 2001:470:c648:1::
http 2001:470::/32 v6testbed
ssh 2001:db8::/32 v6testbed
ssh 2001:470::/32 v6testbed

I was a bit surprised at just how simple & easy NAT64 would be to configure on ASA considering I couldn’t really find a good example of this online. “show xlate” is your friend if you need to tshoot NAT64, you should see ample translations upon firing up the web browser, just make sure you have a good DNS64 per the next step before tshooting!

Step 3: Get your IPv6-only devices to use Cloudflare’s DNS64

This is perhaps the easiest part of the whole setup, but also the easiest to forget. Cisco ASA does not support RDNSS, so you’ll either need to setup your own DHCPv6 server or manually throw in a DNS64 server IP address on the IPv6-only devices. I ended up simply adding the 2606:4700:4700::64 and 2606:4700:4700::6400 addresses statically on my IPV6-only devices since it’s just a homelab, even though that’s a lot more typing than in the IPv4 world. DNS64 is a very interesting technology and I’d highly recommend searching for DNS64 on YouTube, there’s quite a few people out there who can explain it better than I at this time.

Step 4: Test away!

Now that you have a good NAT64 config on the Cisco ASA, a good DNS64 server defined on your IPv6-only devices, and either an IPv6 WAN connection or tunnel, you should be able to access most of the internet without any issues. The only caveat is you need to either be accessing resources via DNS names or IPv6 IP addresses; typing in an IPv4 address into a web browser will get you nowhere on the IPv6-only devices using DNS64/NAT64.

Those of you who have seen my previous homelab write-ups may be thinking “Man, Tom really took the easy way out on this one, why aren’t there more screenshots? Why isn’t he speaking about why things were done the way they were? What gives?” All of these questions are valid, and to be honest this homelab writeup is a bit sub-par compared to previous posts. That’s because this DNS64 + NAT64 + setup is a prerequisite for the silly Windows XP IPv6-only write-up I wrote within 24 hours of posting this homelab. I didn’t want to clutter up that post with all this background information about the DNS64/NAT64 setup, hence why you’re seeing it all here. Be sure to check out if you’re into 21 year old operating systems and IPv6 🙂

You’ve reached the end of the post! Click here to go back to the list of all Homelab posts.

You should also know I use Amazon Affiliate links to defray the cost of otherwise ad-free webhosting

Cisco ASA NAT64 + Cloudflare DNS64 + Mikrotik IPv6-only fun

Post navigation

3 thoughts on “Cisco ASA NAT64 + Cloudflare DNS64 + Mikrotik IPv6-only fun

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.