NAT64とは
NAT64は、IPv6専用クライアントとIPv4サーバーの間でIP・ICMPヘッダーとアドレスを変換し、通信状態を保持して往復を対応付ける仕組みです。RFC 6146の正式名称はStateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers(ステートフル・ナット・シックスティーフォー)です。
IPv6クライアントは、IPv4宛先を埋め込んだ特別なIPv6アドレスへパケットを送ります。NAT64装置はIPv6ヘッダーをIPv4ヘッダーへ変換し、自身の公開IPv4プールから送信元アドレスとポートを割り当てます。
NAT64は、IPv4パケットをIPv6で包むトンネルではありません。ヘッダーを変換し、IPv6側とIPv4側で異なるIPパケットとして転送します。

宛先IPv6アドレスに、IPv4宛先を埋め込む
Well-Known Prefixの64:ff9b::/96またはネットワーク固有プレフィックスを使う
例示用IPv4アドレス192.0.2.33を所定のビット位置へ埋め込む
/96の例では64:ff9b::c000:221となり、経路がNAT64へ導く
BIBとSession Tableが、往復を対応付ける
BIB(Binding Information Base/バインディング・インフォメーション・ベース)は、IPv6側のアドレスとポートを、NAT64のIPv4アドレスとポートへ対応付けます。TCP、UDP、ICMP Queryで別々のバインディングを管理します。
Session Table(セッション・テーブル)は通信相手を含むフロー情報と有効時間を持ちます。IPv4サーバーから戻ったパケットは、この状態から正しいIPv6クライアントへ変換されます。
DNS64は宛先を作り、NAT64はパケットを変換する
DNS64は、AAAAを持たずAだけを持つ名前について、Pref64とAのIPv4アドレスから合成AAAAを返せます。IPv6クライアントは通常のIPv6接続としてそのアドレスへ送り、経路上のNAT64が実際の変換を行います。
IPv4アドレスを文字列で直接指定するアプリや、DNSを使わないプロトコルは、DNS64だけでは宛先IPv6アドレスを得られません。端末側でIPv4互換を提供する464XLATなどが必要になる場合があります。
すべてのIPプロトコルや外部着信を自動変換するわけではない
RFC 6146の状態保持型NAT64はユニキャストTCP、UDP、ICMP Queryを対象とし、IPsecなど任意のプロトコルを一律に変換する仕様ではありません。IP・ICMP変換では、チェックサムやエラー内に引用されたヘッダーも処理します。
動的なバインディングは通常IPv6側から始めた通信で作られます。IPv4側から任意のIPv6端末へ新規接続するには静的バインディングやNAT越えの別手法が必要で、一般的な公開サーバー用途とは条件が異なります。
仕様の確認資料:RFC 6146「Stateful NAT64」、RFC 6052「IPv6 Addressing of IPv4/IPv6 Translators」、RFC 7915「IP/ICMP Translation Algorithm」