NAT-PTは,TRTやSIITなどと同様に,IPv4からIPv6への移行期のための移行技術の一つである。NAT-PTは,Network Address Translation - Protocol Translationの略称であり,その名の通り,アドレスとプロトコルの変換を行なう。プロトコル変換は,SIITのアルゴリズムを使用する。

 NAT-PTの種類には,Traditional NAT-PTとBi-Directional NAT-PTの2種類ある。Traditional NAT-PTとは,一方向のNATであり,IPv6のネットワークからIPv4のネットワークへの通信を実現する。Traditional NAT-PTも,変換技術の異なる2種類の方法がある。一つは,Basic-NAT-PTである。この変換方式はトランスレータがパケットをIPv6からIPv4に変換する際に使用される。IPv4のアドレス・ブロックを持ち,セッションごとにIPv4アドレスを割り当て,割り当てたIPv4アドレスを送信元アドレスとして,IPv4ネットワークにパケットを送信する.変換されるものは,送信元アドレス,あて先アドレス,IPヘッダ,ICMPヘッダ,TCP,UDPのチェックサムである。

 もう一つは,NAPT-PTである。こちらの変換方式は,トランスレータはIPv4のアドレスブロックを持たず,トランスレータ自身にアサインされている一つのIPv4アドレスを使用して,パケットを変換する。いわゆるIPマスカレードと同じ原理である。,TCP,UDPのポート番号やICMPのクエリIDを任意のポート番号/クエリIDに変換するので,一つのIPv4アドレスをたくさんのIPv6ノードで共有できる。この方式で変換されるものは,先のBasic-NAT-PTのものに加えて,TCP,UDPならば,送信元ポート,宛先ポート,ICMPならばクエリIDである。

 Bi-Directional NAT-PTは,双方向のNATである。IPv6のネットワークからIPv4のネットワーク,またはその逆(IPv4のネットワークからIPv6のネットワーク)の変換もできる。セッションが開設される方向によって,IPv6のアドレスはIPv4のアドレスに,静的もしくは動的に結びつけられる。

 IPv6からIPv4,またはIPv4からIPv6に通信するときに重要なのが,名前解決である。名前を解決する時に,異なるアドレス・ファミリのアドレスがDNSから返答されても通信することができない。NAT-PTでは名前解決を行なうために,DNS-アプリケーション・レベル・ゲートウェイ(ALG)を用いる。IPv6からIPv4へ変換する際には,NAT-PTに96ビットのIPv6プレフィクスをアサインし,そのプレフィクスあてのパケットはNAT-PTに向かうように設定する。IPv6ノードがIPv4ノード(a.b.c.d)の名前を解決する時,DNS-ALGは,NAT-PTにアサインしたプレフィクス(w:x:y:z::/96)とIPv4ノードのアドレス(a.b.c.d)を元に,IPv6ノードにIPv6アドレス(w:x:y:z::a.b.c.d)を返す。IPv6ノードは,このアドレス(w:x:y:z::a.b.c.d)に対して通信を行ない,そのパケットを受け取ったNAT-PTは,そのアドレスの下位32ビットを見て,あて先となるIPv4アドレス(a.b.c.d)を知ることができる。

 IPv4からIPv6に通信する時は,NAT-PTとDNS-ALGの連係が重要となる。IPv4ノードが,IPv6ノード(e:f:g:h::i)の名前を解決する時,NAT-PTのIPv6アドレスを見て,既にIPv4アドレスがアサインされているかどうか確認する。アサインされていれば,そのIPv4アドレスをIPv4ノードに返答し,アサインされていなければIPv4アドレスをアサイン(j.k.l.m)してIPv4ノードに返答する。IPv4ノードは返答されたアドレス(j.k.l.m)に向けて通信し,そのパケットを受け取ったNAT-PTは,パケットのあて先アドレスからそのアドレスがアサインされているIPv6アドレス(e:f:g:h::i)をあて先として認識できる。

 NAT-PTは,TCPやUDPのペイロードは見ないので,ペイロードにIPアドレスを入れるようなアプリケーションはサポートできない。そのような場合は,ALGと連係することによって通信を可能にする。また,NAT-PTは変換したセッションを管理しているため,一つのセッション内のパケットはすべて同じNAT-PTを通過する必要がある。さらに,IPsecは異なるアドレス・ファミリ間では使用できない.

(遠藤正仁▼横河電機 IT事業部 ITプロダクト事業センター)

Network Address Translation - Protocol Translation (NAT-PT)

Stateless IP/ICMP Translation Algorithm (SIIT)