IPv6めも

Contents:

IPv6アドレスについて

IPv6アドレスの正規化

RFC5952(A Recommendation for IPv6 Address Text Representation)にて定義されている。

http://www.slideshare.net/koyhoge/ipv6php

に分かり易いスライドがある。 これによると以下の通りの実装となる。

フィールド内の0省略

  • 各フィールドの”0”は省略できる 2001:0db8 -> 2001:db8

“::”による省略

  • 0000を::で省略できる
  • 連続した0000は::で省略できる
  • 「一番省略できる」ところを省略すること
  • 2か所以上あるなら一番前の方を省略

IPv6アドレスのプレーン化

$ php -r "echo bin2hex(inet_pton('ff02::1'));"
ff020000000000000000000000000001

ipv6calcを使いIPv6アドレスをplain表示か正規化する

ipv6calc --showinfo -q -m 2001:db8::1 | grep "^IPV.=" | cut -d '=' -f2
2001:0db8:0000:0000:0000:0000:0000:0001
ipv6calc --showinfo -q -m 192.168.0.1 | grep "^IPV.=" | cut -d '=' -f2
192.168.0.1
ipv6calc -q 2001:db8::1
2001:db8::1
ipv6calc -q 2001:0db8:0000:0000:0000:0000:0000:0001
2001:db8::1
ipv6calc -q 192.168.000.1