近隣探索プロトコル

読み:きんりんたんさくぷろとこる / 英語表記:Neighbor Discovery Protocol

IPv6で、同じネットワークにいる機器やルータを見つけるための仕組み。ICMPv6のメッセージを使って、MACアドレスの解決やアドレスの重複の確認などを行う。

イマシルちゃんの解説

IPv6の機器がネットワークにつながると、まず「ご近所さん」を調べるんだ。

「このIPアドレスの人のMACアドレスは?」
「このネットワークのルータはどこ?」
「この住所、もう誰かが使ってない?」

こういうご近所づきあいをまとめて担当しているのが、近隣探索プロトコルなんだよ!

より深い解説

定義

近隣探索プロトコル(NDP:Neighbor Discovery Protocol)は、RFC 4861で定められた、IPv6のリンク(同じネットワーク)上の機器同士が互いを見つけ、情報を交換するための仕組みである。独自のプロトコルではなく、ICMPv6の5種類のメッセージを使う。

使うメッセージ

タイプメッセージ送る側 → 受ける側
133ルータ要請(RS:Router Solicitation)ホスト → ルータ。「ルータはいますか」
134ルータ広告(RA:Router Advertisement)ルータ → ホスト。プレフィックスなどを知らせる
135近隣要請(NS:Neighbor Solicitation)「このアドレスの人はいますか」
136近隣広告(NA:Neighbor Advertisement)「それは私です。MACアドレスはこれです」
137リダイレクトルータ → ホスト。よりよい次の転送先を教える

主な機能

機能内容
アドレス解決NSとNAで、IPv6アドレスからMACアドレスを求める。IPv4のARPに当たる
ルータ探索RSとRAで、デフォルトゲートウェイになるルータを見つける
プレフィックス探索RAで、そのネットワークのプレフィックスを知る。これをもとにアドレスを自動生成できる(SLAAC)
重複アドレス検出(DAD)NSで、使おうとしているアドレスがほかの機器と重複していないかを確かめる
近隣到達不能検出(NUD)相手が今も通信できる状態かを確かめる
リダイレクトよりよい経路をホストに知らせる

ブロードキャストを使わない工夫

IPv4のARPはブロードキャストで全員に問い合わせるが、NDPのアドレス解決は要請ノードマルチキャストアドレス(ff02::1:ff00:0/104 に、問い合わせたいアドレスの下位24ビットを付けたもの)宛てに送る。下位24ビットが同じ機器だけが受け取るので、関係のない機器の負担が減る。

ルータ広告のフラグ

RAには、アドレスをどう設定するかを指示するフラグがある。

フラグ意味
M(Managed)アドレスをDHCPv6サーバから取得する
O(Other)アドレス以外の情報(DNSサーバなど)をDHCPv6から取得する

RAはDHCPv6を使うべきかどうかを知らせるだけで、DHCPv6サーバのアドレスそのものは、ホストがDHCPv6のメッセージをマルチキャストで送って見つける。

セキュリティ

NDPには認証の仕組みがないため、偽のRAを送ってデフォルトゲートウェイになりすます攻撃などが可能である。スイッチで不正なRAを遮断するRAガードなどの対策がある。

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

この用語が出てくる記事

↑