🔀

IPv4とIPv6の共存を実現するデュアルスタック技術

2024/11/23に公開

はじめに

この記事は「小川晃通 著, プロフェッショナルIPv6 第2版, ラムダノート」の2.12節の内容を参考に、IPv4とIPv6のデュアルスタックについてまとめたものになります。

デュアルスタックってなんやねん

デュアルスタックについて理解するには、まずプロトコルスタックという概念を知らなければなりません。
プロトコルスタックとは、ある特定のプロトコルを扱うためのソフトウェアの実装のことです。

そして、全く別々の2つのプロトコルスタックを使える状態をデュアルスタックと呼びます

私が以前執筆した記事などを見ていただきたいのですが、IPv4とIPv6は異なるプロトコルなのでプロトコルスタックとしても別になります。
IPv6が登場する前は、以下のようなプロトコルスタックでした。


IPv4のみの場合のプロトコルスタック

しかし、IPv4よりアドレス空間が広いIPv6が利用されるようになった現在では、単一のプロトコルが前提であったネットワーク層にIPv4とIPv6といった2つのプロトコルが存在する状態になっています。
そのため、現在のインターネットの状態は以下のように表すことができます。


IPv4とIPv6の両方が存在するデュアルスタック

今後、2つの別のプロトコルが共存するデュアルスタック環境を意識しなければならない場面が増えていくと考えられます。

デュアルスタック環境でのDNSの役割

このように、IPv4とIPv6が並行して存在するデュアルスタックのインターネットでは、互換性のない2つのネットワーク層プロトコルが利用されます。
しかし、デュアルスタックになっても、ユーザーの視点からは単一のシステムとして機能しなければ困ります。

そのため、デュアルスタック環境ではDNS(Domain Name System)が重要になってきます。
DNSは、インターネットでの通信に必要な通信相手のIPアドレスを名前から得るための名前解決に利用されている仕組みです。

DNSを利用すると、同一のドメイン名に対してIPv4(Aレコード)とIPv6(AAAAレコード)の両方のアドレスを登録可能になり、IPv4とIPv6の両方に対応する名前を扱うことができます。
例えば、「http://www.example.com/」というURLを持つサーバと通信をする場合、IPv4によるかIPv6によるかに関わらず「www.example.com」が指し示すWebページに到達できるといったようにです。

IPv4とIPv6が混在しているデュアルスタック環境では両方の名前解決を実行します。この際にユーザー側がIPv4とIPv6のどちらを使用するか判断します。

そのため、IPv4とIPv6の両方に対応したアプリケーションは、どちらのプロトコルを使用するか判断するロジックが必要(一般的な方法として、IPv4とIPv6の両方で同時に接続を試み、先に成功した方を使用するといった方法が存在)になります。
もしIPv6の普及が進めば、IPv4とIPv6のどちらのプロトコルを使うのかを判断する必要がなくなるかもしれません。

おまけ デュアルスタック環境例

www.google.comは、IPv4アドレスとIPv6アドレスの両方が割り当てられているため、デュアルスタック環境で運用されていることが確認できます。


macOS上でnslookupコマンドを使用

さいごに

ここまで記事を読んでくださり、ありがとうございました!

この記事ではIPv4とIPv6のデュアルスタックについて紹介しましたが、より詳しく知りたい方は「小川晃通 著, プロフェッショナルIPv6 第2版, ラムダノート」や小川晃通氏のYouTube動画などを参考にしてください!

また、プロフェッショナルIPv6のPDF版は無料で利用可能なので、IPv6に興味を持った方はぜひ読んでみてください!

ネットワークは良いですよ!!!

皆さんも素敵なハッピーIPv6ライフを!!!🌸

GitHubで編集を提案

Discussion