IPv6アドレス省略・展開ツール
IPv6アドレスを唯一の正規の省略表記にするか、32桁すべてに展開します。どのゼロが消えるか、なぜその連続が::になったか、入力がRFC 5952のどの規則に反していたかも表示します。リストもまとめて変換できます。
読み取った形式: IPv6
アドレス1つ、または1行に1つずつ並べたリスト(最大100件)を入力します。変換はブラウザー内で行い、何も送信しません。
2001:db8::1:0:0:1
RFC 5952の規則ごとのチェック
- 省略表記(RFC 5952)
- 完全表記
- URLでの表記
- 1つの数値として
- 10進数 · 16進数 · 2進数
- 逆引きDNS名
IPv6アドレスを省略するには?
小文字にし、各グループの先頭のゼロを削除してから、すべてゼロのグループが2個以上続く最長の部分を::に置き換えます。同じ長さの連続が2つあれば、最初の方を置き換えます。
こうして得られるのが、RFC 5952がソフトウェアに出力を求める唯一の正規表記です。プログラムは入力としてそれ以外の有効な書き方もすべて受け付けなければならないため、省略してもアドレス自体は変わらず、変わるのは書き方だけです。
2001:0DB8:0000:0000:0000:FF00:0042:8329392001:0db8:0000:0000:0000:ff00:0042:8329392001:db8:0:0:0:ff00:42:8329272001:db8::ff00:42:83292239 → 22 文字

入力した内容大文字や先頭のゼロがあっても構いません:有効な書き方ならどれでも読み取ります。削除されるゼロ先頭のゼロを、グループごとに取り消し線で示します。::になる連続ゼロのグループの最長の連続。同じ長さなら最初の方です。残る連続その他のゼロの連続は0を残し、その理由を示します。規則ごとのチェック入力がRFC 5952の規則にいくつ反していたか。その下のチェックリストで、各規則と変更点を示します。IPv6アドレスの省略表記のルールは?
RFC 5952は5つの規則を定めています:先頭のゼロを削除する、::はできるだけ長くする、ゼロのグループ1つだけには::を使わない、最長の連続を省略する(同じ長さなら最初)、16進数の英字は小文字で書く。
6つ目の推奨は、IPv4を含むアドレスについてです:::ffff:のようなプレフィックスの後は、最後の32ビットをドット付きのIPv4アドレスで書きます。ツールは入力を各規則と照らし合わせ、修正した規則を示します。
1先頭のゼロを削除§4.1
正しい: 2001:db8::1
誤り: 2001:0db8::0001
2::はできるだけ長く§4.2.1
正しい: 2001:db8::2:1
誤り: 2001:db8:0:0:0:0:2:1
31グループだけに::を使わない§4.2.2
正しい: 2001:db8:0:1:1:1:1:1
誤り: 2001:db8::1:1:1:1:1
4最長の連続、同じ長さなら最初§4.2.3
正しい: 2001:db8::1:0:0:1
誤り: 2001:db8:0:0:1::1
5小文字§4.3
正しい: 2001:db8::a
誤り: 2001:DB8::A
+末尾のIPv4表記§5
正しい: ::ffff:192.0.2.1
誤り: 0:0:0:0:0:ffff:192.0.2.1
IPv6アドレスを展開するには?
記述されているグループを数え、合計が8つになるまでのゼロのグループを::が表すものとして補い、各グループを4桁にゼロ埋めします:2001:db8::1には3つのグループがあるので、::は5つ分です。
展開した形は、逆引きDNSがニブル(16進数1桁)ごとに使う形であり、多くのログや表計算で文字列として並べ替えるのに必要な形でもあります。Pythonでは.exploded、GoではStringExpandedと呼びます。
2001db8::13 記述されたグループ2001db8000001+ 5 ::が表すゼロのグループ20010db80000000000000000000000014桁にゼロ埋め1つのIPv6アドレスには何通りの表記がありますか?
たくさんあります:先頭のゼロ、大文字・小文字、::の位置がそれぞれ変わりうるため、1つのアドレスに有効な書き方が多数あります。RFC 5952は、1つの正規表記を定める前に、2001:db8:0:0:1:0:0:1の書き方を8通り挙げています。
アドレスを文字列として比較すると失敗するのはこのためです:同じアドレスの2つの書き方が一致しません。代わりに128ビットの数値として比較するか、先に両方を省略表記にしてください。
2001:db8:0:0:1:0:0:12001:0db8:0:0:1:0:0:12001:db8::1:0:0:12001:db8::0:1:0:0:12001:0db8::1:0:0:12001:db8:0:0:1::12001:db8:0000:0:1::12001:DB8:0:0:1::12001:db8::1:0:0:1正規表記 · RFC 5952ポートやゾーン付きのIPv6アドレスをURLに書くには?
アドレスを角かっこで囲み、http://[2001:db8::1]:8443/のように書きます。こうすればポートがグループと取り違えられません。%eth0のようなゾーンは、ブラウザーのURLには一切書けません。
RFC 5952はポートのあるアドレスを角かっこで囲むよう求めており、2001:db8::1:8443は推奨しないとしています。URLで角かっこが使われるのはこの用途だけです。ブラウザーは::ffff:の後でもアドレスを16進数で表示するため、[::ffff:192.0.2.1]は[::ffff:c000:201]と表示されます。
ゾーンは、fe80::1%eth0のように1台のマシン上のインターフェースを指します。RFC 9844は2025年にこれをURLから再び除外し、ブラウザーも受け付けませんが、プログラムでは入力できるようにしておくべきです。
ゾーン(%eth0) · fe80::1%eth0
| プログラムの入力欄に入力 | 可 |
| ブラウザーのURL | 拒否 |
| inet_pton() | 解析できない |
| グローバルアドレス | ゾーンは付かない |
コードでIPv6を省略・展開するには?
アドレスを解析して出力します:Pythonの.compressed、Goのnetip.Addr.String()、MySQLのINET6_NTOA(INET6_ATON(…))は正規の表記を返し、.explodedとStringExpanded()は完全表記を返します。
Pythonのstr()も省略表記を返し、Pythonは%zoneの接尾辞も受け付けます。MySQLは小文字で最大39文字を出力し、どのプラットフォームでも同じ結果になります。
› import ipaddress a = ipaddress.ip_address('2001:0DB8::0001') a.compressed, a.exploded ('2001:db8::1', '2001:0db8:0000:0000:0000:0000:0000:0001')
Python ipaddress
› a := netip.MustParseAddr("2001:0DB8::0001") fmt.Println(a.String(), a.StringExpanded()) 2001:db8::1 2001:0db8:0000:0000:0000:0000:0000:0001
Go net/netip
› SELECT INET6_NTOA(INET6_ATON('2001:0DB8::0001')); 2001:db8::1
MySQL 8.4
よくある質問
2001:0db8:0000:0000:0000:ff00:0042:8329の省略表記は?
IPv6アドレスで::は2回使えますか?
2001:db8:0:1:1:1:1:1を2001:db8::1:1:1:1:1と省略しないのはなぜですか?
IPv6アドレスは大文字と小文字のどちらで書くべきですか?
IPv6アドレスの::を展開するには?
最も長いIPv6アドレスは何文字ですか?
::ffff:c000:280が::ffff:192.0.2.128になるのはなぜですか?
ポート付きのIPv6アドレスをURLに書くには?
PythonでIPv6アドレスを省略表記にするには?
IPv6アドレスのリストをまとめて省略できますか?
足りないものはありますか?機能や新しいツールを提案する
関連ツール
IPv6からIPv4変換
IPv6に含まれるIPv4を抽出:射影・NAT64・6to4・Teredo・ISATAPをビット単位で
IPv4からIPv6変換
IPv4アドレスのすべてのIPv6形式:射影・NAT64・6to4、使用中か、まれかも表示
IPから10進数変換
IPアドレスと10進数・16進数・2進数・8進数を相互変換、各オクテットの重みも表示
自分のIPアドレス確認
パブリックIPのIPv4とIPv6を同時に表示。ネットワーク、位置情報、VPNチェック付き
IPv6接続確認テスト
IPv6が使えるか、ブラウザーがどちらを選ぶか、サイトのIPv6対応を確認
サブネット計算機
IPv4・IPv6ブロックのネットワーク、ブロードキャスト、使用可能なホスト、マスクを計算。VLSM、分割、クラウドのサブネットにも対応
逆引きDNS
PTRレコードでIPアドレスに関連するホスト名を検索
DNS検索
ドメイン自身のネームサーバーから全DNSレコードを取得し、GoogleとCloudflareのキャッシュと比較