Резюме

  • По заявлению Cloudflare от 20 февраля 2026 года, внутреннее изменение Addressing API привело к отзыву части клиентских IP-префиксов из интернета. В начале сообщения говорится, что авария началась в 17:48 по UTC и продолжалась шесть часов семь минут, тогда как в подробной хронологии воздействие указано с 17:56 по 23:03 UTC. Статья рассматривает это расхождение как нерешённое расхождение источников. Cloudflare сообщила, что до остановки инициировавшего изменения было отозвано около 1 100 префиксов Bring Your Own IP [1].

  • Инцидент не был атакой, перехватом BGP или классической утечкой междоменных маршрутов. Затронутые префиксы были легитимными ресурсами клиентов, которые Cloudflare имела право анонсировать. Сбой был внутренней проблемой управления жизненным циклом: автоматизация изменила, анонсируются ли авторизованные префиксы, и для некоторых клиентов удалила связанное адресное состояние с пограничных систем [1].

  • Действительная запись реестра, объект Internet Routing Registry, Route Origin Authorization или письмо-полномочие сами по себе не делают сервис доступным. Эти записи устанавливают полномочия и политику. Работающие маршрутизаторы всё равно должны анонсировать префикс, а платформа по-прежнему нуждается в корректной привязке сервиса после поступления трафика [2][9][16][17].

  • Откат Cloudflare остановил дальнейшие отзывы, но не воссоздал каждую уже изменённую запись. Восстановление потребовало нескольких путей, включая самостоятельное повторное анонсирование клиентами, восстановление базы данных, восстановление привязок сервисов и глобальное развёртывание машинной конфигурации [1]. Откат, который останавливает мутацию, не эквивалентен сверке всего затронутого состояния.

  • Затронутая поверхность пересекала продуктовые границы. Cloudflare выявила конфигурации CDN и сервисов безопасности, Spectrum, Dedicated Egress и Magic Transit, зависевшие от анонсов BYOIP. Сайт 1.1.1.1 выдавал ошибки, тогда как публичный DNS-резолвер продолжал отвечать на запросы. Это различие отделяет доступность веб-префикса от работы резолвера [1].

  • Ориентированная на клиентов документация BYOIP описывает несколько разных объектов: регистрацию учётной записи, проверку владения, проверки IRR и RPKI, делегирование префикса, привязки сервисов, карты адресов и объект BGP-префикса, который можно отозвать или анонсировать [2]. Подотчётность требует доказательств того, что эти объекты согласованы, а не уверенности в одной строке базы данных.

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

  • Постмортем Cloudflare даёт существенные детали инцидента и приписывает корректирующие работы компании. Он не называет всех затронутых клиентов, не оценивает убытки и не доказывает, что последующие меры эффективны. Обоснованная оценка должна учитывать раскрытые доказательства, но отделять рекомендации и нерешённые вопросы от установленных фактов [1].

Событие было отзывом легитимной доступности

Самый важный факт об инциденте — чем он не был. Cloudflare заявляет, что авария не была вызвана атакой. Это не было анонсом чужого адресного пространства третьей стороной. Это не был перехват источника, при котором неавторизованная автономная система привлекает трафик. Публичное описание также не описывает сбой политики взаимоотношений, обычно называемый утечкой маршрутов. Собственная система управления Cloudflare отозвала префиксы, которые клиенты принесли провайдеру и разрешили ему анонсировать [1].

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

В постмортеме Cloudflare есть два описания времени, которые не следует смешивать. В начале говорится, что авария началась в 17:48 UTC и продолжалась шесть часов семь минут. В подробной таблице начало воздействия указано в 17:56, а конец — в 23:03, интервал пять часов семь минут. Публичный источник не объясняет разницу в один час. Изменение Addressing API повлияло на управление адресным пространством клиентов, а подпроцесс очистки классифицировал активные записи таким образом, что префиксы были отозваны. До отката инициировавшего изменения было затронуто примерно 1 100 префиксов BYOIP [1].

Для затронутого префикса отзыв изменил путь до того, как сервер приложений получил возможность ответить. Когда Cloudflare перестала анонсировать клиентский префикс, маршрутизаторы интернета не имели маршрута Cloudflare для этого назначения. В зависимости от наличия другого действительного маршрута пакеты могли следовать другому источнику, попасть в чёрную дыру или не достичь сервиса. Видимым симптомом для пользователя мог быть тайм-аут соединения или сбой, а не HTTP-ошибка, сгенерированная клиентским источником.

Cloudflare выявила несколько продуктовых поверхностей, работа которых могла зависеть от этих анонсов. CDN и сервисы безопасности используют привлечённый адрес для приёма трафика на периферии Cloudflare. Spectrum может проксировать не-HTTP-трафик. Magic Transit может привлекать и защищать трафик клиентской сети. Dedicated Egress может зависеть от стабильной адресной идентичности для исходящей связи. Продукты различаются, но общая плоскость управления префиксами означала, что изменение состояния могло пересечь продуктовые границы [1][2].

Различие 1.1.1.1 — полезный тест на аккуратность отчётности. Cloudflare сообщила, что сайт, связанный с 1.1.1.1, выдавал ошибки, тогда как DNS-запросы к самому публичному резолверу продолжали разрешаться. Если рассматривать симптом сайта как сбой резолвера, это смешало бы два сервиса с разными путями и рабочим состоянием. Точный анализ инцидента рассматривает анонсируемый префикс, привязанный к нему сервис и достижимое через него приложение как отдельные объекты [1].

BYOIP превращает полномочия в цепочку операционного состояния

Bring Your Own IP позволяет клиенту использовать адресное пространство, которое он контролирует, пока сервис-провайдер анонсирует это пространство из своей сети. Фраза может звучать как простой перенос, но операционная цепочка содержит несколько разных утверждений. Клиент должен доказать полномочия на префикс. Провайдер должен быть уполномочен создавать его. Реестры маршрутизации и RPKI могут содержать вспомогательные политики и криптографические записи. Провайдер должен связать префикс с учётной записью и сервисом. Пограничные системы должны знать, как обрабатывать трафик после привлечения маршрута.

Затем маршрутизаторы должны анонсировать префикс из намеченной автономной системы [2][11][12].

Документация Cloudflare описывает регистрацию как начало, а не конец этой цепочки. Текущие требования включают регистрацию в соответствующем региональном интернет-реестре, объекты Internet Routing Registry, точную автономную систему источника, проверки RPKI или ROA, где применимо, и доказательства владения. Письмо-полномочие фиксирует разрешение для Cloudflare анонсировать адресное пространство клиента. Эти меры важны, потому что снижают неопределённость в том, кто может вызвать появление маршрута [2].

Однако полномочия — не доступность. RFC 6480 описывает инфраструктуру открытых ключей ресурсов как способ связать ресурсы интернет-номеров с информацией об авторизации. RFC 6811 описывает проверку источника маршрута на основе этих данных, а RFC 8210 определяет протокол доставки проверенных данных о префиксе и источнике маршрутизаторам [16][17][19]. Ни один из этих механизмов не заставляет уполномоченную сеть анонсировать маршрут. Префикс может быть действительным в RPKI и отсутствовать в BGP. Наоборот, анонс может быть видимым, в то время как приложение или привязка сервиса за ним неверны.

Продуктовая модель Cloudflare делает различие конкретным. Префикс представлен в учётной записи. Он может быть делегирован для использования другой учётной записью. Привязки сервисов связывают адреса с продуктами Cloudflare, а карты адресов могут связывать IP-адреса с поведением проксируемого DNS. Объект BGP-префикса представляет, должна ли сеть анонсировать или отозвать маршрут. Начальное состояние — отозван; авторизованная операция меняет его на анонсированный [2]. Это связанные записи, а не взаимозаменяемые названия одной записи.

Это различие предполагает как минимум пять уровней доказательств. Первый — полномочия на ресурс: кто контролирует префикс и какой источник авторизован. Второй — полномочия учётной записи: какая клиентская или делегированная учётная запись может управлять ресурсом. Третий — намерение сервиса: какой сервис Cloudflare должен принимать трафик для адреса. Четвёртый — намерение маршрута и развёрнутое состояние: должен ли префикс анонсироваться и действительно ли пограничные маршрутизаторы экспортируют его. Пятый — внешнее наблюдение: могут ли независимые сети видеть и достигать маршрут.

Ни один уровень не доказывает другие. Письмо-полномочие не показывает текущее состояние маршрутизатора. Флаг в базе данных со значениемadvertisedне доказывает, что конфигурация достигла каждой границы. Коллектор маршрутов, видящий префикс, не показывает, что существует правильная привязка сервиса. Успешное соединение из одной точки не устанавливает глобальную доступность. Подотчётность начинается тогда, когда оператор может сверить эти записи и объяснить любое расхождение с помощью привязанного ко времени и субъекту перехода состояния.

Addressing API был источником истины, но не всей истиной

Cloudflare описала Addressing API как источник истины для клиентских IP-адресов. Это разумная архитектурная роль: платформе нужно каноническое место для записи, какие префиксы каким учётным записям принадлежат, какие сервисы их используют и какое состояние сети намечено. Инцидент показывает, почему фразу «источник истины» не следует путать с «полным доказательством работы сервиса» [1].

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

Подпроцесс очистки в Cloudflare изменил активные записи таким образом, что вызвал отзывы префиксов. Для некоторых клиентов настройки адресации были также удалены с пограничных серверов. Это означает, что инцидент не ограничился одним булевым флагом анонса. Он затронул данные, используемые в нескольких точках цепочки от маршрута к сервису [1]. Транзакция, изменяющая несколько связанных объектов, может оставить частично изменённую систему, если она остановится, завершится ошибкой или будет откачена после того, как некоторые побочные эффекты уже распространились.

База данных может быть внутренне согласованной и всё же не согласоваться с работающими маршрутизаторами. Маршрутизатор может сохранить устаревший анонс после того, как база данных говорит «отозван», или удалить анонс до того, как каждая зависимая запись сервиса сверена. Пограничные машины могут иметь представление, отличное от API учётной записи. Внешние пиры могут наблюдать путь после изменения одной точки и до сходимости другой. Это нормальные возможности распределённых систем, но они становятся провалом подотчётности, когда оператор не может быстро перечислить и исправить расхождение.

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

Самое сильное проектирование — не просто более точная центральная таблица. Это сверщик, который сравнивает таблицу с нижестоящими системами и внешними наблюдениями. Если база данных ожидает, что 1 100 префиксов останутся анонсированными, а состояние границы показывает отзывы, инвариант должен завершиться ошибкой до расширения развёртывания. Если привязка сервиса исчезает, пока префикс остаётся активным, система должна изолировать изменение и сохранить последнюю известную корректную связь. Проверка состоит в том, может ли плоскость управления обнаружить несогласованность до того, как клиенты станут её системой мониторинга.

Почему откат мог остановить ущерб, не восстановив сервис

Cloudflare откатила инициировавшее изменение, и это действие остановило дальнейшие отзывы. Но компания сообщила, что откат не восстановил каждую уже изменённую запись [1]. Это распространённое и важное различие между откатом кода и обращением эффектов.

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

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

Восстановление Cloudflare использовало несколько путей. Некоторые клиенты могли повторно анонсировать префиксы через средства самообслуживания. Инженеры восстановили состояние базы данных и привязки сервисов. Глобальное развёртывание машинной конфигурации исправило состояние границы там, где настройки адресации были удалены [1]. Эти действия отражают разные уровни, затронутые инцидентом. Они также показывают, почему провайдеру требовался не один сигнал успеха, прежде чем можно было объявить о восстановлении.

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

Восстановление базы данных также требует точности. Широкий откат снимка может перезаписать корректные изменения, сделанные после снимка. Узкое восстановление требует надёжного образа до изменения для каждого затронутого объекта и способа проверить ссылочную целостность между записями префикса, учётной записи, делегирования и сервиса. Самая безопасная система изменений фиксирует обратимые операции как события первого класса, а не полагается на экстренное восстановление из журналов.

Наконец, восстановление маршрутизаторов и границы требует независимого наблюдения. Платформа может сообщить, что отправила исправленную конфигурацию, в то время как некоторые пиры всё ещё не получили маршрут или некоторым пограничным машинам всё ещё не хватает привязки. Восстановление завершено только тогда, когда намеченные записи, развёрнутое состояние и внешняя доступность сходятся. Указанная Cloudflare общая длительность и её более узко обозначенная хронология воздействия показывают, что большая часть реагирования вышла за рамки первоначального процесса отзыва и включала устранение последствий, переживших откат [1].

Привязка сервиса — отдельная зависимость доступности

Маршрут BGP отвечает на один вопрос: куда другая сеть должна отправлять пакеты для префикса? Он не отвечает, что принимающая платформа должна делать с этими пакетами. Cloudflare всё ещё нужна связь между адресом и клиентским сервисом, который завершает, проксирует, фильтрует или пересылает трафик. Эта связь — привязка сервиса.

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

Публичный отчёт Cloudflare говорит, что настройки адресации были удалены с некоторых пограничных серверов и что привязки сервисов пришлось восстанавливать [1]. Ограниченный вывод состоит в том, что восстановление включало конфигурацию приложений или границы, а также состояние анонсов BGP. Доказательства не называют каждый внутренний объект и не доказывают, что все продукты представляли привязки одинаково. Аккуратная статья должна сопротивляться превращению публичного архитектурного резюме в недокументированную схему реализации.

Операционный урок всё же ясен. Жизненный цикл клиентского префикса следует моделировать как граф зависимостей. Запись ресурса указывает на уполномоченную учётную запись. Записи делегирования могут разрешать другой учётной записи использовать его. Привязки сервисов определяют продукт и поведение трафика. Карты адресов могут определять, как ответы проксируемого DNS соотносятся с адресами. Состояние анонса определяет, привлекает ли сеть трафик. Разрушительный процесс должен понимать граф, прежде чем удалять любой узел [2].

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

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

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

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

RPKI может подтвердить полномочия источника, но не может требовать анонса

RPKI и проверка источника маршрута — важные меры, но их границы нужно формулировать точно. Route Origin Authorization связывает IP-префикс с автономной системой, авторизованной создавать его. Доверяющая сторона проверяет подписанные объекты, и маршрутизаторы могут получать проверенные данные о префиксе и источнике. Затем анонс BGP может быть классифицирован относительно записи авторизации [16][17][19].

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

Та же граница относится к объектам Internet Routing Registry и письмам-полномочиям. Объект маршрута IRR может выражать намеченную политику маршрутизации. Письмо-полномочие может показать, что клиент разрешает провайдеру анонсировать его пространство. Ни то, ни другое не доказывает, что конкретный пограничный маршрутизатор сейчас экспортирует маршрут, что пиры приняли его или что привязанный сервис работает. Отношение к реестровым доказательствам как к доказательствам действующего сервиса создало бы ложную уверенность.

Текущая документация Cloudflare по подключению объединяет эти меры, потому что каждая отвечает на разные вопросы [2]. Регистрация в RIR помогает установить держателя ресурса. Данные IRR и исходной AS поддерживают политику маршрутизации. RPKI даёт подписанную авторизацию источника. Проверки владения и письмо-полномочие связывают клиента с действием провайдера. Конфигурация учётной записи и сервиса устанавливает, как платформа должна использовать ресурс. Состояние BGP-префикса определяет, анонсирует ли его Cloudflare.

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

Стандарты безопасности маршрутизации также дают полезные отрицательные границы. RFC 7908 классифицирует утечки маршрутов, а RFC 9234 определяет роли BGP и механизм Only-to-Customer для снижения определённых утечек политики [18][20]. Эти меры касаются отношений распространения и непреднамеренного распространения путей. Постмортем Cloudflare, напротив, описывает отзыв собственной внутренней системой. Называть событие утечкой маршрутов означало бы подставить знакомый ярлык вместо сообщённого механизма и могло бы направить исправление к неверной границе.

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

Безопасный отзыв требует упорядоченного перехода

Документация Cloudflare по динамическому анонсу и отзыву префиксов даёт клиентам полезную модель операционной осторожности. Отзыв префикса из Cloudflare останавливает анонс Cloudflare. Если клиент ожидает, что трафик понесёт другая сеть, маршрутизация должна сойтись к этой альтернативе. Неправильно упорядоченный отзыв может создать чёрные дыры или оставить устаревшие пути [2].

Документированная безопасная последовательность концептуально важна. Установите альтернативный анонс той же длины префикса, дайте маршрутизации сойтись, наблюдайте новый путь и только затем отзывайте анонс Cloudflare. Это не позволяет действию в плоскости управления предполагать, что другой путь существует только потому, что запись конфигурации так говорит. Внешний маршрут — доказательство.

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

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

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

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

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

Когорты, канареечные проверки и защиты от удаления должны ограничивать автоматизацию

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

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

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

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

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

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

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

Сверка должна сравнивать намерение, развёртывание и наблюдение

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

Намерение начинается с полномочий и состояния сервиса. Префикс принадлежит держателю ресурса. Cloudflare имеет разрешение создавать его. Учётная запись и делегирование известны. Префикс прикреплён к одному или нескольким сервисам. Желаемое состояние BGP — анонсирован или отозван. Эти записи должны образовывать согласованный граф зависимостей [2].

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

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

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

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

Глобальная платформа должна сообщать покрытие и отставание. Может быть невозможно наблюдать каждого пира и каждую границу в один момент. Система всё же может указать, какие точки подтвердили конфигурацию, какие коллекторы видели маршрут, когда закрылось последнее расхождение и какие слепые зоны остаются. Это достовернее, чем бинарный индикатор «исправлено» без знаменателя.

Результат — реестр состояния префиксов, основанный на реальности. Записи реестра и учётной записи устанавливают полномочия. Развёрнутые конфигурации показывают, что оператор пытался сделать. Работающее состояние маршрутизации и сервисов показывает, что сделали его системы. Внешнее наблюдение показывает, чем мог пользоваться интернет. Подотчётность — это способность сверить реестр с работающей сетью и объяснить любой интервал, в котором они расходились.

Коммуникация об инциденте должна раскрывать уровень и уверенность

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

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

Различие 1.1.1.1 демонстрирует ценность точности на уровне сервиса. Сообщение о том, что сайт выдавал ошибки, а резолвер продолжал отвечать, не позволяет обобщить симптом приложения до сбоя DNS-сервиса [1]. Такая же точность должна быть доступна для продуктов BYOIP: статус анонса, привязка продукта, затронутая когорта префиксов и путь восстановления.

Уверенность и покрытие должны быть явными. «Примерно 1 100 префиксов» — измеренная ограниченная цифра, а не полное число клиентов или оценка убытков. Оператор может указать, как он получил когорту, включены ли делегированные префиксы и когда число перестало меняться. Он может отдельно сообщить число исправленных записей учётных записей, восстановленных привязок и подтверждённых внешних маршрутов.

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

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

Наконец, заявления о мерах должны оставаться привязанными к источнику. Cloudflare описала улучшения после инцидента [1]. Для последующего аудита понадобятся доказательства, что эти меры были внедрены, отработаны и способны остановить сопоставимую когорту. Публикация намерения не является доказательством эффективности. Подотчётность продолжается после постмортема через тестирование и измеримую работу мер.

Система показателей подотчётности для мер жизненного цикла префиксов

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

  1. Полномочия на ресурс.Может ли провайдер показать текущую регистрацию в RIR, доказательства владения, письмо-полномочие, объекты IRR и состояние RPKI или ROA для каждого префикса? Явны ли конфликты, а не молча разрешены?

  2. Стабильная идентичность.Имеют ли объекты префикса, учётной записи, делегирования, привязки сервиса и анонса долговечные идентификаторы при миграциях и очистке? Может ли аудитор соединить их истории, не полагаясь только на строки адресов?

  3. Целостность зависимостей.Завершается ли удаление ошибкой при закрытии, когда на префикс ссылается любой активный сервис, делегирование, недавнее развёртывание, сигнал трафика или анонсированный маршрут? Есть ли период карантина для неоднозначных записей?

  4. Точный пробный прогон.Выполняет ли путь без записи ту же логику отбора и преобразования, что и производство? Перечисляет ли он всю когорту и объясняет причину каждого предлагаемого отзыва или удаления?

  5. Политика радиуса поражения.Ограничено ли каждое задание учётной записью, продуктом, регионом и числом префиксов? Требует ли пересечение лимита нового одобрения, а не предупреждения, которое выполнение может игнорировать?

  6. Доказательства канарейки.Является ли первая когорта репрезентативной для делегированных и мультисервисных префиксов? Есть ли у внутреннего состояния и внешней доступности время сойтись до расширения?

  7. Защита от удаления.Защищены ли активные анонсы и привязки сервисов от очистки утвердительными инвариантами? Рассматривается ли отсутствие одной связи как неопределённость, а не доказательство неиспользования?

  8. Подтверждение развёртывания.Может ли провайдер показать, какие пограничные машины и маршрутизаторы приняли намеченную конфигурацию, какие не смогли и какие остались ненаблюдаемыми? Включены ли проверки RIB, FIB и привязок сервисов?

  9. Внешнее наблюдение маршрута.Подтверждают ли независимые коллекторы и зонды ожидаемый источник, длину префикса и доступность из нескольких сетей? Сообщаются ли слепые зоны и отставание наблюдения?

  10. Независимый откат.Могут ли реагирующие остановить развёртывание и восстановить прежнее состояние, не доверяя изменяемому компоненту или данным? Тестируются ли образы до изменения и аварийные инвентари регулярно?

  11. Многоуровневое восстановление.Требует ли закрытие сверки базы данных, привязок, маршрутизаторов и внешнего наблюдения, а не только отката кода? Включены ли исправления самообслуживания клиентов в финальную проверку когорты провайдера?

  12. Доказательства для клиента.Может ли каждый затронутый клиент получить специфичную для префикса хронологию, изменения состояния, доказательства восстановления и известные ограничения? Отличает ли запись симптом сайта от базового сетевого сервиса?

  13. Проверка мер.Превращаются ли обязательства постмортема в принадлежащие меры со сроками, тестами и последующими доказательствами? Может ли провайдер показать, что сопоставимый сбой теперь останавливается на канарейке или защите?

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

Границы публичных данных

Доступные доказательства поддерживают точное описание инцидента, но не неограниченную реконструкцию. Cloudflare является основным публичным источником об инициировавшем изменении, времени, приблизительном числе префиксов, затронутых поверхностях и последовательности восстановления [1]. Её продуктовая документация объясняет текущие концепции BYOIP и клиентские меры [2]. Источники IETF определяют механизмы маршрутизации и авторизации. Ни один не даёт полную карту частной архитектуры Cloudflare 2026 года.

Поэтому статья не может указать, какая технология базы данных, производитель маршрутизаторов, последовательность команд или внутренняя структура команды вызвали сбой, пока Cloudflare не опубликует эту информацию. Она не может назвать неназванных клиентов или вывести их финансовые потери. Она не может предполагать, что каждый отозванный префикс был недоступен из каждой сети весь интервал. Альтернативные маршруты, кэшированное состояние и специфичное для продуктов поведение могли дать разные эффекты.

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

У стандартов тоже есть границы. RFC 4271 определяет поведение BGP, а стандарты RPKI определяют механизм авторизации источника [15][16][17][19]. RFC 7908 и RFC 9234 касаются утечек маршрутов и мер контроля отношений [18][20]. Эти документы могут прояснить, что означают анонс, отзыв, авторизация или утечка. Они не доказывают, какие меры развернула Cloudflare или предотвратил бы конкретный стандарт ошибку очистки.

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

Наконец, подотчётность не должна становиться оторванным от операций активизмом. Релевантный вопрос не в том, какой институт имеет абстрактные полномочия на адрес, а в том, точны ли, уникальны, безопасны и операционно непрерывны записи полномочий, разрешений, намерений сервиса и состояния работающей сети. Инцидент ценен тем, что обнажает измеримый разрыв между этими уровнями.

Заключение

Авария BYOIP Cloudflare в феврале 2026 года началась с внутреннего изменения в плоскости управления и закончилась только после того, как провайдер свёл несколько видов состояния. Было отозвано примерно 1 100 клиентских префиксов. Откат инициировавшего изменения остановил дальнейшие мутации, но не воссоздал каждую затронутую запись. Восстановление включало повторное анонсирование клиентами, восстановление базы данных, восстановление привязок сервисов и развёртывание конфигурации границы [1].

Эта последовательность делает инцидент большим, чем история об изменении ПО. Это проверка того, как сетевой оператор управляет принадлежащими клиентам номерными ресурсами после установления полномочий. Записи реестров, объекты IRR, ROA и письма-полномочия могут доказать важные факты о разрешениях. Они не могут доказать, что маршрутизаторы анонсируют префикс, что за ним привязан правильный сервис или что пользователи могут достичь его.

Требуемая цепочка доказательств пересекает каждый уровень: полномочия на ресурс, учётную запись и делегирование, привязку сервиса, намеченное состояние BGP, развёрнутое состояние маршрутизаторов и границы, а также внешнюю доступность. Разрушительная автоматизация должна ограничиваться точными пробными прогонами, защитами от удаления с учётом зависимостей, ограниченными когортами, репрезентативными канарейками и независимо протестированным откатом. Восстановление не должно закрываться, пока каждая затронутая идентичность не сверена между базой данных, работающей сетью и внешними наблюдениями.

Раскрытие Cloudflare даёт существенную основу для такого анализа, сохраняя важные неизвестные. Самая сильная реакция — не приуменьшать аварию как ошибку и не раздувать её до атаки или перехвата маршрута. Нужно требовать проверяемых переходов состояния от систем, которые превращают полномочия на номерные ресурсы в публичную доступность. В этом уровне реальности решающая запись — не то, что намеревалась плоскость управления, а что работающий интернет фактически мог маршрутизировать и что провайдер может доказать о различии.

Источники

  1. https://blog.cloudflare.com/cloudflare-outage-february-20-2026/
  2. https://developers.cloudflare.com/byoip/
  3. https://developers.cloudflare.com/byoip/get-started/
  4. https://developers.cloudflare.com/byoip/concepts/dynamic-advertisement/
  5. https://developers.cloudflare.com/byoip/concepts/prefix-delegations/
  6. https://developers.cloudflare.com/byoip/address-maps/
  7. https://developers.cloudflare.com/byoip/glossary/
  8. https://developers.cloudflare.com/byoip/troubleshooting/
  9. https://developers.cloudflare.com/byoip/concepts/loa/
  10. https://developers.cloudflare.com/magic-transit/how-to/advertise-prefixes/
  11. https://developers.cloudflare.com/magic-transit/how-to/safely-withdraw-byoip-prefix/
  12. https://developers.cloudflare.com/reference-architecture/diagrams/network/bring-your-own-ip-space-to-cloudflare/
  13. https://blog.cloudflare.com/rpki-updates-data/
  14. https://blog.cloudflare.com/bgp-hijack-detection/
  15. https://datatracker.ietf.org/doc/rfc4271/
  16. https://datatracker.ietf.org/doc/rfc6480/
  17. https://datatracker.ietf.org/doc/rfc6811/
  18. https://datatracker.ietf.org/doc/rfc7908/
  19. https://datatracker.ietf.org/doc/rfc8210/
  20. https://datatracker.ietf.org/doc/rfc9234/