ICMPv6 не опционален
В IPv4 — это диагностическая запоздалая мысль, которую можно заблокировать, не сломав базовую связность. В IPv6 ICMPv6 (RFC 4443) несущий: протокол зависит от него для центральной работы канала, так что фильтровать его без разбора ломает сеть. Причина в том, что IPv6 переместил несколько задач, которые IPv4 распределял между , обнаружением маршрутизатора через ICMP, и перенаправлениями через ICMP, в единый протокол на основе ICMPv6, называемый Обнаружением Соседей (Neighbor Discovery, RFC 4861). Понять Обнаружение Соседей — значит понять, как канал IPv6 на самом деле работает.
Пять сообщений делают работу
Обнаружение Соседей определяет пять типов сообщений ICMPv6, и почти всё на канале — это некоторая их комбинация:
- Запрос Маршрутизатора (RS): хост просит маршрутизаторы объявить себя.
- Объявление Маршрутизатора (RA): маршрутизатор объявляет префикс и флаги конфигурации (вход для автоконфигурации в статье конфигурация адресов).
- Запрос Соседа (NS): хост спрашивает «у кого этот адрес, и каков твой адрес канального уровня?»
- Объявление Соседа (NA): ответ, дающий тот адрес канального уровня.
- Перенаправление (Redirect): маршрутизатор сообщает хосту о лучшем следующем переходе для назначения.
Запрос и объявление маршрутизатора решают «как мне настроиться»; запрос и объявление соседа решают «как мне достичь этого соседа»; перенаправление решает «есть путь получше». Это покрывает повседневную жизнь канала.
Разрешение адреса без широковещания
Работа, которую ARP делает в IPv4, отображение IP-адреса на аппаратный адрес, в IPv6 делается парой Запрос и Объявление Соседа. Важное различие в том, как задаётся вопрос. ARP кричит на широковещательный адрес, прерывая каждое устройство на сегменте. IPv6 вместо этого посылает Запрос Соседа на многоадресный адрес запрашиваемого узла (solicited-node multicast address) цели, группу, на которой будет слушать лишь малый набор хостов, разделяющих тот же суффикс адреса. Цель отвечает Объявлением Соседа, несущим свой адрес канального уровня. Запрашивающий кэширует результат, точно как работает кэш ARP, и перепроверяет его через Обнаружение Недостижимости Соседа (Neighbor Unreachability Detection), когда трафик предполагает, что сосед мог уйти.
Многоадресный адрес запрашиваемого узла
Многоадресный адрес запрашиваемого узла строится из адреса цели: возьмите префикс ff02::1:ff00:0/104 и присоедините последние 24 бита адреса цели. Поскольку разрешение нацелено лишь на горстку хостов, разделяющих те младшие 24 бита, а не на весь канал, запрос достигает гораздо меньше машин, чем достиг бы широковещательный ARP. Эта конструкция и есть причина, почему статья адресация трактует многоадресную рассылку запрашиваемого узла как часть плана адресов, а не запоздалую мысль: каждый хост, который настраивает адрес, автоматически присоединяется к соответствующей группе запрашиваемого узла, чтобы другие могли его найти.
Никакого широковещания вообще
В IPv6 нет широковещательного адреса. Всё, для чего IPv4 использовал широковещание, включая разрешение адреса и обнаружение маршрутизатора, обрабатывается многоадресной рассылкой в конкретные, хорошо очерченные группы. Есть многоадресная группа всех-узлов (ff02::1) и группа всех-маршрутизаторов (ff02::2), но рутинное разрешение нацелено вместо этого на узкие группы запрашиваемого узла. Замена «прервать всех» на «уведомить ровно нужных слушателей» эффективнее на загруженных каналах и является одним из более тихих улучшений, которые IPv6 делает над IPv4.
Доверие к каналу
Поскольку Обнаружение Соседей не аутентифицировано по умолчанию, злонамеренный хост на том же канале может послать поддельные Объявления Маршрутизатора или Объявления Соседа, чтобы перенаправить или перехватить трафик, IPv6-аналог спуфинга ARP. Защиты живут на краю сети: RA Guard на коммутаторах отбрасывает объявления маршрутизатора с портов, у которых не должно быть маршрутизаторов, а Безопасное Обнаружение Соседей (SEcure Neighbor Discovery, SEND) добавляет криптографическую защиту там, где оно развёрнуто. Как и с IPv4, локальный канал — это граница доверия, которую стоит защищать.
Нервная система канала
Резюме в том, что IPv6 свернул разрешение адреса, обнаружение маршрутизатора, и перенаправление в единый протокол на основе ICMPv6, обменял широковещательный крик на нацеленную многоадресную рассылку, и сделал всё это существенным, а не опциональным. Когда вы видите адрес в инструменте и замечаете его группу запрашиваемого узла или его link-local форму, вы смотрите на части, которые Обнаружение Соседей использует, чтобы дать хостам находить друг друга на канале, ни разу не беспокоя соседей, которые не вовлечены.