IPv6覚書き

## アドレスの長さ
IPv4のアドレスは32bit(4byte)
IPv6のアドレスは128bit(16byte)

## IPv6アドレス構造
上位64bitがプレフィックス
下位64bitがインターフェイスID

## IPv6表記規則
16bit毎に:で区切って、8つの16進数で表記する。
例) 2408:211:d3ce:2345:cc1c:b132:3de:b81d
各16進数の先頭で連続する0は表記しない。
省略前) 2408:0211:d3ce:2345:cc1c:b132:03de:b81d
省略後) 2408:211:d3ce:2345:cc1c:b132:3de:b81d
16bit値が0になり、それが続く場合は::で省略する。::の表記は1回だけ使用できる。
省略前) 2408:211:d3ce:2345:0:0:0:1
省略後) 2408:211:d3ce:2345::1

## IPアドレス自動生成
IPv6はIPv4と異なり、デフォルトでIPアドレスを自動生成する。
IPv6対応のネットワークにIPv6対応の端末を接続すると、IPv4のDHCPのように、何も設定せずにネットワークが利用可能になる。
グローバルプレフィックスはルーターから情報をもらう。グローバルプレフィックスは2000::/3から始まる。(2xxx::または3xxx::)
ローカルプレフィックスは固定値。(fe80::/64)
インターフェイスIDはMACアドレスを元にして自動生成される。
プレフィックスが異なる場合に、同じインターフェイスIDを流用したりはしない。(ubuntu20.04で確認)
また、DHCPによりインターフェイスIDを集中管理する事もできる。

## IPアドレス複数割当
IPv6は、1つのインターフェイスに対して複数のIPアドレスを割り当てられる。
1つのインターフェイスが、複数のローカルユニキャストアドレス、複数のグローバルユニキャストアドレス、複数のローカルマルチキャストアドレス、複数のグローバルマルチキャストアドレスを持つ事ができる。
マルチキャストアドレスのプレフィックスはff00::/8から始まる。
マルチキャスト経路のルーターは、そのマルチキャストパケットをホップするかどうかの一覧を保有する。

## プライベートアドレスとセキュリティ
IPv4のプライベートアドレスのような運用は、IPv6ではローカルユニキャストアドレスで行う事ができる。
ただし、IPv6のローカルユニキャストアドレスとグローバルユニキャストアドレスは併用されるので、閉じたネットワークとはならず、セキュリティ的には大きく異なる。

## linux補足事項
デフォルトのインターフェイス名eth0はリネームされている場合があり、下記のコマンドでリネーム後の名前を確認できる。
$ dmesg|grep eth0
IPアドレスは下記のコマンドで確認できる。
$ ip address show dev eth0
ローカルユニキャストアドレスに対してpingを打つ場合は、-Iオプションでインターフェイスを指定しないとエラーになる。
$ ping -I eth0 fe80::1:2:3:4

## 特殊アドレス
::	未指定アドレス
::1	ループバック

## 日本に割当られているIPv6アドレス
https://www.nic.ad.jp/ja/dns/ipv6-addr-block.html

## 地域的なIPv6アドレス割当を行う組織
統括　　　　　IANA https://www.iana.org/numbers
アフリカ　　　AFRINIC http://www.afrinic.net/
アジア太平洋　APNIC http://www.apnic.net/
北米　　　　　ARIN http://www.arin.net/
南米　　　　　LACNIC http://www.lacnic.net/
ヨーロッパ　　RIPENCC http://www.ripe.net/

## 地域的なIPv6アドレス割当の歴史(アドレス順)
ソース) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml
1999/07/01 2001:00xx: 統括
1999/07/01 2001:01xx: 統括
1999/07/01 2001:02xx: アジア
1999/07/01 2001:03xx: アジア
1999/07/01 2001:04xx: 北米
1999/07/01 2001:05xx: 北米
1999/07/01 2001:06xx: ヨーロッパ
1999/07/01 2001:07xx: ヨーロッパ
2002/11/02 2001:08xx: ヨーロッパ
2002/11/02 2001:09xx: ヨーロッパ
2002/11/02 2001:0axx: ヨーロッパ
2002/11/02 2001:0bxx: ヨーロッパ
2002/05/02 2001:0cxx: アジア
2002/05/02 2001:0dxx: アジア
2003/01/01 2001:0exx: アジア
2003/01/01 2001:0fxx: アジア
(隙間)
2002/11/01 2001:12xx: 南米
2002/11/01 2001:13xx: 南米
2003/07/01 2001:14xx: ヨーロッパ
2003/07/01 2001:15xx: ヨーロッパ
2003/07/01 2001:16xx: ヨーロッパ
2003/07/01 2001:17xx: ヨーロッパ
2003/04/01 2001:18xx: 北米
2003/04/01 2001:19xx: 北米
2004/01/01 2001:1axx: ヨーロッパ
2004/01/01 2001:1bxx: ヨーロッパ
2004/05/04 2001:1cxx: ヨーロッパ
2004/05/04 2001:1dxx: ヨーロッパ
2004/05/04 2001:1exx: ヨーロッパ
2004/05/04 2001:1fxx: ヨーロッパ
2019/03/12 2001:2xxx: ヨーロッパ
2019/03/12 2001:3xxx: ヨーロッパ
2004/06/11 2001:40xx: ヨーロッパ
2004/06/11 2001:41xx: ヨーロッパ
2004/06/01 2001:42xx: アフリカ
2004/06/01 2001:43xx: アフリカ
2004/06/11 2001:44xx: アジア
2004/06/11 2001:45xx: アジア
2004/08/17 2001:46xx: ヨーロッパ
2004/08/17 2001:47xx: ヨーロッパ
2004/08/24 2001:48xx: 北米
2004/08/24 2001:49xx: 北米
2004/10/15 2001:4axx: ヨーロッパ
2004/10/15 2001:4bxx: ヨーロッパ
2004/12/17 2001:4cxx: ヨーロッパ
2004/12/17 2001:4dxx: ヨーロッパ
(隙間)
2004/09/10 2001:5xxx: ヨーロッパ
(隙間)
2004/11/30 2001:8xxx: アジア
2004/11/30 2001:9xxx: アジア
2004/11/30 2001:axxx: アジア
2006/03/08 2001:bxxx: アジア
(隙間)
2001/02/01 2002: 6to4
2005/01/12 2003:00xx: ヨーロッパ
2005/01/12 2003:01xx: ヨーロッパ
2005/01/12 2003:02xx: ヨーロッパ
2005/01/12 2003:03xx: ヨーロッパ
(隙間)
2006/10/03 240x: アジア
2024/11/01 241x: アジア
(隙間)
2006/10/03 260x: 北米
2005/11/17 2610:00xx: 北米
2005/11/17 2610:01xx: 北米
(隙間)
2006/09/12 2620:00xx: 北米
2006/09/12 2620:01xx: 北米
(隙間)
2019/11/06 263x: 北米
(隙間)
2006/10/03 280x: 南米
(隙間)
2006/10/03 2a0x: ヨーロッパ
2019/06/05 2a1x: ヨーロッパ
(隙間)
2006/10/03 2c0x: アフリカ