Кратко

  • RFC 6666 выделяет 100::/64 как IPv6 Discard-Only Address Block. Его можно распространять внутри автономной системы и разрешать в null-интерфейс, но не следует объявлять или принимать между сторонними AS.
  • Блок не является маршрутом жертвы, сообществом BLACKHOLE или доказательством потери пакета. Нужна цепочка из полномочия, RIB, рекурсии, FIB, счётчиков, внешней изоляции и отмены.
  • Информационный RFC совместно написали Nick Hilliard и David Freedman. Их вклад — общее имя для строго локального действия, а не глобальная услуга или обязательное внедрение.

Маршрут приняли, а результат ещё не наступил

IPv6-сервис попал под объёмную атаку. Уполномоченный оператор вводит в iBGP /128 атакованного адреса и назначает next hop из 100::/64. Все пограничные маршрутизаторы принимают маршрут, и автоматика закрывает инцидент как «blackhole активен».

На трёх входах рекурсия находит статический маршрут в null и пакеты прекращаются. На четвёртом статической записи нет, поэтому объект BGP не превращается в рабочую FIB. Пятый из-за ошибки export policy передаёт сам discard-префикс соседу. Единое состояние control plane скрывает три исхода data plane.

Это не реальный инцидент, а модель границы между согласованным значением RFC и результатом, который обязан доказать оператор.

Глобальное имя для локального действия

Destination RTBH меняет next hop атакованного хоста или сети, чтобы трафик исчез у входа, не занимая внутренние линии и системы. В IPv4 часто использовали частный адрес, статически направленный в null. Практика работала, но заимствовала пространство с другим назначением. Документационный адрес ещё хуже: пример не должен становиться производственной зависимостью.

RFC 6666 запросил отдельный IPv6-блок. IANA записывает 100::/64, обычную форму 0100::/64, как Discard-Only Address Block. Конечному владельцу он не выделен. Текущий реестр отмечает Source, Destination и Forwardable как True, а Globally Reachable как False.

Forwardable позволяет обычной маршрутизации и рекурсии работать внутри управляемого домена. Отсутствие глобальной достижимости задаёт внешний предел. Адрес должен быть пригоден как внутренний unicast next hop, не становясь междоменным пунктом назначения.

Реестр координирует смысл. IANA не устанавливает null-route, не утверждает префикс жертвы, не выбирает вход, не уничтожает пакет и не несёт цену отключения законных пользователей. Исполнение остаётся у оператора.

Три разных механизма

Destination RTBH жертвует доступностью цели ради остальной сети. Source RTBH объединяет маршрутизацию с uRPF и отклоняет пакеты, чей заявленный источник должен разрешаться через discard-путь. Полномочия, ущерб и метрики различаются; доказательство одного не подтверждает другое.

Null отличается и от sinkhole. Null уничтожает пакет, sinkhole направляет его в систему анализа и может вернуть выбранный трафик в обычную сеть. Одно слово «blackhole» скрывает, сохранялись ли данные и оставался ли путь у легитимного трафика.

100::/64 также не равно BLACKHOLE community из RFC 7999. Адресный блок даёт рекурсивный next hop внутри AS. Community — рекомендательный сигнал на префиксе жертвы. Сосед применяет его по соглашению и своей policy после проверки права анонсировать префикс. Без явной настройки оборудование не должно отбрасывать лишь из-за увиденного значения.

Получение community подтверждает доставку намерения, но не принятие маршрута, FIB, отбрасывание или ограничение распространения. AS может использовать 100::/64 только внутри, не привлекая соседа.

Внутри присутствует, снаружи отсутствует

RFC разрешает динамически нести весь блок или часть внутри AS и направлять его в null на некоторых или всех IPv6-маршрутизаторах. «Некоторых» означает выбор архитектуры: отбрасывать только на известных входах или поддерживать единое внутреннее разрешение. Решают топология и цель.

На внешней границе правило обратное. Блок и его подсети не следует объявлять или принимать, а трафик к ним не должен идти через третьи AS. Утечка способна притянуть дополнительный объём в уже атакованную сеть.

Здоровое состояние асимметрично: достаточное внутреннее присутствие и полное внешнее отсутствие. Один индикатор «маршрут есть» не описывает оба требования.

Шесть связанных квитанций

Квитанция полномочия называет утверждающего, точный префикс, область, причину, начало и срок. Она не даёт клиенту погасить чужое пространство и старой тревоге превратиться в вечный маршрут.

Квитанция управления хранит trigger route, community, next hop, получателей и решение policy. Длина, origin, RPKI или неверный атрибут могут остановить действие. Принятие — пока лишь событие RIB.

Квитанция FIB показывает на каждом нужном входе рекурсию жертвы через 100::/64 в ожидаемый discard-интерфейс. Видимость в контроллере или reflector недостаточна.

Пакетная квитанция соединяет локальные счётчики и чистые пробы. Ноль может означать отсутствие трафика, иной вход, сломанную телеметрию или неустановленное действие.

Квитанция изоляции проверяет Adj-RIB-Out, фильтры и соседние policies. Отсутствие у одного публичного коллектора не является универсальным отрицательным доказательством.

Квитанция восстановления отмечает withdrawal, очистку FIB, возврат обычного маршрута и окончание разрешения. Накопленный счётчик говорит о прошлом.

Цена — доступность законного трафика

Destination blackhole спасает более широкую систему, делая адрес недоступным и атакующим, и законным пользователям. Это сама сделка. Самый узкий практический префикс снижает сопутствующий ущерб, но не превращает отбрасывание в доступность.

После включения нужно проверить разгрузку общей линии, состояние соседних сервисов, перенос атаки на другие адреса и отсутствие лишнего source-фильтра. Падение графика само по себе ничего не доказывает: инструмент создаёт его уничтожением трафика.

Точность, а не личное владение

Профиль Hilliard в IETF перечисляет шесть RFC. RFC 6666 написан вместе с David Freedman, прошёл рассмотрение IETF и опубликован как Informational. Это не личный стандарт и не всеобщая команда.

Долговечная мысль проста: производственному контролю нужен собственный namespace, а не заимствованный частный или документационный адрес. Имя должно показывать предел. 100::/64 полезен, когда все узнают его функцию и никто не принимает за глобальный сервис.

Источники