ネットワーク用語/NAT64(Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers)
NAT64(Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers)とは
NAT64は、IPv4ネットワークとIPv6ネットワークを共存させるための技術であるトランスレーションの1つです。
IPv6ネットワーク内の端末とIPv4ネットワークの端末間の通信を可能にするためにIPv6パケットをIPv4パケットへ
変換するものです。またその逆を行います。
図1 NAT64
IPv4ネットワークとIPv6ネットワークを共存させる技術には、デュアルスタックやトンネリングといったものもあります。デュアルスタックのようなIPv4とIPv6の両方が使える端末同士であれば、IPv6による通信ができます。しかしIPv6にしか対応してない端末とIPv4にしか対応していない端末間の通信といったような、デュアルスタックやトンネリングによる通信ができない場合にNAT64が利用されます。IPv6だけで通信できる場合には利用されません。
NAT64で使用されるアドレス
IPv6ネットワーク内のPCが送信するパケットはIPv6のパケットとなり、IPv4ネットワーク内の端末が送信するパケットはIPv4のパケットとなります。IPv4とIPv6ではパケットヘッダもアドレスのフォーマットも異なるためIPv6ネットワーク内の端末からIPv4ネットワーク内の端末へ通信する際に、宛先のIPv4アドレスをそのまま指定することはできません。またその逆も同様でIPv4ネットワーク内の端末がIPv6ネットワーク内の端末を宛先として指定する場合に宛先IPv6アドレスを使うことができません。
図2 アドレス表現方法の違い
そこでNAT64ではIPv4-embedded IPv6 addressというRFC6052で規定されたIPv4が組み込まれたIPv6アドレスを利用します。NAT64ではIPv4-converted addressesとIPv4-translatable addressesというIPv4-embedded IPv6 addressのフォーマットを使用したIPv6アドレスを使用します。
IPv4-converted addresses
IPv6ネットワーク内の端末から宛先のIPv4端末を指定する場合、宛先IPv4アドレスをIPv6で表現できるようにIPv4-embedded IPv6 addressを利用します。このようなIpv6ネットワーク内から通信する際に、宛先IPv4アドレスをIPv6アドレスで表すためのアドレスをIPv4-converted addressesといいます。
IPv4-translatable addresses
IPv6ネットワーク内の端末に割り振られるIPv6アドレスをIPv4-translatable addressesといいます。ただしこのアドレスはステートレスNAT64の際に使用されるものとなります。
IPv4の端末からIPv6の端末を指定する際にはIPv4アドレスを使用します。ステートレスNAT64では、IPv6の端末に割り当てるIPv6アドレスはその指定されたIPv4アドレスに紐づくIPv6アドレスである必要があります。
例として以下の図3で確認しておきます。
IPv4ネットワークからは192.168.100.2を宛先として指定するとIPv6のPCに届くようになっているとします。
ステートレスNAT64の場合のみ、IPv4-translatable addressesが使用されます。
図3 IPv4-converted addressesとIPv4-translatable addresses
192.168.100.2のPCをIPv6ネットワークから指定する際に使用する際に使用する、192.168.100.10を埋め込んだ64:ff9b::c0a8:640aがIPv4-converted addressesとなります。
IPv4のPCから192.168.100.2と指定するとIPv6のPCに届くようにIPv6の端末に割り当てられているアドレスが
IPv4-translatable addressesとなります。
NAT64の方式
先程のIPv4-converted addressesとIPv4-translatable addressesを使用してNAT64のアドレス変換は行われます。
NAT64の変換方式にはステートレスNAT64とステートフルNAT64の2つが存在します。
ステートフルNAT64へ
ステートレスNAT64へ