目次
IPv6アドレスの設定方法
IPv6アドレスは128ビットの16進数です。IPv6アドレスは表記がわかりにくいうえに長く、ホスト1台1台にIPv6アドレスを設定していくという作業は考えただけでも面倒です。そこで、IPv4のときと同じようにIPv6にはアドレスを動的に設定するための機能が備わっています。
IPv6アドレスを設定する方法は、主に次の3つあります。
- 手動設定
- SLAAC(Stateless Address Auto Configuration : ステートレスアドレス自動設定)
- DHCPv6 (ステートフル/ステートレス)
手動設定は、1つ1つアドレスを手動で設定する方法です。ルータやスイッチなどのネットワーク機器やアドレスを固定する必要があるサーバでは、IPv4のときと同様にIPv6アドレスを手動で設定することが多いでしょう。そして、一般のユーザが利用するPCやスマートフォンなどは、IPv4のときと同じように、アドレスを自動設定することが多いでしょう。IPv6では、DHCPv6やSLAACによってアドレスを自動設定できます。
CiscoルータでのIPv6アドレスの手動設定のためのコマンドについて、以下の記事で解説しています。
以降、動的にIPv6アドレスを設定するためのSLAACとDHCPv6の仕組みについて解説します。
SLAACによるIPv6アドレスの設定
SLAACによるIPv6アドレス設定の概要を表したのが、次の図です。
ホストがネットワークに接続すると、まずは、自動的にリンクローカルアドレスを割り当てます。そして、そのリンクローカルアドレスを送信元IPv6アドレスとして、RS(Router Solicitation)を送信してRAを要求します。RSの宛先はFF02::02(全ルータマルチキャストアドレス)です。
それに対して、ルータはRA(Router Advertisement)でローカルネットワーク上にそのネットワークのネットワークアドレス(プレフィクス)の情報を送信します。RSもRAもICMPv6のメッセージです。RSはICMPv6のタイプ133、RAはICMPv6のタイプ134で定義されています。RAは、RSの応答としてだけではなく、定期的にローカルネットワーク上にマルチキャストします。
RAで64ビットのプレフィクスがわかり、残り64ビットのインタフェースIDを各ホストが一意に生成すれば、全体として一意のIPv6アドレスができることになります。各ホストのイーサネットインタフェースのMACアドレスは、原則として一意であることから、MACアドレスから64ビットのインタフェースIDを生成すれば、一意のインタフェースIDになります。ただし、MACアドレスは48ビットなので、そのままではインタフェースIDにはできません。そこで、modified EUI-64という方式に基づいて48ビットのMACアドレスから64ビットのインタフェースIDを生成します。 こうして、SLAACでは、 次のようなIPv6アドレスを自動的に設定します。
各ホストのIPv6アドレス=ルータが送信したプレフィクス(64ビット) +modified EUI-64形式でMACアドレスから生成したインタフェースID(64ビット)
また、ホストにはデフォルトゲートウェイが必要ですが、RAの送信元IPv6アドレスをデフォルトゲートウェイとします。RAの送信元IPv6アドレスはRAを送信するルータのインタフェースのリンクローカルアドレスです。
DHCPv6
IPv4と同じようにIPv6でもDHCPサーバから自動的にIPv6アドレスを取得することができます。DHCPv6では、クライアントとサーバ間で次の4つのメッセージのやり取りを行うのが基本です。
- Solicit
- Advertise
- Request
- Reply
DHCPv6クライアントはSolicitメッセージを送信して同一ネットワーク上のDHCPv6サーバを探します。DHCPv6サーバはAdvertiseメッセージで返事を返します。そして、クライアントはRequestメッセージでIPv6アドレスをはじめとする設定情報を要求します。DHCPv6サーバからReplyメッセージで設定情報を通知し、DHCPv6クライアントは受信した情報をもとにIPV6アドレスなどの設定を行います。
また、DHCPv6はトランスポート層にUDPを利用するアプリケーション層に位置するプロトコルで、ポート番号は546(クライアント)/547(サーバ)です。そして、メッセージのやり取りのために、以下のマルチキャストアドレスが予約されています。
- FF02::1:2 (All_DHCP_Relay_Agents_and_Servers)
- FF05::1:3 (All_DHCP_Servers)
IPv6アドレス自動設定のまとめ
ここまでIPv6アドレスの自動設定について、SLAACとDHCPv6の概要について触れています。IPv6アドレスだけではなくDNSサーバのIPアドレスなどの付加情報も必要です。IPv6アドレスや付加情報の自動設定を行うために、次のようないくつかのパターンがあります。
設定方法 | RAのM/O フラグ | IPv6アドレスの設定 | DNSサーバの設定 | |
1 | SLAAC | フラグなし | RA | 手動設定 |
2 | ステートフルDHCPv6 | M/O | DHCP | DHCP |
3 | ステートレスDHCPv6 | O | RA | DHCP |
このパターンはRAのMフラグとOフラグによって区別されることになります。Mフラグ(Managed Address Configuration Flag)は、IPv6アドレスの設定情報をどのように取得するかを表します。MフラグがOnの場合、DHCPv6で取得します。Oフラグ(Other Configuration Flag)は、DNSサーバのアドレスなどIPv6アドレス以外の設定情報をDHCPv6で取得するかを表しています。OフラグがOnであれば、DHCPv6でDNSサーバなどのIPv6アドレス以外の情報を取得します。
SLAACでのIPv6アドレスの設定
SLAACでIPv6アドレスを設定するときには、RAメッセージのMフラグ、OフラグともにOffです。ホストのIPv6アドレスはRAメッセージのプレフィクスと自身のMACアドレスから自動的に生成します。そして、デフォルトゲートウェイはRAの送信元のリンクローカルアドレスです。DNSサーバは手動で設定します。
ステートフルDHCPv6
ステートフルDHCPv6はIPv6アドレスもDNSサーバもDHCPv6で設定します。ホストはRSを送信して、ルータからRAメッセージが送信されます。RAメッセージのMフラグ、OフラグともにOnになっていると、ホストはDHCPv6 Solicitメッセージを送信して、IPv6アドレスをはじめとする設定情報を取得します。
ステートレスDHCPv6
ステートレスDHCPv6は、RAメッセージからIPv6アドレスを取得して、DNSサーバの情報をDHCPv6で取得します。ホストのRSメッセージに対して、ルータからRAメッセージが送信されます。RAメッセージのMフラグはOffでOフラグがOnです。ホストのIPv6アドレスはRAメッセージから自動的に生成します。そして、DHCPv6 Information-requestメッセージを送信して、DHCPによってDNSサーバの情報を取得します。
IPv6
- [演習] IPv6ルーティング RIPng&OSPFv3
- IPv6ヘッダフォーマット
- IPv6アドレスの表記フォーマット
- IPv6ユニキャストアドレス
- IPv6マルチキャストアドレス
- IPv6アドレスの設定方法 ~手動/SLAAC/DHCPv6~
- Cisco IPv6アドレスの設定と確認コマンド
- Cisco IPv6アドレスの設定例
- IPv6アドレス解決の仕組み
- IPv6 トンネリングの概要
- IPv6 over IPv4 スタティックトンネル
- 6to4トンネル
- ISATAPトンネル
- 基本的なIPv6ネットワークの設定例
- IPv6 設定ミスの切り分けと修正 Part1
- IPv6 設定ミスの切り分けと修正 Part2
- IPv6 設定ミスの切り分けと修正 Part3