IPv6アドレスの構造
IPv6アドレスは128ビットの値で、IPv4(32ビット)に比べてはるかに広大なアドレス空間を持ちます。16ビットずつ8つのヘクステット(hextet)に区切り、それぞれを16進数で表記し、コロン(:)で区切って表します。
2001:0db8:0000:0000:0000:0000:0000:0001表記の省略ルール
IPv6アドレスをそのまま書くと長く読みづらいため、次の2つの省略ルールが使えます。
- 先頭の0の省略:各ヘクステット内の先頭の連続する0は省略できます(例:
0db8→db8)。 - ゼロ圧縮(
::):連続する1つ以上の「オールゼロのヘクステット」は、アドレス全体の中で1箇所だけ::に置き換えて省略できます。
上記の例は、これらのルールを使って次のように省略できます。
2001:db8::1::による省略は1つのアドレスの中で1回しか使えません複数箇所で::を使うと、省略された0がどちらの箇所に何個ずつ含まれるのかが一意に決まらなくなるためです。もし複数箇所にオールゼロのヘクステット(単独のものを含む)がある場合は、連続するオールゼロのヘクステットのいずれか1箇所を::で省略できます。表記を統一する場合は、最も長く連続している箇所を::で省略することが推奨されます。[1]。
プレフィックス表記
IPv6でも、IPv4のCIDR表記と同様に、ネットワーク部(プレフィックス)のビット数をスラッシュに続けて表します(例:2001:db8::/64)。IPv6では、サブネットのプレフィックス長として/64を使うことが強く推奨されており、多くの設計で標準的に採用されていますIPv6ではアドレス空間が非常に広いため、IPv4のようにホスト数に応じてこまめにプレフィックス長を調整する必要性が薄く、SLAAC(後述)がホスト部64ビットを前提として設計されていることもあり、サブネットには一律/64を割り当てるのが一般的な設計指針とされています。[2]。
IOSでのIPv6アドレス設定・確認
静的設定
IPv6ルーティングを行うCiscoルータでは、まずグローバルコンフィギュレーションモードでipv6 unicast-routingを設定します。インターフェイスにIPv6アドレスを静的に設定するには、ipv6 addressコマンドを使います。
Router(config)# ipv6 unicast-routing
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 address 2001:db8:1::1/64
Router(config-if)# no shutdownSLAACとDHCPv6
IPv6には、IPv4のDHCPに相当する自動アドレス割り当ての仕組みとして、次の2つがあります。
- SLAAC(StateLess Address Autoconfiguration、ステートレスアドレス自動設定):ルータが定期的に送信するRA(Router Advertisement)メッセージに含まれるプレフィックス情報をもとに、端末自身が自分のインターフェイスID部分を生成し、アドレスを自動的に組み立てる仕組みです。DHCPサーバーのようにアドレスの割り当て状況を記録する中央のサーバーが不要(ステートレス)な点が特徴です。
- DHCPv6:IPv4のDHCPと同様に、DHCPv6サーバーがアドレスの割り当てを管理する(ステートフルな)仕組みです。SLAACと組み合わせて、アドレス以外の情報(DNSサーバーアドレス等)だけをDHCPv6で配布する運用(ステートレスDHCPv6)も広く使われます。DHCPv6はデフォルトゲートウェイを配布しないため、ホストはルータ情報をRAから取得します。DHCPv6の利用は、RAのMフラグ(ステートフルなアドレス設定)またはOフラグ(アドレス以外の設定情報)で通知されます。
IOSインターフェイスでのSLAAC・IPv6有効化
Cisco IOSのインターフェイスで、RAにより自律設定可能として通知されたプレフィックスを用いてSLAACでユニキャストアドレスを自動設定するには、ipv6 addressコマンドで具体的なプレフィックスを静的に指定する代わりに、次のコマンドを使います。
Router(config-if)# ipv6 address autoconfigこのコマンドを実行すると、インターフェイスはRAメッセージで自律設定可能として通知された、通常は/64のプレフィックスを受信し、SLAACによってユニキャストアドレスを自動的に生成・設定します。広告されるプレフィックスに応じて、グローバルユニキャストアドレスまたはULAが設定されます。
これとよく似ているものの、動作が異なるコマンドとして、次のものがあります。
Router(config-if)# ipv6 enableipv6 enableは、インターフェイス上でIPv6処理そのものを有効化し、リンクローカルアドレスのみを自動生成します。ipv6 address autoconfigとは異なり、グローバルユニキャストアドレスは生成されません。静的なipv6 address <プレフィックス>によるGUAの明示的な設定、SLAACによる自動設定(ipv6 address autoconfig)、そしてipv6 enableによるリンクローカルのみの有効化という3つの違いは、試験で混同しやすいポイントです。
設定の確認
show ipv6 interface briefコマンドで、インターフェイスに設定されたIPv6アドレスを一覧確認できます。自動生成されたリンクローカルアドレスのインターフェイスID部分は、機器やインターフェイスによって異なります。
Router# show ipv6 interface brief
GigabitEthernet0/0 [up/up]
fe80::a8bb:ccff:fedd:eeff
2001:db8:1::1IPv6アドレスタイプ
IPv4とは異なり、IPv6にはブロードキャストアドレスが存在しません。ブロードキャストの代わりに、マルチキャストなど他の仕組みが使われます。IPv6では、用途に応じて次のようなアドレスタイプが定義されています。
グローバルユニキャストアドレス(GUA)
インターネット上で一意にルーティング可能な、IPv4のグローバルアドレスに相当するアドレスです。グローバルユニキャストアドレスの形式としては、先頭が2000::/3の範囲(2または3で始まる)に割り当てられています。1対1(ユニキャスト)の通信に使われます。なお、本文中の2001:db8::/32は文書用に予約されたプレフィックスであり、実際のネットワークで使用するためのものではありません。
リンクローカルアドレス(Link-Local Address)
同一リンク(同一セグメント)内でのみ有効なアドレスです。先頭10ビットはFE80::/10であり、標準のリンクローカルアドレス形式では続く54ビットも0となるため、通常はFE80::/64として表されます。ルータを越えて転送されることはありません。IPv6が有効なすべてのインターフェイスには、GUAの設定有無にかかわらず、リンクローカルアドレスが必要です。Cisco IOSでは通常、リンクローカルアドレスが自動生成されますが、手動で設定することもできます。ルータ間のルーティングプロトコルの通信(OSPFv3等の近隣関係の確立)など、多くのIPv6の制御通信で使われる、重要なアドレスタイプです。
ユニークローカルアドレス(ULA:Unique Local Address)
FC00::/7はULAに割り当てられたアドレスブロックです。このうち、現在ローカルに生成・割り当てて使用するULAはFD00::/8の範囲です。FC00::/8は将来の定義のために予約されています。ULAはIPv4のプライベートアドレスに相当する、組織内部だけで使うことを想定したアドレスです。グローバルIPv6インターネットでルーティングすることは想定されていません。
マルチキャストアドレス(Multicast Address)
FF00::/8の範囲で、複数の宛先(マルチキャストグループに参加している機器)へ同時に送信するためのアドレスです。IPv6にはブロードキャストが存在しないため、IPv4でブロードキャストが使われていた用途(近隣探索等)の多くは、IPv6ではマルチキャストで代替されています。
エニーキャストアドレス(Anycast Address)
複数の異なる機器に同じアドレスを割り当て、送信元から見て(ルーティング上)最も近い1台にだけ届くようにする、特殊な使い方をするアドレスです。アドレス自体の形式はユニキャストアドレスと同じで、割り当て方によってエニーキャストとして機能します。
ループバックアドレス
::1(128ビット中、最後の1ビットのみ1)は、IPv4の127.0.0.1に相当する、自機器自身を指すループバックアドレスです。
未指定アドレス
::(128ビットすべてが0)は、アドレスが未設定であることを表す未指定アドレスです。ホストがアドレスを設定する前に送信元アドレスとして使用できますが、宛先アドレスとして使用したり、インターフェイスに割り当てたりすることはできません。
補足
- 複数箇所で
::を使うと、省略された0がどちらの箇所に何個ずつ含まれるのかが一意に決まらなくなるためです。もし複数箇所にオールゼロのヘクステット(単独のものを含む)がある場合は、連続するオールゼロのヘクステットのいずれか1箇所を::で省略できます。表記を統一する場合は、最も長く連続している箇所を::で省略することが推奨されます。 ↩ - IPv6ではアドレス空間が非常に広いため、IPv4のようにホスト数に応じてこまめにプレフィックス長を調整する必要性が薄く、SLAAC(後述)がホスト部64ビットを前提として設計されていることもあり、サブネットには一律
/64を割り当てるのが一般的な設計指針とされています。 ↩