IPv4マップドIPv6アドレス(::ffff:0:0/96)

::ffff:192.168.1.1のようなIPv4マップドIPv6アドレスについて学びます。デュアルスタックシステムがIPv6ソケットを通じてIPv4接続をどのように処理するかを理解します。

IPv6 Transition

詳細な説明

IPv4マップドIPv6アドレス

IPv4マップドIPv6アドレスはIPv6アドレス形式内にIPv4アドレスを埋め込み、プレフィックス::ffff:を使用します。デュアルスタックシステムがIPv6コンテキストでIPv4アドレスを表現するために使用されます。

形式

::ffff:a.b.c.d

例:
::ffff:192.168.1.1    (IPv6形式の192.168.1.1)
::ffff:10.0.0.1       (IPv6形式の10.0.0.1)
::ffff:127.0.0.1      (IPv6形式のループバック)

展開形式

::ffff:192.168.1.1

展開:
0000:0000:0000:0000:0000:ffff:c0a8:0101

c0a8:0101 = 192.168.1.1の16進数:
  192 = 0xc0, 168 = 0xa8, 1 = 0x01, 1 = 0x01

プログラミング例

// IPv6ソケット上のNode.jsサーバーがIPv4接続を受信:
server.on('connection', (socket) => {
  console.log(socket.remoteAddress);
  // IPv4クライアントの場合 "::ffff:192.168.1.100"
  // ネイティブIPv6クライアントの場合 "2001:db8::1"
});

重要な注意点

  • IPv4マップドアドレスはネットワーク上で送信されません — OS内部の表現です
  • 実際のネットワークトラフィックは標準IPv4パケットを使用
  • 一部のアプリケーションはアドレス表示時に::ffff:プレフィックスを除去します

ユースケース

IPv6デュアルスタックソケットで実行されているNode.js WebサーバーがIPv4訪問者のクライアントIPを::ffff:203.0.113.50、IPv6訪問者を2001:db8::1として記録し、レート制限のためにアドレスの正規化が必要になります。

試してみる — IP Address Analyzer

フルツールを開く