2026年5月24日
2026年5月24日
IPv4とIPv6の違いと共存方法(デュアルスタック・トンネル・変換の選び方)
IPv4 と IPv6 は互換性のない別のプロトコルで、いまのインターネットでは両方が並行して使われています。この記事では、運用で効いてくる違いを押さえたうえで、両者を共存させる3つの方式(デュアルスタック・トンネル・変換)の仕組みと、Web サーバーを IPv4/IPv6 の両方で公開するときの手順と注意点を説明します。
運用で効いてくる違い
アドレスの長さ(IPv4 は32ビット、IPv6 は128ビット)は有名ですが、サーバーを運用する立場では次の違いのほうが影響します。
- 表記: IPv4 は
203.0.113.10のような10進4区切り、IPv6 は2001:db8::10のような16進8区切りで、連続するゼロは::で1回だけ省略できます。URL に書くときはhttp://[2001:db8::10]/と角括弧で囲みます。 - NAT の前提: IPv4 はアドレス不足のため、家庭や社内では NAT で1つのグローバルアドレスを共有するのが普通です。IPv6 は端末ごとにグローバルアドレスを持てるため、NAT に頼らず、ファイアウォールで通信を制御する考え方になります。
- アドレスの自動設定: IPv6 では、ルーターの広告(RA)をもとに端末がアドレスを自分で作る SLAAC と、DHCPv6 の両方があります。1つのインターフェースに複数のアドレス(リンクローカル、グローバル、一時アドレスなど)が付くのが通常の姿です。
- ARP とブロードキャストが無い: IPv6 では ARP の代わりに ICMPv6 の近隣探索(NDP)を使います。そのため ICMPv6 をまとめて遮断すると通信そのものが成り立たなくなります。IPv4 の感覚で「ICMP は全部閉じる」とすると失敗する代表例です。
- フラグメント: IPv6 では途中のルーターがパケットを分割しないため、経路 MTU の検出(ICMPv6 の Packet Too Big)が届かないと、大きな通信だけが止まる症状になります。
共存させる3つの方式
IPv4 だけの機器と IPv6 だけの機器は、そのままでは直接通信できません。そこで次の3つの方式を組み合わせて共存させます。
デュアルスタック
1台の機器に IPv4 と IPv6 の両方のアドレスを持たせ、相手に応じて使い分ける方式です。サーバー公開ではこれが基本形で、DNS に A レコード(IPv4)と AAAA レコード(IPv6)の両方を登録します。
両方に対応したクライアントは、Happy Eyeballs(RFC 8305 など)と呼ばれる仕組みで IPv6 と IPv4 をほぼ同時に試し、早くつながったほうを使います。このため「IPv6 側だけ壊れている」状態でも、利用者は気付きにくいことがあります。逆に言えば、IPv6 の不具合は自分で確認しないと見つかりません。
トンネル
IPv6 のパケットを IPv4 のパケットに包んで運ぶ(またはその逆)方式です。6in4 などがあり、IPv4 しか通らない区間を越えるために使われます。設定が手作業になりやすく、MTU が小さくなる点に注意が要ります。
変換(トランスレーション)
アドレスそのものを変換して、異なるプロトコル同士をつなぐ方式です。IPv6 だけのネットワークから IPv4 のサイトへ接続するための NAT64 と DNS64 の組み合わせや、スマートフォン回線で使われる 464XLAT などがあります。
日本の光回線では、IPoE で IPv6 を使い、その上で IPv4 を運ぶ「IPv4 over IPv6」(MAP-E や DS-Lite などの方式)が広く使われています。この場合、IPv4 のグローバルアドレスを他の契約者と共有していることがあり、ポート開放が制限されるなど、自宅でサーバーを公開する際の制約になります。仕様や提供条件は事業者ごとに異なるため、契約先の案内で確認してください(2026年10月現在)。
Web サーバーをデュアルスタックで公開する手順
WordPress を載せたサーバーを IPv6 でも見えるようにする流れです。作業前に設定ファイルのバックアップを取り、可能なら検証用のサブドメインで試してから本番に反映します。
1. サーバーに IPv6 アドレスが付いているか確認する
ip -6 addr show scope global
ip -6 route show default
グローバルな IPv6 アドレスとデフォルトルートが無ければ、まず VPS やクラウドの管理画面で IPv6 を有効にします。クラウドでは、ネットワーク(VPC など)側で IPv6 の割り当てを有効にしないとインスタンスに付かない構成もあります。
2. Web サーバーに IPv6 で待ち受けさせる
nginx は listen を IPv4 と IPv6 で別々に書くのが一般的です。
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
# 以下、既存の設定
}
Apache は Listen 80 の書き方で両方を待ち受ける構成が多いですが、ディストリビューションの設定次第です。どちらの場合も、変更後は nginx -t や apachectl configtest で文法を確認してから再読み込みします。待ち受けは次で確認できます。
ss -tlnp | grep -E ':80|:443'
3. ファイアウォールを IPv6 にも設定する
見落としが多いのがここです。iptables と ip6tables は別のルールセットで、IPv4 側だけ設定して IPv6 側が無防備、あるいは逆に IPv6 側が全部閉じている、ということが起こります。ufw を使う場合は、設定ファイル(Ubuntu では /etc/default/ufw)で IPv6 が有効になっているかを確認してください。クラウドのセキュリティグループも、IPv4 と IPv6 のルールは別々に追加する必要があります。前述のとおり ICMPv6 は必要な種類まで閉じないようにします。
4. AAAA レコードを追加して確認する
サーバー側の準備が終わってから AAAA レコードを登録します。順序が逆だと、IPv6 で来た利用者だけが接続できない時間が生まれます。
dig +short AAAA example.com
curl -6 -I https://example.com/
curl -4 -I https://example.com/
curl -6 と curl -4 の両方で同じ応答が返れば、デュアルスタックで公開できています。SSL 証明書はドメイン名に対して発行されるため、IPv6 対応のために作り直す必要は通常ありません。
WordPress 側で気を付けること
- IP アドレスを使う機能: ログイン制限やセキュリティ系プラグインの許可リスト、
.htaccessのRequire ipは、IPv6 で来た管理者を IPv4 のリストでは許可できません。自分の IPv6 アドレス(またはそのプレフィックス)も登録します。IPv6 の一時アドレスは定期的に変わるため、単一アドレスより/64などの範囲で書くほうが運用しやすい場面があります。 - 外部への通信: サーバーから外部 API や更新サーバーへの接続が IPv6 経由で失敗する場合、IPv6 の経路やファイアウォールが原因のことがあります。
curl -6で接続先を個別に確かめると切り分けられます。 - ログ: アクセスログやコメントに記録される IP が IPv6 表記になります。集計スクリプトが IPv4 の形式しか想定していないと、正しく数えられません。
まとめ
- IPv4 と IPv6 は別プロトコルで、NAT の前提、ARP と NDP、ICMP の扱いが大きく違う
- 共存方式はデュアルスタック・トンネル・変換の3つで、サーバー公開の基本はデュアルスタック
- 公開手順は「IPv6 アドレス確認 → 待ち受け → ファイアウォール → AAAA レコード」の順
- IPv6 の不具合は Happy Eyeballs で隠れやすいので、
curl -6で自分で確認する - WordPress の IP 制限や許可リストには IPv6 側の登録も必要