IPv4 ↔ IPv6 変換ツール
プライバシー優先設計 — すべてブラウザ内で処理します
方向を切り替えて 192.0.2.1 のような IPv4 を貼り付けると、IPv4-mapped(::ffff:192.0.2.1)、完全展開形、IPv4-compatible の IPv6 表現が表示されます。IPv6 → IPv4 に切り替えれば、mapped アドレスから埋め込まれた IPv4 を取り出したり、任意の IPv6 を圧縮形と展開形で確認できます。
IPv4 を IPv6 に組み込む3つの表記
RFC 4291 は IPv6 内に IPv4 アドレスを表現する方法を2つ定義しています。現行は IPv4-mapped(::ffff:a.b.c.d)、古い方は IPv4-compatible(::a.b.c.d)で、新規コードでは非推奨ですが、古いドキュメントや一部のレガシースタックではまだ目にします。さらに完全展開形(16ビットの16進グループ8つ、省略なし)も返します。これは grep やバイト一致比較に便利です。
圧縮表記と展開表記
IPv6 は表記の短縮を許します。最長の連続した16ビットゼログループは :: 1つに置き換えできます。2001:db8:0:0:0:0:0:1 は 2001:db8::1 です。:: は1つのアドレスに一度しか登場できません。RFC 5952 はルールを定めています。16進は小文字、最長のゼロ列だけ圧縮、各グループ内の先頭ゼロは省略します。公開すべきは圧縮形、ipset や BPF などのツールが必要とするのは展開形です。
デュアルスタックのデバッグはなぜ重要か
デュアルスタックのサーバが IPv6 ソケット経由で IPv4 クライアントを受けると、カーネルはそれらを ::ffff: のマップ形式で公開します。すると、想定していた IPv4 のリストでログを検索しても引っ掛かりません。比較する前にこのコンバーターで正規化したり、トンネル越しに IPv4 と IPv6 が正しく相互運用しているかを確認したりするのに役立ちます。
よくある質問
- IPv4-mapped な IPv6 アドレスとは何ですか?
- RFC 4291 が定める ::ffff:0:0/96 に存在します。デュアルスタックソケットでは IPv4 クライアントを mapped アドレスとして公開できるため、ひとつの bind で両プロトコルを処理できます。
- なぜゼロ接頭辞のフォーマットが2種類あるのですか?
- ::a.b.c.d は IPv4-compatible 形式で、RFC 4291 で非推奨になりました。::ffff:a.b.c.d は現行の IPv4-mapped です。古いシステムが compatible 形式を出力するため、両方表示しています。
- ::ffff:a.b.c.d は非推奨ですか?
- いいえ。現代のデュアルスタックコードで IPv4 エンドポイントを表すには IPv4-mapped が推奨です。非推奨なのは ffff がない IPv4-compatible の方です。
- どんな IPv6 からも IPv4 を取り出せますか?
- mapped または compatible 範囲のときだけです。2001:db8::1 のような通常の IPv6 には取り出すべき IPv4 が存在せず、ツールは展開形と圧縮形のみを表示します。
- :: と 0:0:0:0:0:0:0:0 の違いは?
- 0:0:0:0:0:0:0:0 は明示的な unspecified アドレスで、:: はそれを圧縮した正規形です。IPv6 では :: が標準の表現です。
- 入力した IP はページの外に出ますか?
- 出ません。変換はこのタブの JavaScript で完結し、入力されたアドレスを取得・記録・保存することはありません。