Открыть сервис

Neighbor Discovery Protocol

Neighbor Discovery Protocol — это протокол сетевого уровня, используемый в сетях IPv6 для решения задач, связанных с обнаружением соседних узлов, разрешением адресов и автоматической настройкой сетевых параметров. Он определён в стандарте RFC 4861 (Neighbor Discovery for IP version 6) и частично заменяет функциональность протоколов ARP, ICMP Router Discovery и ICMP Redirect, применявшихся в IPv4. NDP обеспечивает взаимодействие между узлами в пределах одной локальной сети (канала передачи данных), работая поверх IPv6 с использованием сообщений ICMPv6 (Internet Control Message Protocol version 6). Протокол критически важен для работы IPv6-сетей, особенно в условиях автоматической настройки без участия администратора.

Функции и задачи

Основная цель NDP — обеспечение автоматической настройки и поддержания работоспособности соединений между узлами в локальной сети. В спектр его задач входят:

Сообщения NDP

Протокол использует пять типов сообщений ICMPv6, которые передаются с определёнными типами и кодами:

Каждое сообщение имеет универсальный заголовок ICMPv6 (8 байт: тип, код, контрольная сумма) и дополнительные поля в зависимости от типа. Например, NS и NA используют опции, такие как Source Link-Layer Address (MAC-адрес отправителя) и Target Link-Layer Address (MAC-адрес цели), а также Target Address (IPv6-адрес цели).

Механизмы работы

Разрешение адресов (Address Resolution)

Когда узел A хочет отправить пакет узлу B в той же локальной сети, но не знает его MAC-адрес, он отправляет Neighbor Solicitation на многоадресный адрес отправителя (широковещательный в IPv4 теперь заменён многоадресным). Целевой узел B, получая запрос, отвечает Neighbor Advertisement с указанием своего MAC-адреса. Пара адресов (IPv6 → MAC) сохраняется в кэше соседей (neighbor cache) на определённое время.

Автоконфигурация адресов (SLAAC)

При подключении к сети узел сначала пытается обнаружить маршрутизаторы с помощью Router Solicitation. В ответ маршрутизатор отправляет Router Advertisement, содержащее префикс сети (например, 2001:db8::/64) и параметры автоконфигурации. Узел генерирует свой IPv6-адрес, комбинируя префикс с собственным MAC-адресом (или случайным значением в современных реализациях согласно RFC 7217). Затем выполняется проверка на дубликаты (DAD): узел отправляет Neighbor Solicitation на претендуемый адрес. Если никто не отвечает, адрес считается уникальным и используется.

Обнаружение дубликатов адресов (DAD)

Этот механизм предотвращает конфликты адресов в сети. Узел, собирающийся использовать новый IPv6-адрес, отправляет Neighbor Solicitation с собственным адресом в поле цели (Target Address). Если кто-то отвечает или уже использует этот адрес, процесс прерывается, и узел генерирует новый адрес. DAD является обязательным этапом SLAAC.

Обнаружение недоступности соседей (NUD)

Протокол периодически проверяет, доступны ли узлы, занесённые в кэш соседей. Если узел не отвечает на NS-запросы или вышел из сети, запись удаляется (или помечается как недоступная). NUD позволяет адаптироваться к изменениям топологии.

Кэш соседей и кэш маршрутизаторов

Каждый узел IPv6 поддерживает две ключевые таблицы:

Эти кэши обновляются динамически, что снижает количество служебных сообщений.

Атаки на протокол

NDP не защищён в первоначальной спецификации, что делает его уязвимым для атак в локальной сети:

Для защиты разработан протокол Secure Neighbor Discovery (SEND), описанный в RFC 3971 и RFC 3972. SEND использует криптографические подписи на основе алгоритмов DSA (Digital Signature Algorithm) и ECDSA (Elliptic Curve Digital Signature Algorithm), а также сертификаты доверенных удостоверяющих центров (CGA — Cryptographically Generated Addresses). Однако на практике SEND редко внедряется из-за сложности управления сертификатами.

Отличия от IPv4 (ARP и ICMP)

NDP объединяет функции, которые в IPv4 распределялись между тремя протоколами: ARP (разрешение адресов), ICMP Router Discovery (обнаружение маршрутизаторов) и ICMP Redirect (перенаправление). В IPv6 все эти задачи решаются единым протоколом на основе ICMPv6. Ключевые отличия:

Практическое применение

NDP работает на каждом узле IPv6, включая оконечные устройства, маршрутизаторы и серверы. Примеры использования:

Связанные стандарты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →