前回と前々回は、トランスレータにおけるパケットの変換について説明してきました。今回は、「IPv4アドレスとIPv6アドレスを変換する仕組み」と「マッピングした(対応付けた)アドレスをパソコンなどのクライアントに通知する仕組み」について解説していきます。

 トランスレータにおいて、変換したアドレスを通知する仕組みは重要な意味を持ちます。アドレスの変換はトランスレータの内部で実施されますが、トランスレータはマッピングしたアドレスをあて先に持つパケットを受信したときに初めてパケットを変換します。つまり、マッピングしたアドレスをクライアントに通知しなければ、そのあて先にパケットが送信されることはありません。そのため、トランスレータを考えるうえでマッピングしたアドレスを通知する仕組みはとても重要なのです。

IPアドレスのマッピング

 IPアドレスのマッピングには、いくつかのやり方が提案されていますが、今回は現在使われている方法について説明します。その他の方法については、今後の連載の中で触れていこうと思います。

 トランスレータはパケットを変換する際に、マッピングされたアドレスを用いてIPv6からIPv4、またはIPv4からIPv6へアドレス変換を行います。はじめに、IPv4アドレスをIPv6アドレスにマッピングする方法を見ていきましょう。

 多くのトランスレータは、IPv4アドレスをIPv6アドレスにマッピングする際に、変換用のIPv6プレフィックスを一つ用意します。プレフィックスは、IPv6アドレスの前半にあるネットワークを指定する部分です。この変換用IPv6プレフィックスは、トランスレータを使用するネットワークに割り当てられているプレフィックスの中から任意の一つを用いますが、未使用なものに限ります。そして、変換用IPv6プレフィックスを用いたアドレスの下位32ビットに、マッピングしたいIPv4アドレスを付加して対応付けます(図1)。こうすることで、トランスレータは受信したIPv6パケットのあて先アドレスのプレフィックスだけで、そのパケットを変換すべきか否かを判断できます。さらに変換用プレフィックスが用いられているIPv6アドレスの下位32ビットを参照することで、IPv4アドレスがすぐにわかる仕組みになっています。

図1●IPv4アドレスをIPv6アドレスにマッピングする
図1●IPv4アドレスをIPv6アドレスにマッピングする

 例えば、変換用プレフィックスが「2001:db8:0:f::/64」のとき、IPv4アドレス192.168.100.1をマッピングすると「2001:db8:0:f::c0a8:6401」となります。末尾は、192.168.100.1をそれぞれ16進数に変換して並べた形になります。つまり「192=c0、168=a8、100=64、1=1」です。IPv6のアドレス空間はIPv4のアドレス空間に比べて大きいため、一つの変換用プレフィックスを用意すればすべてのIPv4アドレスをマッピングできます。

 では、IPv6アドレスをIPv4アドレスにマッピングするには、どうするのでしょうか。IPv4のアドレス空間はIPv6のアドレス空間に比べて小さいため、先ほど説明した方法ではマッピングできません。IPv6アドレスをIPv4アドレスにマッピングする場合は、あらかじめ変換用のIPv4アドレスを複数用意しておき、そのなかの任意の一つとIPv6アドレスをマッピングします。従って、変換対象とするIPv6アドレスを変換用IPv4アドレスと同数までに限定するか、さもなければ変換用に用意したIPv4アドレスをリサイクルする必要があります。後者の場合、変換用IPv4アドレス「192.168.100.12」は、あるときは「2001:db8:2:3::1」にマッピングされ、またあるときは「2001:db8:133:9::ab」にマッピングされることがあります。