IPv4アドレス枯渇とIPv6移行 ― デュアルスタック
IPv4
IPv4アドレス枯渇とは、新規に配れるIPv4アドレスが無くなったこと
IPv4アドレス枯渇とは、IANAやAPNICなど上位の組織で、通常の方法で新規に割り振れるIPv4アドレスの在庫が無くなったことです。2011年に実際に起こりました。
IPv4を使い続けながらIPv6へ移る現実的な方法がデュアルスタックです。1台の機器にIPv4とIPv6の両方のアドレスを持たせ、相手に応じて使い分けます。日本の家庭用回線でも、この形が広く使われています。
枯渇を遅らせたCIDRとNATの働きから始めて、IPv6への移行方式の違いまでを説明します。
枯渇までの経緯:43億個から延命策、そして枯渇
IPv4アドレスは32ビットです(RFC 791)。作れる個数は2³²で、約43億個です。1980年代の設計時には、十分な数に見えました。
その後、インターネットに接続する機器は世界的に急増しました。43億個では、いずれ足りなくなることが見えてきました。そこで2つの延命策が取られました。
1つ目はCIDRです。アドレスのまとまりを、クラスという決まった大きさではなく、必要な大きさで配れるようにしました(RFC 4632)。無駄な配り方を減らし、在庫を長持ちさせました。
2つ目はNATです。1つのグローバルIPアドレスを、家庭やオフィス内の複数台の機器で共有できるようにしました。新しくグローバルIPアドレスを取得する必要が減りました。
延命策にも限界がありました。IANAの在庫は2011年2月3日に、APNICとJPNICの通常の在庫は2011年4月15日に、それぞれ枯渇しました。日付は、JPNIC「IPv4アドレスの在庫枯渇に関して」によります。
枯渇後も、すでに割り振られているIPv4アドレスは今も使われ続けています。ただし、新規に大きな範囲をまとめて受け取ることは、通常の方法ではできなくなりました。根本的な解決として作られた規格が、128ビットのIPv6です。
IPv6への移行方式の種類
IPv4とIPv6は、ヘッダの形式が違うため、そのままでは直接やり取りできません。世界中の機器を一度に置き換えることもできません。そこで、IPv4とIPv6を共存させる移行方式が必要になります。
移行方式は、大きく3つに分けて整理できます。デュアルスタックとトンネリングはRFC 4213に、変換の考え方はRFC 6144にまとめられています。次の表に、それぞれの仕組みと使われる場面をまとめます。
| 方式 | 仕組み | 主に |
|---|---|---|
| デュアルスタック | 1台の機器がIPv4とIPv6の両方のアドレスを持ち、相手に合わせて使い分ける | 今のIPv6移行の主流。多くのOS・家庭用回線が対応済み |
| トランスレーション(NAT64・DNS64) | IPv6のみの機器が送ったパケットを、IPv6とIPv4の間で変換してつなぐ | IPv6のみのネットワークから、まだIPv4のみのサイトに届かせたいとき |
| トンネリング(IPv4 over IPv6など) | IPv4のパケットを、IPv6に変換せずにIPv6のパケットに包んで運ぶ | IPoEのようにIPv6の回線しかない区間で、IPv4の通信も運びたいとき |
現在もっとも広く使われているのはデュアルスタックです。次の節からは、デュアルスタックを中心に、残り2つの方式も説明します。
デュアルスタックの仕組み:2つのアドレスを持ち分ける
デュアルスタックは、1台の機器がIPv4とIPv6の両方を実装する方式です。RFC 4213では、「IPv4とIPv6の完全な実装を提供する技術」と定義されています。
デュアルスタックの機器は、IPv4アドレスとIPv6アドレスを同時に持ちます。通信先がIPv4の機器ならIPv4で、IPv6の機器ならIPv6で、それぞれ直接やり取りします。IPv4とIPv6の間で変換したり、パケットを包んだりはしません。
どちらのアドレスで話すかは、名前解決の結果で決まります。DNSの記事で説明したとおり、AレコードはIPv4アドレス、AAAAレコードはIPv6アドレスを返します。通信先が両方のレコードを持っていれば、多くのOSは既定でIPv6を優先します(RFC 6724)。
日本の家庭でも、PCがIPv4とIPv6の両方のアドレスを持つデュアルスタックの形が広く使われています。回線の上では、IPv6はIPoE方式で直接つながります。IPv4は、PPPoEか、IPv6の中に包むIPv4 over IPv6で運ばれます。回線の方式そのものは、PPPoEとIPoEの記事で説明しています。
トランスレーション:IPv6のみの機器がIPv4のサーバに届く仕組み
デュアルスタックには、両方のアドレスを用意する手間があります。新しく作るネットワークをIPv6のみにしたい場合もあります。その場合でも、まだIPv4のみで動くサイトと通信したいことがあります。
この場面で使われるのがNAT64とDNS64です。2つを組み合わせると、多くの場合は端末もサーバも変更せずに、IPv6のみの端末からIPv4のみのサーバへ届けられます(RFC 6146・RFC 6147)。
まず、端末はアクセスしたいサーバの名前を、DNS64に問い合わせます。そのサーバがAAAAレコードを持っていなければ、DNS64はAレコードから、合成したAAAAレコードを作って返します。合成されたアドレスは、元のIPv4アドレスと、変換用に用意したプレフィックスを組み合わせたものです。
変換用のプレフィックスには、RFC 6052が定めた64:ff9b::/96がよく使われます。たとえば203.0.113.50は、16進数でcb00:7132と書けます。そのため、合成されたアドレスは64:ff9b::cb00:7132になります。
次に、端末はその合成アドレス宛に、ふつうにIPv6でパケットを送ります。このパケットは、NAT64という変換装置に届きます。NAT64は、宛先を元のIPv4アドレスに、送信元を自分のIPv4アドレスに変換します。変換したパケットは、IPv4のみのサーバへ転送します。
名前解決を受け持つのがDNS64、パケットの変換を受け持つのがNAT64です。どちらも、IPv4のみのサーバ側を変更する必要はありません。
IPv4 over IPv6(DS-Lite・MAP-E)との違い
NAT64は、通信の中身をIPv6からIPv4に変換する技術です。これに対し、トンネリングは、IPv4とIPv6の間の変換をせず、パケットを別のIPのヘッダで包んで運ぶ技術です。
RFC 4213は、IPv6パケットをIPv4ヘッダで包んで運ぶ方式を、設定されたトンネリングと呼んでいます。日本のIPoE回線で広く使われているDS-LiteやMAP-Eは、この逆方向です。元のIPv4パケットを、そのままIPv6のパケットで包んで運びます。
DS-Liteでは、家庭側の機器がIPv4パケットを包み、プロバイダ側のAFTRという装置まで運びます(RFC 6333)。AFTRは、トンネルから取り出したIPv4パケットに、IPv4どうしのNATを行います。
MAP-Eでは、IPv6アドレスと、IPv4アドレス・ポート番号の範囲との対応を計算で決めます(RFC 7597)。NATは家庭側の機器が、割り当てられたポートの範囲で行います。包んだパケットは、プロバイダ側のBRという装置まで運ばれます。
トンネリングでは、通信の両端は最後までIPv4どうしで話しています。途中の区間だけ、IPv6の中を通っています。NATでIPv4アドレスが書き換わることはあっても、NAT64のようにIPv6とIPv4の間で変換はしません。
DS-Lite・MAP-Eの設定の詳細や、ポート開放ができるかどうかの違いは、NATの記事とPPPoEとIPoEの記事にまとめています。
練習問題(全5問)
正解:IANAや
枯渇とは、
正解:IANAが
JPNIC
正解:1台の
RFC 4213は、
正解:DNS64が
RFC 6147の
正解:IPv4 over IPv6は
RFC 7597の
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
