IPv4→IPv6変換ツール

IPv4からIPv6への変換ツールです。IPv4アドレスを入力すると、それを含むすべてのIPv6アドレスを表示します。ログで見かけるIPv4射影アドレスからNAT64、6to4まで、RFC 5952の表記と完全表記で示し、それぞれが「使用中」「現在はまれ」「非推奨」のどれに当たるかも示します。

RFC 4291、6052、8215、3056のビット配置 · RFC 5952の表記 · ブラウザー内で動作

読み取った形式: ドット付き10進表記

192.0.2.33を含むIPv6アドレス
ドキュメント用アドレス (RFC 5737)10進数 322122601716進数 0xC0000221
IPv4射影アドレス 使用中ソケット、ログ、データベース · RFC 4291
NAT64、ウェルノウンプレフィックス 使用中IPv6専用ネットワークからIPv4への接続 · RFC 6052例示用のアドレス:実際に使うにはグローバルなIPv4が必要です
ネットワーク独自のNAT64プレフィックス 使用中ネットワークが通知するプレフィックスと長さ · RFC 6052
ネットワークのNAT64プレフィックスを追加
NAT64、ローカル用途ブロック 使用中/96で表示。長さはネットワークが決めます · RFC 8215
6to4 現在はまれサイトの/48 · RFC 3056例示用のアドレス:実際に使うにはグローバルなIPv4が必要です
ISATAP 現在はまれfe80::/64の下(どの/64でも可) · RFC 5214
IPv4-translated 現在はまれ旧式のステートレス変換(SIIT) · RFC 2765
IPv4互換アドレス 非推奨用途なし:廃止済み · RFC 4291
例

ドット付き10進表記、1つの数値(3221225985)、16進数、URLのどれでも入力できます。変換はブラウザー内で行い、何も送信しません。

IPv4をIPv6に変換する方法は?

IPv4アドレスの32ビットを16進数の2つのグループで書き、IPv6の形式がそれを置く位置に入れます:一般的なIPv4射影アドレスでは::ffff:の後なので、192.0.2.33は::ffff:c000:221になり、::ffff:192.0.2.33と書きます。

10進数の各部分が16進数2桁になり(192 = c0、0 = 00、2 = 02、33 = 21)、その4組で16ビットのグループが2つできます。RFC 5952は、ビットの意味が分かるように、::ffff:の後はドット付きの形のまま書くことを推奨しています。

変わるのはアドレスの書き方だけです。これで端末にIPv6アドレスやIPv6接続が与えられるわけではありません。それらはネットワークから提供されます。

1各部分を16進数に192c00002023321
216ビットのグループ2つにc000 : 221c0 00 → c000 · 02 21 → 0221 → 221
3プレフィックスの後ろへ::ffff:192.0.2.33= ::ffff:c000:221
192.0.2.33をIPv4射影アドレスに変換する手順です。
IPv4→IPv6変換ツールで、192.0.2.33のすべてのIPv6形式と32ビットの入る位置を一覧表示した画面IPv4→IPv6変換ツールで、192.0.2.33のすべてのIPv6形式と32ビットの入る位置を一覧表示した画面16進数にしたIPv4192.0.2.33はc0 00 02 21:どのIPv6形式にも入る8桁です。ビットの行き先同じ8桁が、射影アドレスとNAT64ではビット96–127に、6to4ではビット16–47に入ります。今も使われている?使用中、現在はまれ、非推奨のいずれか。RFCと通信量のデータに基づきます。ネットワークのプレフィックスNAT64プレフィックスと長さを入力すると、変換装置が使うアドレスが分かります。省略か完全かRFC 5952の表記と、その下にもう一方の書き方。スイッチ1つで32桁すべてを表示します。
1つのIPv4アドレスをすべてのIPv6形式で表示:32ビットが入る位置と、その形式が今も使われているかどうか。

どのIPv6形式を使えばよいですか?

ソフトウェア内(ソケット、ログ、データベース)ではIPv4射影アドレスを、IPv6専用ネットワークではネットワークのNAT64プレフィックスを使います。その他の形式は、現在はまれか廃止されています。

射影アドレスがネットワーク上に現れることはありません。NAT64アドレスは現れ、ウェルノウンプレフィックス64:ff9b::/96にはグローバルなIPv4アドレスしか入れてはなりません(RFC 6052)。6to4にもパブリックIPv4アドレスが必要です。

IPv4互換アドレスは非推奨で、SIITのIPv4-translatedプレフィックスはRFC 6052のプレフィックスに取って代わられました。

形式用途状態192.0.2.33の変換結果
IPv4射影アドレスRFC 4291ソケット、ログ、データベース使用中::ffff:192.0.2.33
NAT64、ウェルノウンプレフィックスRFC 6052IPv6専用ネットワークからIPv4への接続使用中64:ff9b::c000:221
NAT64、ローカル用途ブロックRFC 821564:ff9b:1::/48内で運用する独自のNAT64使用中64:ff9b:1::c000:221
6to4RFC 3056自動トンネル、現在はまれ現在はまれ2002:c000:221::/48
ISATAPRFC 52141つのサイト内のトンネル、現在はまれ現在はまれfe80::5efe:c000:221
IPv4-translatedRFC 2765旧式のステートレス変換(SIIT)現在はまれ::ffff:0:192.0.2.33
IPv4互換アドレスRFC 4291用途なし:廃止済み非推奨::c000:221
1つのIPv4アドレスの標準的なIPv6形式すべてと、その用途、現在も使われているかどうか。

IPv4射影アドレス(IPv4-mapped IPv6アドレス)とは?

IPv4アドレスをIPv6アドレスとして書いたもので、ゼロのビット80個、1のビット16個、続いて32ビットのIPv4アドレスからなります(::ffff:0:0/96)。これにより、IPv6ソケット1つで動くソフトウェアがIPv4の相手も扱えます。

射影アドレスはソフトウェアの内部にしか存在せず、IANAはこのブロックを転送不可としています。これにはセキュリティ上の側面があります:::ffff:127.0.0.1からのパケットが、そのマシン自身からの通信だけを通すためのチェックを通過してしまうことがあるため、フィルターは比較の前に射影を解除する必要があります(RFC 4942)。

データベースもこれを認識します:MySQLのIS_IPV4_MAPPED()はドット付きと16進数のどちらの末尾も受け付け、PostgreSQLはIPv6とIPv4の混在表記で表示します。

ゼロのビット80個0000:0000:0000:0000:00001のビット16個ffffIPv4アドレス、32ビット192.0.2.33
ソフトウェアの内部 accept() → ::ffff:192.0.2.33
ネットワーク上 送信されることはない IANA:転送不可
::ffff:192.0.2.33の128ビットを実際の比率で示し、この形式が存在する場所を表しています。

IPv4からIPv6への移行はどのように進むのですか?

ネットワークは両方のプロトコルを並行して運用し(デュアルスタック)、IPv6専用ネットワークは変換によってIPv4のインターネットに到達します:DNS64と組み合わせたNAT64、またはスマートフォンでは464XLATです。

NAT64では、DNS64がホストのAレコードからAAAAレコードを作り、変換装置が通信をIPv4へ中継します。464XLATでは、スマートフォン上の変換装置(CLAT)がアプリのIPv4パケットをIPv6に変換し、プロバイダーのNAT64(PLAT)がそれを共有のパブリックアドレス上でIPv4に戻します。

移行はおよそ半分まで進んでいます:2026年10月22日には利用者の47.13%がIPv6でGoogleにアクセスしており(Google)、APNIC Labsは世界の利用者の43.8%をIPv6対応と集計しています。

IPv6とIPv4が出会う現在の3つの方法と、普及の進み具合(2026年10月22日)。

IPv4とIPv6は相互に通信できますか?

直接はできません:IPv6のみのホストとIPv4のみのホストの間には、IPv6クライアントがIPv4サーバーに接続するためのNAT64のような変換装置が必要です。一方、デュアルスタックのホストは相手が持つプロトコルをそのまま使います。

2つのプロトコルはパケットの形式が異なるため、何かが各パケットを書き換える必要があります。ステートレスな変換装置(SIIT、RFC 7915)はRFC 6052のプレフィックスを使ってアドレスを1対1で対応させ、NAT64は多数のIPv6クライアントでIPv4アドレスを共有します。

そのため、ほとんどのネットワークは両方のプロトコルを動かし続けています:デュアルスタックの端末には変換がまったく必要ありません。

クライアント ↓ · サーバー →IPv4のみIPv6のみデュアルスタック
IPv4のみIPv4変換装置(SIIT)IPv4
IPv6のみNAT64 + DNS64IPv6IPv6
デュアルスタックIPv4IPv6どちらでも
どちらからどちらへ接続でき、間に何が入るか。

コードでIPv4をIPv6に変換するには?

ほとんどの言語では1回の呼び出しで済みます:PythonのIPv4Address.ipv6_mapped、GoのnetipのIs4In6とUnmap、MySQLのINET6_ATONとIS_IPV4_MAPPED、PostgreSQLのinet型です。

Python 3.13でipv6_mappedが追加され、射影アドレスをドット付きの形で表示するようになりました。GoのAddr.Stringは::ffff:192.0.2.33と表示し、Unmapは通常のIPv4アドレスを返します。Nodeのnet.isIP()は射影アドレスに対して6を返し、net.BlockListはIPv4のルールをこれに照合します。

› import ipaddress
ipaddress.IPv4Address('192.0.2.33').ipv6_mapped
IPv6Address('::ffff:192.0.2.33')

Python 3.13+

› a := netip.MustParseAddr("::ffff:192.0.2.33")
fmt.Println(a.Is4In6(), a.Unmap())
true 192.0.2.33

Go net/netip

› SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:192.0.2.33'));
1

MySQL 8.4

› SELECT inet '::ffff:192.0.2.33';
::ffff:192.0.2.33

PostgreSQL 16

› net.isIP('::ffff:192.0.2.33')
6

Node.js net

同じIPv4射影アドレスを5つの言語とデータベースで扱った場合と、それぞれの出力。

よくある質問

192.168.1.1をIPv6で表すと?

IPv4射影アドレスとして書くと::ffff:192.168.1.1、最後の32ビットを16進数にすると::ffff:c0a8:101です。この形式はソフトウェアの内部で使うもので、ルーターにIPv6アドレスを与えるわけではありません。192.168.1.1はプライベートアドレスなので、NAT64のウェルノウンプレフィックス64:ff9b::/96の後ろに使ってはならず、6to4のプレフィックスにはパブリックIPv4アドレスが必要です。

IPv4をIPv6に変換すると、端末にIPv6アドレスが付きますか?

いいえ。IPv4アドレスをIPv6の形で書いても、同じ32ビットの書き方が変わるだけで、端末にはIPv6の接続性がないままです。IPv6アドレスはネットワークから提供されます:ルーターやプロバイダーがプレフィックスを配布し、端末はそこから自分のアドレスを作ります。接続でIPv6が使えるかどうかは、IPv6接続確認テストで確認できます。

データベースにはどのIPv6形式で保存すべきですか?

アドレスは文字列ではなくバイナリで保存します。MySQLのINET6_ATONはIPv6なら16バイト、IPv4なら4バイトを返し、IS_IPV4_MAPPEDでどのIPv6の値がIPv4射影アドレスかを判別できます。1つの列で両方のアドレスファミリーを16バイトで保持する必要があるなら、IPv4をIPv6として書く標準の方法はIPv4射影形式の::ffff:a.b.c.dです。PostgreSQLのinet型はどちらのファミリーもそのまま保存できます。

::ffff:192.0.2.1と::ffff:c000:201は同じですか?

はい。どちらも同じ128ビットを表しており、前者は最後の32ビットをドット付きのIPv4アドレスで、後者は16進数の2つのグループで書いています。RFC 5952はIPv4射影アドレスにはドット付きの形を推奨していますが、ブラウザーはURL内で16進数の形を表示します。こうした書き方どうしが一致するよう、アドレスは文字列ではなく必ず数値として比較してください。

64:ff9b::10.1.1.1が無効なのはなぜですか?

NAT64のウェルノウンプレフィックスには、グローバルなIPv4アドレスしか入れられないからです。RFC 6052は、64:ff9b::10.1.1.1のようにプライベートIPv4アドレスを埋め込んだアドレスを無効とし、変換装置はそこに送られたパケットを破棄しなければなりません。プライベートなど、グローバルでないIPv4アドレスを入力すると、変換ツールはNAT64の行に警告を表示します。6to4にはパブリックアドレスが必要なので、6to4の行にも表示します。

IPv4アドレスの6to4アドレスとは?

2002:とIPv4アドレスの16進数からなる/48のプレフィックスです。192.0.2.33なら2002:c000:221::/48となり、サイトはその中でサブネットとホストに番号を振っていました。6to4にはパブリックIPv4アドレスが必要なので、プライベートアドレスには有効な6to4プレフィックスがありません。RFC 7526は6to4を機能させていた公開リレーを廃止しており、現在この形式を見かけることはまれです。

IPv6を使っている人はどれくらいいますか?

約半分です。2026年10月22日には利用者の47.13%がIPv6でGoogleにアクセスし、APNIC Labsは2026年10月21日までの30日間で、世界の利用者の43.8%をIPv6対応、40.9%をIPv6優先と計測しています。残りは今もIPv4のみを使っているため、ネットワークは両方のプロトコルを並行して動かすか、その間で変換を行っています。

IPv6専用のスマートフォンはどのようにIPv4のWebサイトに接続するのですか?

464XLATを使います。スマートフォン上の変換装置であるCLATがアプリのIPv4パケットをステートレスにIPv6に変換し、プロバイダーのNAT64であるPLATが共有のパブリックアドレス上でIPv4に戻します。ホスト名については、DNS64がAレコードからAAAAレコードを作るため、64:ff9b::c000:221のようなアドレスが現れます。スマートフォンはipv4only.arpaを調べて、ネットワークのプレフィックスを見つけます。

PythonでIPv4をIPv6に変換するには?

Python 3.13以降では、ipaddress.IPv4Address('192.0.2.33').ipv6_mappedがIPv6Address('::ffff:192.0.2.33')を返します。それより古いバージョンでは、文字列から作ります:ipaddress.IPv6Address('::ffff:192.0.2.33')。Pythonは3.13と3.12.11以降、射影アドレスをドット付きの形で表示し、それより前のリリースは::ffff:c000:221と表示します。どちらも同じアドレスなので、文字列ではなくオブジェクトを比較してください。

入力した内容はサーバーに送信されますか?

いいえ。このページのすべての形式はブラウザー内で計算されるため、入力するそばから結果が表示されます。リンクをコピーすると、アドレスと、入力したNAT64プレフィックスがURLの#の後に入ります。ブラウザーがサーバーに送ることのない部分なので、リンクを開いた人にも同じ変換結果が表示されます。ページのスクリプトを読み込めなかった場合に限り、変換ボタンは通常のページのリクエストを送ります。