デュアルスタック
1台の機器やネットワークで、IPv4とIPv6の両方を同時に動かす方式。相手がIPv6に対応していればIPv6で、対応していなければIPv4で通信できる。
イマシルちゃんの解説
IPv6に引っ越すといっても、世の中のサイトが全部IPv6に対応しているわけじゃないんだ。
だから、しばらくはIPv4とIPv6の両方を使えるようにしておくのがデュアルスタック。
相手がIPv6を話せるならIPv6で、話せないならIPv4で話すんだよ。
しかも、IPv6でつながらないときは、こっそりIPv4に切り替えてくれるから、利用者は気づかないんだ。
……実は、その「気づかない」のが、管理する人にとっては困りものなんだよ!
より深い解説
定義
デュアルスタックは、端末やネットワーク機器のプロトコルスタックに、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の両方で整合させる |