Протокол обнаружения соседей — Википедия

Протокол обнаружения соседей (англ. 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].

Примечания

[править | править код]
  1. RFC 4861, Протокол обнаружения соседей для протокола IP версии 6 (IPv6), T. Narten et al. (сентябрь 2007)
  2. RFC 2461, Протокол обнаружения соседей для протокола IP версии 6 (IPv6), T. Narten, декабрь 1998
  3. RFC 6106, IPv6 Параметры ответа маршрутизатора для настройки DNS , J. Jeong (Ed.), S. Park, L. Beloeil, S. Madanapalli (ноябрь 2010)
  4. Архивированная копия. Дата обращения: 1 мая 2012. Архивировано 2 мая 2021 года.
  5. Operational Neighbor Discovery Problems and Enhancements. draft-gashinsky-v6nd-enhance-00 Архивная копия от 8 июня 2019 на Wayback Machine (англ.)