Протокол обнаружения соседей
Протокол обнаружения соседей (англ. Neighbor Discovery Protocol, NDP ) — протокол из набора протоколов TCP/IP, используемый совместно с IPv6. Он работает на сетевом уровне Модели Интернета (RFC 1122) и ответственен за автонастройку адреса конечных и промежуточных точек сети, обнаружения других узлов на линии, определения адреса других узлов канального уровня, обнаружение конфликта адресов, поиск доступных маршрутизаторов и DNS-серверов, определения префикса адреса и поддержки доступности информации о путях к другим активным соседним узлам (RFC 4861).[1]
Этот протокол устанавливает пять различных типов пакета ICMPv6 для выполнения функций IPv6, сходных с ARP, ICMP, IRDP и Router Redirect протоколов для IPv4. Тем не менее, он предоставляет множество улучшений относительно IPv4 аналогов (RFC 4861, секция 3.1). Например, он включает NUD, который повышает надежность доставки пакетов в присутствии проблемных маршрутизаторов или подключений, или мобильных устройств.
Технические детали
NDP устанавливает следующие пять типов пакета ICMPv6[2]:
- Запрос на доступность маршрутизаторов
- Ответ маршрутизатора
- Запрос доступных соседей
- Ответ соседа
- Перенаправление
Эти сообщения используются для обеспечения следующей функциональности:
- Обнаружение маршрутизатора: узел может обнаружить маршрутизатор, находящийся на подключенной линии.
- Обнаружение подсети: узлы могут обнаруживать работающие подсети для подключенных линий.
- Обнаружение параметров: узлы могут запрашивать параметры линии (например, размер MTU).
- Автоматическая настройка адреса: конфигурирование адресов сетевых интерфейсов.
- Разрешение адреса: работа между IP-адресом и адресами уровня канала связи.
- Обнаружение следующего перехода: узлы могут находить следующий на пути пакета маршрутизатор.
- Обнаружение недоступности соседа (NUD): определение того, что сосед более недоступен на линии.
- Обнаружение конфликта адресов (DAD): узлы сами могут определять, занят ли адрес.
- Перенаправление: маршрутизатор может информировать узел о других наилучших маршрутизаторах для начала пути пакета.
- Рекурсивный DNS-сервер (RDNSS) и список поиска DNS (DNSSL) назначается через параметры отклика маршрутизатора (RA).[3] Это новая функция, и поддерживается не всем программным обеспечением.
Уязвимости
Некоторые маршрутизаторы уязвимы при работе с протоколом NDP[4]. Зачастую, маршрутизаторы имеют меньше доступных адресов для NDP, чем доступно в подсети IPv6 (обычно 2^64 или более, для поддержки SLAAC). Решение доступно (неактуально)[5].
Примечания
- RFC 4861, Протокол обнаружения соседей для протокола IP версии 6 (IPv6), T. Narten et al. (сентябрь 2007)
- RFC 2461, Протокол обнаружения соседей для протокола IP версии 6 (IPv6), T. Narten, декабрь 1998
- RFC 6106, IPv6 Параметры ответа маршрутизатора для настройки DNS , J. Jeong (Ed.), S. Park, L. Beloeil, S. Madanapalli (ноябрь 2010)
- http://inconcepts.biz/~jsw/IPv6_NDP_Exhaustion.pdf
- Operational Neighbor Discovery Problems and Enhancements. draft-gashinsky-v6nd-enhance-00 (англ.)