SLAAC

読み:すらーく / 英語表記:IPv6 Stateless Address Autoconfiguration

IPv6で、端末がDHCPサーバを使わずに、ルータ広告(RA)で知らされたサブネットプレフィックスと、自分で作ったインタフェース識別子を組み合わせて、自分のIPv6アドレスを自動で設定する仕組み。

イマシルちゃんの解説

IPv4では、住所(IPアドレス)をもらうのに、DHCPサーバにお願いするのがふつうだったよね。

IPv6のSLAACでは、パソコンが自分で住所を作っちゃうんだ。
ルータが「この町の名前はこれだよ」って教えてくれたら、
パソコンは、自分で考えた「番地」をくっつけて、住所の完成!
同じ住所の人がいないかも、ちゃんと自分で確かめるんだよ。

より深い解説

定義

SLAAC(IPv6 Stateless Address Autoconfiguration)は、RFC 4862で定められた、IPv6アドレスの自動設定の方式である。どの端末にどのアドレスを割り当てたかという状態(ステート)をサーバで管理しないため、ステートレスと呼ばれる。近隣探索プロトコル(NDP)のメッセージを使って実現される。

手順

順処理使うメッセージ
1リンクローカルアドレス(fe80::/64 + インタフェース識別子)を仮に作る−
2同じアドレスを使う機器がいないか確かめる(重複アドレス検出:DAD)NS(要請ノードマルチキャスト宛て)
3重複がなければ、正式なリンクローカルアドレスとして使うNA(全ノードマルチキャスト宛て)など
4ルータを探すRS(全ルータマルチキャスト宛て)
5ルータが、プレフィックスやデフォルトルータの情報を知らせるRA
6RAのプレフィックスとインタフェース識別子を組み合わせて、仮のグローバルユニキャストアドレス(GUA)を作り、DADで重複を確かめるNS
7正式なGUAとして使う。RAの送信元(ルータのリンクローカルアドレス)をデフォルトルータ(デフォルトゲートウェイ)にする−

アドレスの作り方

GUA = RAで知らされたサブネットプレフィックス(上位64ビット) + インタフェース識別子(下位64ビット)

例:RAのプレフィックスが 2001:db8:1:2::/64、インタフェース識別子が a8bb:ccff:fe11:2233 なら、GUAは 2001:db8:1:2:a8bb:ccff:fe11:2233/64 になる。

SLAACは、インタフェース識別子が64ビットであることを前提にしているため、端末を収容するネットワークのプレフィックス長は/64にする。

RAのフラグによる方式の切り替え

RAのフラグ意味端末の動作
M(Managed)=1アドレスはDHCPv6で取得するステートフルDHCPv6
O(Other)=1アドレス以外の情報(DNSサーバなど)はDHCPv6で取得するSLAAC+ステートレスDHCPv6
どちらも0すべてRAで済ませるSLAACのみ(DNSサーバはRAのRDNSSオプションで知らせることもできる)

DHCPv6との比較

SLAACステートフルDHCPv6
アドレスを決めるのは端末自身DHCPv6サーバ
割当ての記録残らないサーバに残る
デフォルトルータRAで知るRAで知る(DHCPv6では配布しない)
管理のしやすさ端末とアドレスの対応を把握しにくい把握しやすい

SLAACでは、どの端末がどのアドレスを使っているかが、サーバに記録されない。さらにインタフェース識別子をランダムに作る一時アドレスを使うと、アドレスから端末を特定することが難しくなるため、ログの調査などで端末を追跡するには、NDPのテーブル(近隣キャッシュ)を収集するなどの工夫が必要になる。

午後での問われ方

NDPのメッセージの順番(NS、NA、RS、RA)を図で示し、それぞれの処理の目的を問う形が多い。DADの目的は、同じリンク上に同じIPv6アドレスを使っている機器がいないことを確かめること、RAの送信元のリンクローカルアドレスはデフォルトルータとして使う、という点が問われる。

実際の試験ではここに出る!

この用語が出てくる記事

↑