Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm wondering why NAT64 needs something like DNS64 at all.

Couldn't an IPv6-only host, when trying to reach an IPv4-only host, just embed the IPv4 address of the target host in an IPv6 packet (by prefixing and/or padding it with zeroes) and leave the rest to "the network"?

The 0000::/something subnet could then be routed to an appropriate NAT gateway, which would take care of changing the IPv6 header to an IPv4 one, as well as doing the reverse for incoming responses.

Isn't that possible?

share|improve this question
Duplicated in this SuperUser question. – JdeBP Jan 31 '12 at 16:08
up vote 3 down vote accepted

The idea is that the IPv6-only host which is behind NAT64 doesn't know or care that it is behind NAT64. You need the DNS64 to fool it into thinking that the IPv4-only hosts it wishes to talk to actually have AAAA records so they can accept IPv6 connections. Without DNS64 the hosts behind NAT64 would receive regular A records. They would do what hosts always do with A records: attempt an IPv4 connection. Either it would work (if the host actually has IPv4 connectivity, but then why do you need NAT64?) or it would fail (if the host has no IPv4 connectivity).

share|improve this answer
So when an IPv6-only host receives an A reply, it doesn't try to contact the IPv4 address over IPv6 (by encapsulating it into an IPv6 packet, like 0::de:ad:be:ef:0...:0? The gateway could then change the header to IPv4 and do the NAT translation. Wouldn't that be an easy way to implement IPv6 to IPv4 connectivity? – lxgr Jan 31 '12 at 9:54
No, why would the IPv6-only host think that it could contact a remote peer using one address family when it was told (A record) to use a different address family? You are more or less proposing to implement DNS64 functionality IN THE HOST instead of IN THE NETWORK. Sure, if you do that then you don't need to duplicate DNS64 out there in the network, but obviously the problem with that is that you have to do it in every host, which is never going to happen. – Celada Jan 31 '12 at 16:31
I see, so a host will always try to contact a remote host by the address family that has been returned by the DNS lookup, but fail if there is no corresponding interface available? Does that also mean that an IPv4-only application (e.g. one with hard-coded IP literals) will never be able to work on an IPv6-only host (at least not without any modifications to the network stack)? – lxgr Jan 31 '12 at 18:42
That's correct. – Celada Jan 31 '12 at 20:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.