IPv4/IPv6トランスレーション
IPv4とIPv6のパケット形式やアドレスを変換し、一方にしか対応しない機器同士の通信を可能にする技術。両端で同じIPの版を使えない場合に、境界の変換装置などが仲介する。
イマシルちゃんの解説
違う言葉しか話せない二人が、手紙をやり取りするとするよ。
間にいる人が、相手に読める言葉へ書き直して渡せば、話を続けられるよね。
別の封筒に入れるだけでは、中の言葉は変わらない。
封筒を外す役と、文章を書き直す役では、必要な仕事が違うんだ。
より深い解説
形式を変えて渡す
IPv4だけのホストは、そのままではIPv6のパケットを受け取って処理できない。逆方向も同様である。変換装置が宛先・送信元などを対応付け、相手側のパケット形式へ変える。
単にアドレスの文字表記を変えるだけではない。IPヘッダーの違いや、ICMPの扱い、上位層のチェックサムなどにも対応する必要がある。
代表的な構成
NAT64は、IPv6側のクライアントからIPv4側のサーバへ通信する構成などで使う。ステートフル方式はRFC 6146で定められ、変換装置が通信の対応状態を保持する。
DNS64は名前解決を補助する仕組みであり、データパケットそのものの変換装置ではない。DNS応答を作る役割と、パケットを変える役割を分けて理解する。
通信の流れ
- クライアントがサーバの名前をDNSへ問い合わせる。
- IPv4の情報だけが得られる場合などに、DNS64が対応するアドレス情報を作る。
- クライアントがIPv6で通信を開始する。
- 変換装置がIPv4側へ転送し、返信も対応するIPv6通信へ戻す。
合成するアドレスには、変換先を識別するプレフィックスを使う。変換経路のルーティング設定も必要であり、名前解決が成功するだけで通信が完了するわけではない。
共存技術との比較
| 方式 | 中心となる動作 |
|---|---|
| デュアルスタック | 機器が両方のIPを実装して使い分ける |
| トンネリング | 内側のパケットを別のパケットへカプセル化する |
| トランスレーション | 境界で形式を変換する |
| キャリアグレードNAT | ISPなどでIPv4のアドレスを共有する |
トンネルは、IPv6同士の通信をIPv4の区間へ通す用途などに使われる。終端で外側を取り除いた後も内側はIPv6なので、IPv4しか扱えない相手への通訳にはならない。
適用上の注意
| 条件 | 確認すべきこと |
|---|---|
| 宛先をIPv4の数値で直接指定する | DNS64による合成を利用できるか |
| アプリケーション本文にアドレスを含む | IPヘッダーの変換だけで動作するか |
| 新規の着信を受ける | 許可する方向と変換の設定があるか |
| DNSSECの検証を利用する | 合成と検証の位置関係が適切か |
変換できる通信の範囲には方式ごとの条件がある。IPv4/IPv6変換を導入すれば、すべてのアプリケーションが無条件に動くとは限らない。