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によってアドレスを自動設定できます。

以降、動的にIPv6アドレスを設定するためのSLAACとDHCPv6の仕組みについて解説します。

SLAACによるIPv6アドレスの設定

SLAACによるIPv6アドレス設定の概要を表したのが、次の図です。

図 SLAACの概要
図 SLAACの概要

ホストがネットワークに接続すると、まずは、自動的にリンクローカルアドレスを割り当てます。そして、そのリンクローカルアドレスを送信元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を送信するルータのインタフェースのリンクローカルアドレスです。

RAで送信されるプレフィクスには有効時間(lifetime)があります。RAを定期的に受信できていれば有効時間が切れることはありません。
アドレスの重複検出(DAD : Duplicate Address Detection)の処理も同時に行っています。上記の解説ではDADの処理は省略しています。
ルータのインタフェースに複数のグローバルアドレスまたはユニークローカルユニキャストアドレスが設定されていると、そのプレフィクスごとにRAが送信されます。
DNSサーバのアドレスなどの付加情報も必要です。通常のRAでは、DNSサーバの情報を通知できません。そのため、DNSサーバの情報は手動設定またはDHCPv6で取得します。
RFC6106でRAによってDNSサーバの情報を通知できるように拡張されています。

DHCPv6

IPv4と同じようにIPv6でもDHCPサーバから自動的にIPv6アドレスを取得することができます。DHCPv6では、クライアントとサーバ間で次の4つのメッセージのやり取りを行うのが基本です。

  • Solicit
  • Advertise
  • Request
  • Reply
図 DHCPv6のメッセージ
図 DHCPv6のメッセージ

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
表 IPv6アドレスの自動設定

このパターンは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サーバは手動で設定します。

図 SLAAC

ステートフルDHCPv6

ステートフルDHCPv6はIPv6アドレスもDNSサーバもDHCPv6で設定します。ホストはRSを送信して、ルータからRAメッセージが送信されます。RAメッセージのMフラグ、OフラグともにOnになっていると、ホストはDHCPv6 Solicitメッセージを送信して、IPv6アドレスをはじめとする設定情報を取得します。

図 ステートフルDHCPv6
図 ステートフルDHCPv6

ステートレスDHCPv6

ステートレスDHCPv6は、RAメッセージからIPv6アドレスを取得して、DNSサーバの情報をDHCPv6で取得します。ホストのRSメッセージに対して、ルータからRAメッセージが送信されます。RAメッセージのMフラグはOffでOフラグがOnです。ホストのIPv6アドレスはRAメッセージから自動的に生成します。そして、DHCPv6 Information-requestメッセージを送信して、DHCPによってDNSサーバの情報を取得します。

図 ステートレスDHCPv6
図 ステートレスDHCPv6