You are viewing a single comment's thread from:

RE: IPv4 Is Expensive - Come Join Us With IPv6

in #ipv65 months ago

So NAT64 is done on a server, you don't need a "special" router, but consumer routers don't support it. You need to be able to route a speical ipv6 prefix to your machine running NAT64 server. I use NAT64 in a DC using a Mirkotik Router

/ipv6/route> print where static
#    DST-ADDRESS        GATEWAY                  DISTANCE
0 As ::/0               HIDDEN                        254
1 As 64:ff9b::/96       2a07:e04:HIDDEN::HIDDEN         1

Route 0 isn't too important to us here, that's just the default route. Route 1 is the NAT64 static route. The 64:ff9b::/96 is the well known NAT64 prefix. Next thing I need to use is a DNS64 server. Instead of returning back IPv4 addresses for dns queries, it will return an encoded IPv6 address in the well known range, @privex runs one at dns64.privex.io.

dig +short github.com in AAAA

From the query above, we can see that github doesn't have an AAAA record(IPv6 address record). But what happens if we ask it to use the dns64 server?

dig github.com IN AAAA @dns64.privex.io +short
64:ff9b::c01e:ff71

Look at that, we get a response back, in the well known range that we defined above. Now that our server has an ipv6 address, it can reach that(read the article from privex linked below to understand how the encoding works). It sends the request to the ip above, which will get routed to our NAT64 server because of the static route that we had defined in the router.

And now the NAT64 software handles the rest. It can go get the IPv4 address that was encoded into the v6 one, send the request out, and once it gets the response, send it back to the requestor who can use it, without ever having known about IPv4 addresses.

Privex has a good graphic explaining this whole process, and you can read about it from them too : https://www.privex.io/articles/what-is-nat64/.

(Thanks to @someguy123 and Privex for setting up and managing the NAT64 in Ryamer's environment where I use it).