IPv4とIPv6の違い:アドレス、デュアルスタック、互換性
IPv4とIPv6は、どちらも現在のインターネットで使われているインターネットプロトコルの2つのバージョンです。IPv4アドレスの長さは32ビット、IPv6アドレスは128ビットです。IPv6のアドレス空間が広いからといって、接続が自動的に速くなったり安全になったりするわけではありません。性能や外部への露出は、経路、ネットワーク、設定によって決まります。
アドレスの表記とネットワークプレフィックス
IPv4は通常、192.0.2.10のように4つの10進数で書きます。IPv6はコロンで区切った16進数のグループを使い、ゼロが続くグループは2001:db8::10のように::で1回だけ省略できます。どちらの例も、実際に稼働している公開サーバーではなく、ドキュメント用に予約された範囲のアドレスです。スラッシュの後ろはネットワークプレフィックス長を表し、192.0.2.0/24や2001:db8::/32は個々のホストではなくブロックを指します。IPv4のサブネット計算は2IPのIPアドレス計算ツールで試せます。
端末に複数のアドレスが表示される理由
1台のコンピューターが、ローカルネットワーク上のプライベートIPv4アドレス、NAT経由で外から見えるIPv4アドレス、IPv6のリンクローカルアドレス、1つ以上のグローバルIPv6アドレスを同時に持っていることがあります。デュアルスタックでは、アプリケーションが利用可能なアドレスファミリーを選びます。DNSのAレコードはIPv4の宛先を、AAAAレコードはIPv6の宛先を示します。Webサイトが両方を公開することもできますが、AAAAレコードがあるだけでは、サーバー、経路、ファイアウォールがIPv6での接続を受け付けている証拠にはなりません。パケットの形式とHop LimitについてはIPv6の仕様で説明されています。
NATとアプリケーションの互換性
IPv4のアドレス空間には限りがあるため、プロバイダーは一般にNATを、場合によってはキャリアグレードNATを使い、端末にパブリックアドレスを共有させています。IPv6にはけた違いに多くのアドレスがあるため、こうしたアドレスの共有を強いられることなく、端末がグローバルアドレスを持てます。だからといってファイアウォールのルールが不要になるわけではありません。IPv4専用のアプリケーションが、DNSを変更しただけで急にIPv6を扱えるようになることもありません。アドレスファミリーをまたいで通信するには、適切な変換の仕組みを用意するか、通信の両端が両方のバージョンに対応している必要があります。
片方のバージョンだけ失敗するときの調べ方
Webサイトが表示されないときは、AレコードとAAAAレコードを問い合わせ、IPv4とIPv6それぞれでのアクセスを比べてみましょう。片方のバージョンでしかつながらない場合は、そのバージョンのアドレス、経路、DNSの結果、そしてルーターとサーバーの両方のファイアウォールルールを確認します。性能の違いは、アドレスのビット数ではなく、経路やネットワーク間の接続の違いを反映していることがあります。2IPのIPアドレス検索が表示するのは、そのリクエストで見えたアドレスであり、ほかのアプリケーションやリクエストでは別のアドレスが使われることもあります。障害を報告する前に、時刻とアドレスファミリーを記録しておきましょう。