2026年8月19日
2026年8月19日
IPv4 と IPv6 の違い|アドレス・仕組み・サーバー運用で気を付ける点
IPv4 と IPv6 の最も大きな違いはアドレスの長さで、IPv4 は32ビット、IPv6 は128ビットです。この差から、アドレスの表記、NAT の要否、アドレスの割り当て方、ネットワーク内の仕組み(ARP と NDP など)まで多くの点が変わります。この記事では、両者の違いを仕組みの面から整理したうえで、Web サーバーや WordPress を運用するときに IPv6 で気を付けるべき点を説明します。読み終えるころには、自分のサイトが IPv6 に対応しているかを確認し、対応時の落とし穴を避けられるようになります。
違いの一覧
まず主な違いを表にまとめます。細かい点は後の節で説明します。
| 項目 | IPv4 | IPv6 |
|---|---|---|
| アドレス長 | 32ビット | 128ビット |
| 表記 | 192.0.2.10(10進数を4つ) | 2001:db8::10(16進数を8組、:: で0の連続を省略) |
| ループバック | 127.0.0.1 | ::1 |
| プライベート用途 | 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 | ユニークローカル fc00::/7、リンクローカル fe80::/10 |
| ブロードキャスト | あり | なし(マルチキャストで代替) |
| 同一リンク上の相手の解決 | ARP | NDP(ICMPv6 を利用) |
| アドレスの自動設定 | DHCP | SLAAC と DHCPv6 |
| 経路途中での分割(フラグメント) | ルーターも行う | 送信元だけが行う |
| ヘッダ | 可変長(20バイト以上) | 固定40バイト+拡張ヘッダ |
| DNS レコード | A | AAAA |
アドレスと表記の違い
IPv4 のアドレスは約43億個しかなく、すでに新規の割り当てはほぼ尽きています。IPv6 は桁違いに多く、一般的な回線でも利用者ごとに /64 以上のまとまった範囲が割り当てられます。
IPv6 の表記には省略のルールがあります。各組の先頭の0は省略でき、0が続く組は :: で1回だけまとめられます。例えば 2001:0db8:0000:0000:0000:0000:0000:0010 は 2001:db8::10 と書きます。同じアドレスでも書き方が複数あるため、ログを検索したり設定ファイルで比較したりするときは、表記をそろえてから比べる必要があります。
URL に IPv6 アドレスを直接書くときは、ポート番号の : と区別するため角括弧で囲みます。
curl -I 'http://[2001:db8::10]:8080/'
なお、本記事で例に使っている 192.0.2.0/24 と 2001:db8::/32 は、どちらも文書の例示用に予約された範囲です。
NAT とファイアウォールの考え方
IPv4 では、家庭や社内の機器はプライベートアドレスを持ち、ルーターの NAT で1つのグローバルアドレスを共有するのが一般的です。NAT があるため、外部から内部の機器へは、ポート開放をしない限り直接接続されません。
IPv6 ではアドレスが十分にあるため、各機器がグローバルアドレスを持つのが基本で、NAT は通常使いません。そのため「NAT があるから外から見えない」という前提は成り立たず、ファイアウォールで受信を制御することが重要になります。サーバーでは、IPv4 用と IPv6 用のファイアウォールルールが別々に管理される場合があります(iptables と ip6tables など)。IPv4 側だけ閉じて IPv6 側が開いたまま、という設定漏れはよくある事故です。ufw や nftables の inet ファミリーのように両方をまとめて扱える仕組みでも、IPv6 が有効になっているかを確認してください。
ネットワーク内の仕組みの違い
IPv6 では ARP の代わりに NDP(近隣探索)が使われ、これは ICMPv6 のメッセージで動きます。また、IPv6 ではルーターが途中でパケットを分割しないため、経路の途中で通せる最大サイズ(MTU)を超えた場合は、ICMPv6 の「Packet Too Big」で送信元に知らせます。
このため、IPv4 の感覚で ICMP をすべて遮断すると、IPv6 では「接続はできるが大きなページや画像の読み込みが途中で止まる」といった分かりにくい障害が起きます。ICMPv6 は必要な種類を許可するのが基本です。IPv6 で保証される最小の MTU は1280バイトです。
アドレスの割り当てでは、IPv6 の SLAAC により、ルーターの通知をもとに端末が自分でアドレスを作れます。端末によってはプライバシー保護のため一時的なアドレスを定期的に作り直すため、同じ利用者でも時間によって IPv6 アドレスが変わることがあります。
サーバー・WordPress 運用で気を付ける点
DNS に AAAA レコードを追加する前に
AAAA レコードを公開すると、IPv6 を使える利用者は IPv6 で接続してきます。クライアントは IPv4 と IPv6 の両方を試して早く応答した方を使う仕組み(Happy Eyeballs)を持つことが多いものの、IPv6 側が「つながるが応答しない」状態だと、表示が遅くなる利用者が出ます。AAAA を追加する前に、Web サーバーが IPv6 で待ち受けているか、ファイアウォールで 80/443 番が IPv6 でも許可されているか、証明書と表示内容が IPv4 と同じかを確認してください。
dig AAAA example.com +short
curl -6 -I https://example.com/
curl -4 -I https://example.com/
IP アドレスを扱う設定とコード
IPv6 で接続が来ると、PHP の $_SERVER['REMOTE_ADDR'] には IPv6 のアドレスが入ります。IPv4 を前提にした処理は、次の点で問題が起きやすくなります。
.htaccessや nginx のアクセス制限に IPv4 アドレスだけを書いていると、IPv6 で接続した管理者が締め出される、または制限をすり抜ける。- アドレスを保存するデータベースの列が短すぎる。IPv6 の文字列表記は最大45文字程度になるため、余裕のある長さにする。
- 正規表現で IPv4 の形式だけを想定している。
アドレスの判定には、PHP の filter_var() を使うのが確かです。
<?php
$ip = isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '';
if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) {
// IPv6 のアドレス
} elseif ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
// IPv4 のアドレス
}
IPv6 では1つの利用者が /64 などの範囲をまるごと使えるため、1つのアドレスを遮断しても、範囲内の別のアドレスから接続し直せます。ログイン試行の制限などで IPv6 を扱うときは、/64 単位で数えるかどうかを検討してください。対応はセキュリティプラグインによって異なるため、各プラグインの説明を確認します。
リバースプロキシや CDN の背後にある場合
Cloudflare などの CDN やロードバランサーを使っていると、サーバーに届く接続元は CDN 側のアドレスになり、利用者の本来のアドレスは X-Forwarded-For などのヘッダで渡されます。このとき、CDN とサーバーの間が IPv4 で、利用者は IPv6、ということも起こります。ヘッダの値を信用するのは、信頼できるプロキシから来た接続に限ってください。
IPv6 の普及状況をどう考えるか
IPv6 の利用率は国や回線によって差があり、日本でも固定回線・携帯回線の両方で IPv6 の利用が広がっています(2026年10月現在)。一方で IPv4 しか使えない利用者や社内ネットワークも残っているため、サイトを公開する側は IPv4 と IPv6 の両方で同じように接続できる状態(デュアルスタック)を目指すのが現実的です。
まとめ
- IPv4 は32ビット、IPv6 は128ビットで、表記・NAT・自動設定・近隣探索の仕組みが異なります。
- IPv6 では NAT に頼れないため、IPv4 と IPv6 の両方でファイアウォールを設定します。
- ICMPv6 をすべて遮断すると、MTU の調整が働かず通信が途中で止まることがあります。
- AAAA を公開する前に、IPv6 での待ち受け・許可ルール・証明書を確認します。
- WordPress のIP制限やコードは、IPv6 のアドレスと /64 単位の割り当てを前提に見直します。