DHCPv6とSLAACの違い:IPv6のアドレスの決め方・状態の管理・ゲートウェイとDNS・使い分けを比較

IPv6の端末がアドレスを自動で得る方法には、DHCPv6とSLAACがあります。SLAAC(ステートレスアドレス自動設定、RFC 4862)では、端末がルータの送るルータ広告(RA)からリンクのプレフィックスを知り、自分でインターフェースIDを作ってアドレスを組み立てます。どの端末がどのアドレスを使っているかをサーバが管理しないので、「ステートレス」と呼ばれます。DHCPv6(RFC 8415)では、IPv4のDHCPと同じように、サーバがアドレスを決めて期限付きで貸し出し、その記録を管理します。どちらの方法でも、デフォルトゲートウェイはRAで知ります。また、アドレスはSLAACで作り、DNSサーバのアドレスなどの情報だけをDHCPv6で受け取る「ステートレスDHCPv6」という組み合わせもあります。

項目DHCPv6SLAAC
アドレスを決めるもの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という識別子で区別するサーバの記録がないので、端末のアドレスを知るには、ルータの近隣キャッシュなどを調べる必要がある

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

DHCPv6
どの端末にどのアドレスを割り当てたかを管理し記録したい企業のネットワークや、ルータにプレフィックスを配りたいプロバイダの回線(DHCPv6-PD)。ただし、端末のOSによっては、DHCPv6でアドレスを受け取る機能をもたないものがあるので、対応を確かめます。
SLAAC
家庭や多くのLANのように、サーバを置かずに簡単にアドレスを配りたいとき。DNSサーバの情報は、RAのRDNSSオプションか、ステートレスDHCPv6で補います。

よくある質問

DHCPv6を使っても、ルータ広告(RA)は必要ですか?

必要です。DHCPv6には、デフォルトゲートウェイを知らせるしくみがありません。端末は、RAを送ったルータのリンクローカルアドレスをデフォルトゲートウェイにします。また、RAのMフラグ(Managed)で、アドレスをDHCPv6から受け取ることを、Oフラグ(Other)で、DNSサーバなどのほかの情報をDHCPv6から受け取ることを、端末に知らせます。

ステートレスDHCPv6とは何ですか?

アドレスはSLAACで端末が自分で作り、DNSサーバのアドレスなど、アドレス以外の情報だけをDHCPv6サーバから受け取る使い方です。サーバはどの端末にどのアドレスを貸したかを記録しないので、ステートレスと呼ばれます。RAのMフラグを0、Oフラグを1にして、端末に知らせます。

SLAACでは、アドレスの重複をどう防ぎますか?

端末は、作ったアドレスを使う前に、近隣探索のしくみで、同じアドレスを使っている機器がないかを確かめます。これを重複アドレス検出(DAD)と呼びます。重複が見つかったアドレスは使いません。DHCPv6で受け取ったアドレスでも、同じように確かめます。

SLAACのアドレスから、端末を追跡されることはありますか?

MACアドレスから作るEUI-64形式のインターフェースIDでは、どのネットワークにつないでも下位64ビットが同じになるので、端末を追跡されやすくなります。そのため、ネットワークごとに違う値になる乱数のようなインターフェースID(RFC 7217)や、一定の時間ごとに変わる一時アドレス(RFC 8981)が使われます。

理解度チェック

IPv6で、同じリンクの中だけで使われ、IPv6を使うインターフェースには必ず自動的に設定されるリンクローカルアドレスの範囲はどれか。

  1. A2001:db8::/32
  2. Bff00::/8
  3. Cfe80::/10
答えと解説を見る

正解:C. fe80::/10

リンクローカルアドレスは fe80::/10 の範囲で、ルータを越えて転送されず、同じリンクの中の通信にだけ使われます。近隣探索(NDP)やルータ広告のやり取りなどに使われ、端末のデフォルトゲートウェイも、ふつうはルータのリンクローカルアドレスになります。2001:db8::/32 は、説明や資料の例に使うために予約された範囲(ドキュメント用アドレス)です。ff00::/8 はマルチキャストアドレスで、IPv6ではブロードキャストの代わりにマルチキャストが使われます。

IPv6のSLAAC(ステートレスアドレス自動設定)で、端末がグローバルユニキャストアドレスを作る方法として正しいものはどれか。

  1. ADHCPv6サーバに問い合わせ、サーバが管理する128ビットのアドレスを期限付きで借りる
  2. Bルータが送るルータ広告(RA)に含まれる /64 のプレフィックスに、自分で作ったインターフェースID(下位64ビット)を組み合わせ、同じアドレスがほかにないことを確かめてから使う
  3. C自分のIPv4アドレスをそのまま下位32ビットに入れ、上位を fe80 で始まる値で埋める
答えと解説を見る

正解:B. ルータが送るルータ広告(RA)に含まれる /64 のプレフィックスに、自分で作ったインターフェースID(下位64ビット)を組み合わせ、同じアドレスがほかにないことを確かめてから使う

SLAACでは、端末は、ルータが定期的に、または求めに応じて送るルータ広告(RA)から、そのリンクのプレフィックス(ふつう /64)を知ります。これに、MACアドレスから作るEUI-64形式や、乱数をもとにした値のインターフェースIDを組み合わせてアドレスを作ります。使う前には、近隣探索のしくみで、同じアドレスを使っている機器がないかを確かめます(重複アドレス検出、DAD)。RAを送ったルータのリンクローカルアドレスがデフォルトゲートウェイになり、サーバがアドレスの割り当てを管理しないので「ステートレス」と呼ばれます。DNSサーバのアドレスは、RAのオプションやステートレスDHCPv6で知らせます。

MACアドレスが 00-1A-2B-3C-4D-5E のインターフェースが、プレフィックス 2001:db8:1:1::/64 と、EUI-64形式のインターフェースIDから、SLAACでアドレスを作る。できるアドレスはどれか。

  1. A2001:db8:1:1:21a:2bff:fe3c:4d5e
  2. B2001:db8:1:1:1a:2bff:fe3c:4d5e
  3. C2001:db8:1:1:21a:2bfe:ff3c:4d5e
答えと解説を見る

正解:A. 2001:db8:1:1:21a:2bff:fe3c:4d5e

EUI-64形式では、48ビットのMACアドレスを上位24ビットと下位24ビットに分け、間に FF-FE を入れて64ビットにします。00-1A-2B と 3C-4D-5E の間に入れると 00-1A-2B-FF-FE-3C-4D-5E です。さらに、先頭のバイトの下位から2番目のビット(U/Lビット)を反転させるので、00 は 02 になり、02-1A-2B-FF-FE-3C-4D-5E となります。16ビットずつ区切って各区切りの先頭の0を省くと 21a:2bff:fe3c:4d5e で、プレフィックスと合わせて 2001:db8:1:1:21a:2bff:fe3c:4d5e です。MACアドレスがアドレスに表れると端末を追跡されやすいので、いまの多くのOSは、乱数をもとにしたインターフェースIDを使います。

  1. VLAN 20(192.168.20.0/24)の端末に、別のネットワークにあるDHCPサーバ 10.0.0.5 からアドレスを割り当てる。そのため、VLAN 20のデフォルトゲートウェイであるL3スイッチのインターフェース(192.168.20.1)に、DHCPリレーエージェントを設定した。リレーエージェントの動作として正しいものはどれか。
  2. DHCPで端末がIPアドレスを得るときの、メッセージの順序として正しいものはどれか。

ネットワークの設計と運用の練習問題へ

関連する用語の解説

SLAAC(ステートレスアドレス自動設定)
Stateless Address Autoconfigurationの略。IPv6で、端末がルータの送るルータ広告(RA)からネットワークのプレフィックス(ふつう /64)を知り、自分で作ったインターフェースIDと組み合わせて、自動的にアドレスを設定するしくみ。インターフェースIDには、MACアドレスから作るEUI-64形式か、追跡を防ぐための乱数をもとにした値を使う。使う前に、重複アドレス検出(DAD)で同じアドレスがないことを確かめる。
DHCP
Dynamic Host Configuration Protocolの略。ネットワークにつないだ端末に、IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバなどの設定を期限付きで自動的に割り当てるプロトコル。
IPv6
IPの第6版。アドレスを128ビットに広げ、2001:db8::1 のように、16ビットずつ8つに区切った16進数で書く。ヘッダは40バイトの固定長で単純になり、途中のルータはパケットを分割しない。IPv4とは互換性がないので、両方を同時に動かすデュアルスタックや、変換の仕組みで移行を進める。
デフォルトゲートウェイ
端末が、自分と別のネットワークにある宛先へのパケットを渡すルータ。端末はサブネットマスクで宛先が同じネットワークかを判断し、外ならこのルータに送る。
DNS
Domain Name Systemの略。www.example.com のようなドメイン名と、通信に使うIPアドレスを対応づける、世界中のサーバで分散して管理されるしくみ。
MACアドレス
イーサネットや無線LANで、同じネットワークの中の機器を指定するのに使う48ビットのアドレス。上位24ビットが製造者を表し、製造時にインターフェースごとに割り当てられる。
ICMP
Internet Control Message Protocolの略。IPの通信で起きた誤りや状態を知らせるためのプロトコル。宛先に届けられない(Destination Unreachable)、TTLが0になった(Time Exceeded)といったことを送信元に通知する。pingはエコー要求とエコー応答で相手に届くかとRTTを調べ、tracerouteはTime Exceededの通知を使って経路を調べる。IPv6ではICMPv6が近隣探索なども担う。

関連する比較