Примерно в семь часов вечера весь онлайновый мир застыл изумленным: отключили Facebook, Instagram, WhatsApp и другие сервисы этой соцсети. Они полностью перестали работать и как будто исчезли из интернета. Пользователи не растерялись и массово начали регистрироваться в других мессенджерах и соцсетях. Остался вопрос, как удалось отключить Facebook?
Facebook отключили
Сперва мало кто думал, что проблема очень серьезная. В CloudFlare, например, сначала думали, что проблема с их распознавателем DNS 1.1.1.1 и уже готовились опубликовать соответствующее заявление на своем сайте, но более детальный анализ показал, что проблемы гораздо серьезнее.
Facebook и его дочерние службы WhatsApp и Instagram, по сути, были полностью отключены. Их DNS-имена перестали определяться, а IP-адреса их серверов были недоступны. Это было так, как если бы кто-то одновременно выдернул все кабели из своих центров обработки данных и отключил их от интернета.
Как это вообще возможно
Facebook опубликовал сообщение в блоге, в котором приводятся некоторые подробности того, что произошло внутри компании. Сторонние специалисты видели проблемы с BGP и DNS описаны в этом посте, но на самом деле проблема началась с изменения конфигурации, которое повлияло на всю внутреннюю магистраль. Это привело к исчезновению Facebook и других объектов.
Проблема существовала около трех часов. Такую продолжительность некоторые эксперты объясняют тем, что стали недоступны все внутренние ресурсы компании, включая мессенджеры и корпоративные адресные книги. Еще исчезли почти все привычные способы коммуникации.
Сотрудники Facebook не могли попасть в офис, поскольку бейджики привязаны к интернет-авторизации. Также значительную часть проблем можно было решить только при физическом доступе к серверам, что осложнялось дистанционной работой.
Знакомьтесь с BGP
BGP расшифровывается как протокол пограничного шлюза. Это механизм обмена информацией о маршрутизации между автономными системами (AS) в интернете.
Большие маршрутизаторы, которые обеспечивают работу интернета, имеют огромные, постоянно обновляемые списки возможных маршрутов, которые можно использовать для доставки каждого сетевого пакета в конечные пункты назначения. Без BGP интернет-маршрутизаторы не знали бы, что делать, и интернет не работал бы.
Интернет-это буквально сеть сетей, и они связаны между собой BGP. BGP позволяет одной сети (скажем, Facebook) рекламировать свое присутствие в других сетях, образуют интернет. Если, Facebook не рекламирует свое присутствие, интернет-провайдеры и другие сети не могут найти сеть Facebook, и поэтому она недоступна.
У каждой отдельной сети есть ASN: номер автономной системы. Автономная система (AS) — это отдельная сеть с единой внутренней политикой маршрутизации. AS может создавать префиксы (скажем, они контролируют группу IP-адресов), а также транзитные префиксы (скажем, они знают, как достичь определенных групп IP-адресов).
ASN Номер Cloudflare — AS13335. Каждый ASN должен объявлять свои префиксные маршруты в интернет с помощью BGP, иначе никто не будет знать, как подключиться и где найти.
На этой упрощенной схеме шесть автономных систем в Интернете и два возможных маршрута, по которым один пакет может пройти от начала до конца. AS1 > AS2 > AS3 — самый быстрый, а AS1 > AS6 > AS5 > AS4 > AS3 — самый медленный, но его можно использовать, если первый не сработает.
В 15: 58 UTC в CloudFlare заметили, что Facebook перестал объявлять маршруты к своим DNS-префиксов. Это означало, что по крайней мере DNS-серверы Facebook были недоступны. Из-за этого распознаватель DNS Cloudflare 1.1.1.1 больше не мог отвечать на запросы, запрашивающие IP-адрес facebook.com .
Между тем, другие IP-адреса Facebook оставались маршрутизированными, но не были особенно полезными, поскольку без DNS Facebook и связанные с ним службы были фактически недоступны.
Уведомление об обновлении BGP информирует маршрутизатор о любых изменениях, внесенных в объявление префикса, или полностью удаляет префикс. Это можно четко видеть по количеству обновлений от Facebook. Обычно этот график довольно спокойный: Facebook не вносит много изменений в свою сеть ежеминутно.
Но примерно в 15: 40 UTC произошел пик изменений маршрутизации с Facebook. Вот тогда-то и начались неприятности.
Что именно произошло
Маршруты были отменены, DNS-серверы Facebook отключились. Сайты Facebook фактически отключились от интернета.
Как прямое следствие этого, знатоки DNS по всему миру перестали разрешать доменные имена сайтов соцсети. Это связано с тем, что DNS, как и многие другие системы в интернете, также имеет свой механизм маршрутизации.
Когда кто-то набирает https://facebook.com URL-адрес в браузере, распознаватель DNS, ответственный за преобразование доменных имен в фактические IP-адреса для подключения, сначала проверяет, есть ли что-то в его кэше, и использует это. Если нет, он пытается получить ответ от серверов доменных имен, которые обычно размещаются организацией, которой он принадлежит.
Если серверы имен недоступны или не отвечают из какой-либо иной причине, возвращается SERVFAIL, и браузер выдает пользователю ошибку.
Приложения и люди игнорируют ошибку
Но это еще не все. Теперь человеческое поведение и логика приложений срабатывают и вызывают еще один экспоненциальный эффект. За этим следует цунами дополнительного DNS-трафика.
Это произошло отчасти потому, что приложения не принимают ошибку за ответ и начинают повторять попытки подключения, иногда агрессивно. Также конечные пользователи также не принимают ошибку за ответ и начинают перезагружать страницы и перезапускать приложения, иногда агрессивно.
Поскольку Facebook и их узлы настолько велики, DNS-знатоки по всему миру начали обрабатывать в 30 раз больше запросов, чем обычно. Это привело к проблемам с задержкой и временем ожидания для других сайтов интернета.
Влияние на другие интернет-сервисы
Люди ищут альтернативы и хотят узнать больше или обсудить, что происходит. Когда Facebook стал недоступным, увеличилось количество запросов DNS на Twitter, Signal и другие платформы обмена сообщениями и социальные сети.
В итоге
Во всем мире трафик, поступавший в сеть Facebook и выходивший из нее, просто исчез.
Эти события являются мягким напоминанием о том, что интернет — это очень сложная и взаимосвязана система, состоящая из миллионов систем и протоколов, которые работают вместе. Это доверие, стандартизация и сотрудничество между организациями лежат в основе того, чтобы ИТ работали почти для пяти миллиардов активных пользователей по всему миру.
По материалам: CloudFlare