DHCPv6とSLAACの違い:IPv6のアドレスの決め方・状態の管理・ゲートウェイとDNS・使い分けを比較
IPv6の端末がアドレスを自動で得る方法には、DHCPv6とSLAACがあります。SLAAC(ステートレスアドレス自動設定、RFC 4862)では、端末がルータの送るルータ広告(RA)からリンクのプレフィックスを知り、自分でインターフェースIDを作ってアドレスを組み立てます。どの端末がどのアドレスを使っているかをサーバが管理しないので、「ステートレス」と呼ばれます。DHCPv6(RFC 8415)では、IPv4のDHCPと同じように、サーバがアドレスを決めて期限付きで貸し出し、その記録を管理します。どちらの方法でも、デフォルトゲートウェイはRAで知ります。また、アドレスはSLAACで作り、DNSサーバのアドレスなどの情報だけをDHCPv6で受け取る「ステートレスDHCPv6」という組み合わせもあります。
| 項目 | DHCPv6 | SLAAC |
|---|---|---|
| アドレスを決めるもの | DHCPv6サーバ。サーバが管理する範囲から選んで、期限付きで貸し出す | 端末自身。RAで知ったプレフィックスに、自分で作ったインターフェースIDを組み合わせる |
| 状態の管理 | ステートフル。サーバが、どの端末にどのアドレスを貸したかを記録する | ステートレス。アドレスの割り当てを記録するサーバはない |
| 必要なもの | DHCPv6サーバ(別のリンクにあるときはリレーエージェント)と、端末にDHCPv6を使うよう知らせるRA | プレフィックスを知らせるRAを送るルータ |
| 使うメッセージ | UDP(クライアントは546番、サーバとリレーエージェントは547番)。Solicit、Advertise、Request、Replyの4つのやり取りが基本 | ICMPv6の近隣探索(NDP)のルータ要請(RS)とルータ広告(RA) |
| デフォルトゲートウェイ | DHCPv6では知らせない。RAを送ったルータのリンクローカルアドレスを使う | RAを送ったルータのリンクローカルアドレスを使う |
| DNSサーバのアドレス | DHCPv6のオプションで知らせる | RAのオプション(RDNSS)か、ステートレスDHCPv6で知らせる |
| インターフェースID(下位64ビット) | サーバが選ぶ | MACアドレスから作るEUI-64形式か、乱数をもとにした値。プライバシーのため、乱数をもとにした値を使うOSが多い |
| プレフィックスの長さと委任 | アドレスを1つずつ割り当てるので、/64 以外のプレフィックスでも使える。ルータにプレフィックスをまとめて渡す、プレフィックスの委任(DHCPv6-PD)もできる | 一般に /64 のプレフィックスが前提。プレフィックスの委任はできない |
| アドレスの把握のしやすさ | サーバの記録から、どの端末がどのアドレスを使っているかが分かる。クライアントは、DUIDという識別子で区別する | サーバの記録がないので、端末のアドレスを知るには、ルータの近隣キャッシュなどを調べる必要がある |
数値は代表的な目安で、世代や製品によって異なります。