[IPv6とは]
IPv4アドレスが枯渇に備えて開発されたプロトコル。
IPv4の32bitに対してIPv6は128ビット(※)のアドレス長のため実質無制限にアドレスを割り当てられる。。
※最大340澗 ( 340,282,366,920,938,463,463,374,607,431,768,211,456 ) 個
特徴としては
・16進数表記
→128ビットを16bitごとにコロン(:)で区切り、8つのフィールドに分け16進数で表記。
さらに以下のような省略表記が可能。
-先頭の0は省略OK(0111→111,0001→1)
-全て0のフィールドは1つの0に省略OK(0000→0)
-全て0のフィールドが連続している場合は、0を全て省略して
2重コロン(::)に省略OK。(2001:0000:0000:aaaa...→2001::aaaa...)
※ただしアドレス内で一度だけしか使えない。
・自動設定機能
→IPv6は自動設定機能を備えており、クライアントPCは自動的に
IPv6アドレスを使用できる。
・経路集約
→IPv6アドレスの階層構造が厳密であるため、より効率的な経路集約を実現し
ルータの負荷を軽減。
・シンプルなヘッダ
→IPv6の簡素なヘッダにより、パケット転送の際のルーティング処理による
負荷が軽減される。
(具体的にはチェックサムが削除されたことでエラー処理が不要になった。)
・モビリティ(移動性)
→ IPv6のMobile IPv6により移動通信中でも同一のIPアドレスを使用して通信を途切れなく通信できる。
・セキュリティ(安全性)
→IPv6はIPsecの実装が必須であり、実装させたい場合は、特別な機器を必要せずIPsecを実装できる。
・複数アドレス
→IPv4では1NIC1アドレスだったが、IPv6はリンクローカル&グローバル等
複数タイプのアドレスが割り当てられる。
IPv6アドレスは、プレフィックスとインターフェースIDにより構成される。
※プレフィックス=IPv4のネットワーク部に該当。
インターフェースID=IPv4のホスト部に該当。
[IPv6アドレスの種類]
▼アドレスタイプ
・ユニキャストアドレス(1対1)
→IPv4のユニキャストと同じように、1対1の通信で利用されるアドレス。
このアドレスを使用し、1つのインターフェースを特定することができる。
・マルチキャストアドレス(1対グループ)
→IPv4のマルチキャストと同じく、1対グループの通信で利用されるアドレス。
マルチキャストは複数のインターフェースに割り当てることのできるアドレス。
IPv6ではブロードキャストアドレスが存在しないため、マルチキャストアドレス
の一部を同様の用途に割り振ることでブロードキャストと同等機能を実現。
・エニーキャストアドレス(1対グループ内の1つ)
→IPv4にはないアドレス。マルチキャストと同じくグループ宛ての通信となるが
グループに属する1つのインターフェースにパケットが到達すると、それ以上は
配送されない。つまりグループで最も近いデバイスとだけ通信するようになる。
エニーキャストは複数のインターフェースに割り当てることのできるアドレス。
▼ユニキャストアドレス
・リンクローカル(同セグ用)
→同セグの端末と通信する場合に使用するアドレス。
リンクローカルアドレス宛てのパケットはルーティングされない。
※ルータを超えられない。
先頭の10ビットが「1111 1110 10(FE80::/10)」続く54bitが
全て0になるため「FE80::/64」の範囲となる。
・ユニークローカル(イントラ用)
→IPv4のプライベートアドレスに相当する。異なるセグメント上の端末と
通信できるが組織内ネットワーク(イントラネット)でのみ有効なアドレス。
アドレスブロックは「FC00::/7」のIPv6アドレスとなるが、正確には
以下の2つの「/8」のグループに分類することができる。
・FC00::/8 将来の定義用
・FD00::/8 アドレス中のグローバル識別子部分をランダムな値とし自由に使用可能
・グローバルユニキャスト(グローバル)
→IPv4のグローバルアドレスに相当する。全てのIPv6ネットワークで一意となる。
ローカル、組織内、インターネット等スコープの制限はなくどこでも利用可能。
IANAが管理しており、現在解放されているグローバルユニキャストアドレスは
以下のとおり。
・「 2001::/3 」から始まるアドレス→ISP用
・「 2000::/3 」を用途別に /16 で以下のように分類。
→「 2001::/16 」 ⇒ IPv6インターネット用アドレス
→「 2002::/16 」 ⇒ 6to4用アドレス
→「 2003::/16 ~ 3FFD::/16 」 ⇒ 現在、未割り当て
▼マルチキャストアドレス
・マルチキャストアドレスは先頭の8ビットが「1111 1111(FF00::/8)」から始まる。
次の4ビットはフラグ、次の4ビットはスコープ、最後の112ビットはグループID。
フラグは、IANAによって永続的に割り当てられるものは 0 、
一時的に割り当てられるものは 1 と指定。
[アドレス割り当て]
IPv6アドレスは、64ビットのプレフィックスと64ビットのインターフェースIDにより
構成される。
インターフェースIDは「手動」/「自動」のどちらかで構成。
自動で生成する場合、EUI-64と呼ばれるフォーマットを使用して自動生成する。
EUI-64は、IEEEによって標準化された64ビット長の識別子。
EUI-64による自動生成は、48ビットのMACアドレスの中央に
16ビットの「FFFE」を追加して64ビットに拡張することで
インターフェースIDが生成される。
EX)0050:5680:ABCDの場合
1.48bitのMACを24bitに分割し「FFFE」を挿入
0050:56FF:FE80:ABCD
2.先頭から7bit目を反転
00000000→00000010
3.16進数に戻してインターフェースID完成
0250:56FF:FE80:ABCD
4.完成したインターフェースIDにプレフィックスをプラスし
リンクローカルアドレス完成。
FE80::0250:56FF:FE80:ABCD/64
[Neighbor Discovery]
IPv6ではNeighbor Discovery(ND)機能を使用しアドレスを解決する。
(IPv4でいうARP)
このNeighbor Discovery(近隣探索)は、ICMPv6の
Neighbor Solicitation(NS)メッセージを送信し、本メッセージを受信したノードは
Neighbor Advertisement(NA)メッセージを送信して応答し、ノード間で
IPv6通信が可能となる。
NSメッセージがARPリクエスト、NAメッセージがARPリプライに相当。
①MACアドレスを知るため、ICMPv6のNeighbor Solicitation送信
②ICMPv6のNeighbor Advertisement受信、(これにMACアドレスが乗っている)
③MACアドレス情報をキャッシュへ保存
「show ipv6 neighbors」コマンドでキャッシュ情報を確認する。
[ステートレス/ステートフル自動設定]
▼ステートレス自動設定
ステートレス自動設定では「プレフィックス」が自動的に設定され、
「インターフェースID」はEUI-64で生成される。
このステートレス自動設定はオートコンフィグレーションとも呼ばれる。
この方法はIPv6対応のルータとIPv6対応の端末とが、RSとRAメッセージを
やり取りすることで実現。
・RS(Router Solicitation/FF02::2)
ルータ要請。IPv6対応ホストが、IPv6対応ルータに送信するメッセージ。
IPv6のプレフィックス、デフォルトゲートウェイ等を要求するメッセージ。
・RA(Router Advertisement/FF02::1)
ルータアドバタイズメント。RSを受信したときに応答するメッセージ。
ホストに割り当てるプレフィックス、デフォルトゲートウェイの情報を含む。
①IPv6対応のホストはインターフェースでIPv6が有効であれば、
リンクアップした時点でリンクローカルアドレスが自動設定される。
②次にそのリンクローカルアドレスを送信元アドレスとして同セグ内のルータへ
RS(ルータ要請)メッセージを送信し、グローバルユニキャストの
プレフィックスを得る。
③ホストからRSメッセージを受信したルータはRA (ルータアドバタイズメント) を
送信します。この情報にIPv6ホストに割り当てるプレフィックス、
デフォルトゲートウェイ、有効期限などの情報が含まれています。
④RAを受信したホストは受信したプレフィックスと自身のMACアドレスを利用して
EUI-64により生成したインターフェースIDを組み合わせることで、
グローバルユニキャストアドレスを生成し自動設定が完了する
▼ステートフル自動設定
ステートフル自動設定では「プレフィックス と インターフェースID」を
DHCPv6サーバにより割り当てます。
またDHCPv4と同様にDNSサーバ等の情報も割り当て可能。
①Solicit(要請)/host→Server
②Advertise(通知)/Server→host
③Request(要求)/host→Server
④Reply(アドレス、オプション情報提供)/Server→host
ただしDHCPv6サーバ単体だけでは完全に機能しない。
ルータが送信するRA(Router Advertisement)のMフラグ/Oフラグという
2つのフィールドと連携する必要がある。
・Mフラグ
IPv6アドレスをDHCPv6サーバで取得するか、RAで得たプレフィックスから
自身で生成するかを決定。
ONの場合、DHCPv6サーバから取得する。
OFFの場合、RAで得たプレフィックスから自身で生成する。
・Oフラグ
IPv6アドレス以外のパラメータをDHCPv6サーバから取得するか、
取得しないかを決定。
ONの場合、DHCPv6サーバから取得する。
OFFの場合、DHCPv6サーバから取得しない(手動設定)
Ciscoのインターフェースはデフォルトで、MフラグOフラグともに
OFF( 0 )のためステートレス自動設定となる。
※アドレスは自身で生成、その他(DNS等)は手動設定
Mフラグ、Oフラグの設定方法は以下のコマンドにより変更可能
◆ Cisco IOS - M(Managed)フラグのON(1)にするための設定
Cisco(config-if) # ipv6 nd managed-config-flag
◆ Cisco IOS - O(Other Config)フラグのON(1)にするための設定
Cisco(config-if) # ipv6 nd other-config-flag
またDHCPv6-PD(prefix delegation)と呼ばれる
ホストまたはルータにプレフィックスのみを払い出すものもある。