これからIPv6を扱うエンジニアが知っておいた方がよい知識
そこまでガッツリではないものの、最近IPv6を扱う機会があったので、付け焼き刃程度にIPv6を勉強しました。
IPv4しか知らないエンジニアがIPv6を扱うとき、最低限知っておくとよいと感じた知識をメモしておきます。
Contents
アドレス構造
- 128ビットのアドレス構造を持つ。
- 前半64ビットは、ネットワークID。IPv4で言うところのネットワーク部。
- 後半64ビットは、インターフェースID。IPv4で言うところのホスト部。
表記方法
基本方針
- 16ビット毎に、”:”で区切って16進数で表記する。
- “:”で区切られた1つの16ビット区間をセグメントと呼ぶ。
- 基本的には”:”が7個、8セグメンントに分けられる。1セグメントは0000〜ffff。
例: 2001:0db8:bd05:01d2:288a:1fc0:0001:10ee
0の省略
- 1つのセグメントの先頭から0が続いている部分は0を省略できる。
例: 2001:0db8:bd05:01d2:288a:1fc0:0001:10ee
→ 2001:db8:bd05:1d2:288a:1fc0:1:10ee
- 全て0のセグメントが連続している場合は、まとめて”::”で省略できる。
- セグメント跨ぎの0の省略は1ヶ所しかできない。
- 一番0が多く連続しているセグメントの塊を省略する。
- 0同じ数連続しているセグメントの塊が複数ある場合は最初の塊を優先する。
例: fe80:0000:0000:0000:0001:0000:0000:0001
→ fe80::1:0:0:1
アドレスの種類
パケット送信方法別の分類
- ユニキャストアドレス: 一つのノードにパケットを送信するためのアドレス。よく使うのはこれ。
- マルチキャストアドレス: 複数のノードにパケットを送信するためのアドレス。ブロードキャストアドレスの代わりにも使われる。
- エニーキャストアドレス: 複数のノードのうち、ネットワーク上一番近い1台にのみパケットを送信するためのアドレス。
グローバルユニキャストアドレス
- IPv4で言うところのグローバルIPアドレス。
- インターネット上で通信できる。
- プレフィックスは常に2000::/3となる。(第一セグメントは16進数で2000〜3fffと覚える)
リンクローカルユニキャストアドレス
- NIC初期化時に自動的に設定される。
- インターネットとは通信できない。
- プレフィックスは常にfe80::/64となる。(第一セグメントが16進数でfe80と覚える)
ユニークローカルユニキャストアドレス
- IPv4で言うところのプライベートIP。
- インターネットとは通信できない。
- プレフィックスは常にfd00::/8となる。(第一セグメントは16進数でfd00〜fdffと覚える)
特殊な用途のアドレス
- 0:0:0:0:0:0:0:0(::) 未指定アドレス。プログラムで言うnullのようなもの。
- 0:0:0:0:0:0:0:1(::1) ループバックアドレス。IPv6はこの1種類のみ。
プロトコルの特徴
ペイロードの暗号化
- IPv6パケットはIPSec(ESP)でペイロードが暗号化されている。
MACアドレス解決
- ARPの代わりに近隣探索 (Neighbor Discovery)という方法が使われる。
- ICMPv6でマルチキャストアドレスへリクエストを投げ、応答パケットから通信先のMACアドレスを得る。
アドレス自動設定
- DHCPがなくてもリンクローカルユニキャストアドレスで各ノードのアドレス自動設定が可能。
- リンクローカルユニキャストアドレスを設定したノードと同じセグメントに接続されているルータは、ノードに対してネットワーク情報(RA)を定期的に配信している。
- RAを受信したノードは、送信元のルータをデフォルトゲートウェイに設定する。
- RAの仕組みでは名前解決はできないので、別途手動設定かDHCPv6が必要。
IPv4との平行利用
- 2019年現在、IPv4との平行利用についてデファクトスタンダード的な技術はまだなく、様々な方式が混在している。
- トンネリング(カプセル化)やトランスレーション(ヘッダ書き換え)などの方式がある。
- フレッツ網では、IPoEと呼ばれる技術で宅内ルータからインターネットへIPv6通信ができる。
- IPv4 over IPv6と呼ばれる技術を使うと、IPv4パケットをIPv6パケットでカプセリングし、IPoEの経路内へ流すことができる。IPS側でIPv6のカプセリングを解くことで、LAN内のノードからインターネットに対して、IPv4アドレスパケットのまま通信ができる。