デュアルスタック
1台の機器やネットワークで、IPv4とIPv6の両方を利用できるようにする方式。IPv4の相手とはIPv4で、IPv6の相手とはIPv6で通信し、二つの環境を共存させる。
イマシルちゃんの解説
IPv6へ移行するときも、IPv4だけで動く機器やサービスとの通信は残しておきたいよね。
そこで、一つの端末やネットワークで二つのIPを使えるようにする共存方式がデュアルスタックだよ。
端末にはIPv4用とIPv6用のアドレスを持たせ、接続先や使える通信経路に合わせて使い分けるんだ。
IPv4の通信をIPv6に変換するのではなく、それぞれの方式で相手とやり取りするよ。
すべてを一度に入れ替えなくても、既存の通信を続けながらIPv6を導入できるのが利点なんだ。
この解説はわかりやすかったですか?
より深い解説
定義
デュアルスタックは、端末やネットワーク機器のプロトコルスタックに、IPv4とIPv6の両方を実装し、両方のアドレスを持たせて動作させる方式である。IPv4からIPv6への移行の期間に、最も一般的に使われる。
IPv4とIPv6の共存の方式
| 方式 | 内容 |
|---|---|
| デュアルスタック | IPv4とIPv6の両方を動かす |
| トンネリング | 一方のプロトコルのパケットを、もう一方のパケットに入れて運ぶ(IPv6 over IPv4 など) |
| トランスレーション | NAT64とDNS64などで、IPv6だけの端末がIPv4のサーバと通信できるように変換する |
どちらで通信するか
デュアルスタックの端末は、DNSにAAAAレコード(IPv6アドレス)とAレコード(IPv4アドレス)の両方を問い合わせる。両方が得られた場合、一般にIPv6を優先する(RFC 6724のアドレス選択の規則)。
ただし、IPv6の経路が壊れていると、IPv6で接続を試みてタイムアウトするまで待たされ、利用者の体感が悪くなる。そこで、現在のOSやブラウザは、Happy Eyeballs(RFC 8305)という方式を使う。
- AAAAとAを並行して問い合わせる
- IPv6で接続を試み、短い時間(目安として250ミリ秒程度)待っても接続できなければ、並行してIPv4でも接続を試みる
- 先に接続できたほうを使う
Happy Eyeballsの落とし穴
Happy Eyeballsは利用者にとって便利だが、ネットワークの運用の面では注意が必要である。
| 状況 | 起きること |
|---|---|
| IPv6のネットワークだけが不通になる | 端末は自動的にIPv4にフォールバックして、同じWebページにアクセスできてしまう |
| その結果 | 利用者は異常に気付かないため、情報システム部門に連絡が来ない。IPv6の障害が放置される |
そのため、デュアルスタックのネットワークでは、IPv6の経路を、IPv4とは別に監視する(監視サーバから、IPv6でインターネットへのアクセスや、各拠点の機器のGUAへの ping6 を定期的に行う)ことが重要になる。
セキュリティ上の注意
| 注意点 | 内容 |
|---|---|
| NAPTの有無 | IPv4ではNAPTによって外部から内部へ接続しにくいが、IPv6ではNAPTを使わず、すべての端末がGUAを持つ。ファイアウォールで、外部からの通信を明示的に制御する必要がある |
| ICMPv6 | 近隣探索やパスMTU探索にICMPv6を使うため、すべて遮断すると通信障害が起きる。必要な種類(Packet Too Big など)は許可する |
| 両方の管理 | ファイアウォールのルールや監視を、IPv4とIPv6の両方で整合させる |