BGP - ключевой протокол маршрутизации, который связывает независимые сети в интернет. В статье объясняются принципы работы BGP, его уязвимости, типовые ошибки и современные методы защиты от атак и неправильных маршрутов. Понимание BGP важно для предотвращения глобальных сбоев и сохранения устойчивости интернета.
BGP - один из ключевых протоколов, на которых держится современный интернет. Он помогает независимым сетям обмениваться информацией о маршрутах и решать, через каких операторов передавать трафик к нужным IP-адресам.
Пользователь обычно этого не замечает: он просто открывает сайт, а данные проходят через несколько сетей провайдеров, магистральных операторов и дата-центров. BGP определяет, какие из доступных путей использовать. Но та же система имеет уязвимое место: ошибочное объявление маршрута может быстро распространиться между операторами и сделать крупные сервисы или целые сети недоступными.
BGP расшифровывается как Border Gateway Protocol - протокол пограничного шлюза. Если говорить простыми словами, это система обмена информацией между крупными независимыми сетями о том, какие IP-адреса через них доступны.
Интернет не является одной огромной сетью под управлением единого оператора. Он состоит из множества отдельных сетей: интернет-провайдеров, операторов связи, облачных платформ, дата-центров, университетов и крупных компаний. Каждая такая сеть самостоятельно управляет своей внутренней инфраструктурой, но при этом должна обмениваться трафиком с остальным интернетом.
Для этого используются автономные системы, или AS - Autonomous Systems. Каждой такой системе назначается уникальный номер ASN. Например, крупный оператор связи может иметь собственную автономную систему, внутри которой находятся тысячи маршрутизаторов и множество диапазонов IP-адресов.
BGP работает прежде всего на границах этих автономных систем. Маршрутизаторы сообщают соседним сетям примерно следующее: "через меня можно добраться до такого диапазона IP-адресов". Соседняя сеть принимает эту информацию, добавляет её в свои таблицы и при необходимости передаёт дальше.
Если сеть владеет, например, диапазоном 203.0.113.0/24, она может объявить его своим соседям через BGP. Те узнают, что пакеты для адресов из этого диапазона следует отправлять в сторону этой автономной системы.
Это отличается от маршрутизации внутри одной организации. Внутри сети администратор контролирует оборудование и может использовать внутренние протоколы маршрутизации. Между независимыми операторами такого единого управления нет, поэтому нужен механизм, который позволяет тысячам сетей договариваться друг с другом.
BGP при этом не строит карту интернета в привычном смысле и не ищет физически кратчайшую дорогу между двумя точками. Его задача - распространять информацию о доступных маршрутах и позволять каждому оператору применять собственные правила выбора пути. На решение могут влиять не только технические параметры, но и договорённости между провайдерами, стоимость передачи трафика и политика конкретной сети.
Чтобы понять, как работает BGP, удобно представить интернет как сеть крупных узлов. Каждый узел - автономная система, которая связана с несколькими соседями и знает, через кого можно добраться до разных диапазонов IP-адресов.
BGP-маршрутизаторы соседних автономных систем устанавливают между собой соединение и начинают обмениваться маршрутами. Для этого BGP использует TCP, обычно порт 179. Благодаря этому самому протоколу не приходится отдельно решать вопросы доставки и повторной передачи служебных сообщений.
Основная единица такой информации - IP-префикс. Например, запись 203.0.113.0/24 обозначает диапазон из 256 IPv4-адресов. Если автономная система обслуживает этот диапазон, она может сообщить соседним сетям, что через неё до него можно добраться.
Соседняя автономная система получает объявление и решает, подходит ли этот маршрут согласно её правилам. Если подходит, информация может быть передана следующему соседу. Так сведения о доступности сетей постепенно распространяются по интернету.
При этом BGP передаёт не только конечный префикс. Вместе с маршрутом идут дополнительные атрибуты, описывающие его свойства. Один из самых важных - AS_PATH, то есть список автономных систем, через которые проходит путь.
Допустим, сеть AS100 объявила свой диапазон оператору AS200. Тот передал маршрут AS300. Для AS300 путь может выглядеть примерно так:
AS300 → AS200 → AS100
Если тот же диапазон доступен через другого оператора, маршрутизатор получает сразу несколько вариантов. Например:
AS300 → AS200 → AS100 и AS300 → AS400 → AS500 → AS100
Оба маршрута ведут к одной и той же сети, но имеют разные характеристики. BGP сохраняет полученную информацию и выбирает путь в соответствии с политикой автономной системы.
BGP-маршрутизатор может получать огромное количество объявлений от соседних сетей. Для одного IP-префикса нередко существует сразу несколько возможных маршрутов.
В таблице BGP хранятся сами префиксы, путь через автономные системы и дополнительные атрибуты, влияющие на выбор маршрута. Поэтому она представляет собой не просто перечень адресов, а постоянно меняющуюся картину доступности разных частей интернета.
Если один из операторов перестаёт быть доступен, его сосед может отозвать ранее объявленный маршрут. Информация об изменении распространяется дальше, после чего другие сети пересчитывают свои варианты и начинают использовать альтернативные пути.
Именно благодаря этому интернет способен продолжать работу даже при выходе из строя отдельных соединений. Трафик не обязан постоянно идти по одной фиксированной цепочке: при изменении состояния сети BGP позволяет операторам переключаться на другие доступные маршруты.
Но маршрутизатор не анализирует каждый возможный путь исключительно с точки зрения минимальной задержки или географического расстояния. Когда существует несколько вариантов, в дело вступают правила выбора маршрута и политика самого оператора.
BGP не выбирает маршрут так же, как навигатор выбирает кратчайшую дорогу. Для него лучший путь - тот, который соответствует политике конкретной автономной системы. Поэтому трафик может идти через более длинную цепочку сетей, даже если технически существует более короткий вариант.
Один из важных атрибутов - AS_PATH. Он содержит список автономных систем, через которые прошло объявление маршрута. Обычно при прочих равных BGP предпочитает путь с меньшим количеством AS, поскольку он выглядит более прямым.
Например, до одного и того же префикса могут существовать два маршрута:
AS100 → AS200 → AS500 и AS100 → AS300 → AS400 → AS500
Первый путь содержит меньше автономных систем, поэтому при одинаковых остальных условиях он может получить преимущество. Но количество AS - далеко не единственный критерий.
Большую роль играет LOCAL_PREF - локальный приоритет маршрута внутри автономной системы. Оператор может самостоятельно повысить предпочтение определённого направления. Например, провайдеру может быть выгоднее передавать трафик напрямую партнёру, чем отправлять его через платного транзитного оператора.
Из-за этого маршрут, который выглядит длиннее с технической точки зрения, иногда оказывается предпочтительным с экономической. Интернет состоит из независимых компаний, поэтому его маршрутизация зависит не только от скорости соединений, но и от договорённостей между операторами.
Другой атрибут - MED, или Multi-Exit Discriminator. Он позволяет одной автономной системе подсказать соседней, через какую из нескольких точек соединения ей предпочтительнее принимать трафик. Например, если два крупных провайдера соединены друг с другом в нескольких городах, MED может помочь выбрать определённую точку входа.
На выбор также влияют происхождение маршрута, настройки конкретного оборудования и другие атрибуты BGP. Причём порядок принятия решения может немного отличаться у разных производителей маршрутизаторов и в зависимости от конфигурации оператора.
Поэтому вопрос "как интернет выбирает маршрут" не имеет единственного универсального ответа. Каждая автономная система получает доступные варианты и применяет к ним собственную политику. На одном участке главным фактором может быть длина AS_PATH, на другом - коммерческие отношения, а где-то оператор намеренно направляет трафик по резервному каналу.
Чтобы посмотреть на этот процесс шире - от устройства пользователя до конечного сервера - полезно отдельно разобрать материал Как работает интернет: маршрутизация трафика и путь данных от компьютера до сервера. Он показывает, как маршрутизация BGP становится частью общего пути интернет-трафика.
BGP также не измеряет задержку до сайта в реальном времени и не перестраивает глобальные маршруты только потому, что один путь оказался на несколько миллисекунд быстрее. Его основная задача - определить доступный и разрешённый политикой путь между сетями.
Именно поэтому два пользователя из одного города могут попадать к одному сервису через разных операторов и даже через разные страны. Их провайдеры могут иметь разные соглашения, точки обмена трафиком и правила выбора BGP-маршрутов.
Такая модель делает интернет децентрализованным: ни один центральный сервер не решает, куда должен идти весь мировой трафик. Но у этой свободы есть обратная сторона. Если одна автономная система случайно объявит неправильный маршрут, остальные участники сети могут принять его за корректный и распространить дальше.
Главная проблема BGP в том, что протокол исторически строился на доверии между сетями. Когда одна автономная система сообщает соседям новый маршрут, остальные участники интернета обычно воспринимают объявление как достоверное и распространяют его дальше, если оно соответствует их правилам.
Из-за этого обычная ошибка в конфигурации способна выйти далеко за пределы одной компании. Например, оператор может случайно объявить, что через его сеть доступен диапазон IP-адресов, который на самом деле принадлежит другой организации. Соседние автономные системы получают такой маршрут и могут начать использовать его.
Если новый маршрут выглядит для BGP предпочтительнее существующего, часть интернет-трафика направляется в неправильную сеть. Там пакеты могут быть отброшены, попасть в перегруженный канал или отправиться дальше по некорректному пути. Для пользователя результат выглядит просто: сайты перестают открываться, приложения теряют соединение, а отдельные сервисы становятся недоступными.
Один из распространённых сценариев называется route leak - утечка маршрутов. Она возникает, когда автономная система передаёт соседям маршруты, которые не должна была распространять. Например, небольшой провайдер может случайно сообщить крупному оператору, что через него доступна значительная часть интернета.
Если такое объявление принимается и начинает распространяться дальше, трафик многих сетей может устремиться через инфраструктуру, которая совершенно не рассчитана на подобную нагрузку. Каналы быстро перегружаются, маршрутизаторы начинают терять пакеты, а доступность сервисов ухудшается сразу в нескольких регионах.
Масштаб проблемы зависит от того, насколько широко распространилось ошибочное объявление и какие сети его приняли. Поэтому одна неправильная настройка не обязательно "выключит весь интернет", но при неудачном сочетании маршрутов может затронуть множество операторов и крупных онлайн-сервисов.
Глобальные сбои хорошо показывают, насколько интернет зависит от маршрутизации и взаимодействия независимых сетей. Подробнее другие слабые места такой инфраструктуры разобраны в материале Почему интернет уязвим: слабые места глобальной сети и причины сбоев.
Ситуация осложняется тем, что BGP работает динамически. Когда неправильный маршрут появляется, он распространяется между автономными системами. После исправления ошибки необходимо распространить уже обновлённую информацию и отозвать старые маршруты.
Этот процесс называют сходимостью сети. Разные маршрутизаторы получают обновления не одновременно, поэтому некоторое время одна часть интернета уже может использовать правильный путь, а другая всё ещё отправляет трафик по старому маршруту.
Кроме того, операторы применяют собственные фильтры и политики BGP. Один провайдер может сразу отклонить ошибочное объявление, другой - принять его. Поэтому последствия одного события могут сильно отличаться для пользователей разных сетей.
Именно сочетание децентрализованной архитектуры, доверия к объявлениям и огромного количества взаимосвязанных автономных систем делает ошибки BGP особенно заметными. Чем более привлекательным выглядит неверный маршрут, тем больше трафика он способен перетянуть на себя.
Ошибки конфигурации - не единственная проблема BGP. Маршруты можно объявить и намеренно. Такой сценарий называют BGP Hijacking - захватом маршрута, при котором автономная система сообщает другим участникам сети, что через неё доступен чужой диапазон IP-адресов.
Механика похожа на обычную ошибку: злоумышленник или неправильно настроенная сеть отправляет BGP-объявление для префикса, которым фактически не управляет. Если соседние операторы примут его и распространят дальше, часть трафика начнёт идти в сторону ложного маршрута.
Особенно опасны более специфичные объявления. Например, если настоящий владелец объявляет сеть 203.0.112.0/22, а другая автономная система начинает рекламировать входящий в неё более узкий префикс 203.0.113.0/24, маршрутизаторы обычно выберут более конкретный маршрут. Это связано с правилом longest prefix match: при пересекающихся маршрутах предпочтение получает наиболее точное совпадение по адресу.
Дальнейшее поведение трафика зависит от цели атаки и конфигурации сети. Он может просто исчезнуть, если пакеты попадают в "чёрную дыру". В другом случае трафик теоретически можно перенаправить дальше к настоящему получателю, создав обходной путь через чужую инфраструктуру.
BGP Hijacking важно отличать от route leak. При утечке маршрутов сеть обычно распространяет существующие маршруты не тем соседям или не в том объёме. При захвате маршрута проблема связана с тем, что автономная система объявляет префикс, который ей не принадлежит или который она не должна объявлять.
Для защиты операторы используют фильтрацию маршрутов. Провайдер может заранее определить, какие префиксы клиент имеет право объявлять, и блокировать всё остальное. Такой подход особенно эффективен на границе между оператором и его клиентскими сетями.
Дополнительный механизм защиты - RPKI, Resource Public Key Infrastructure. Он позволяет владельцу IP-адресного пространства криптографически указать, какие автономные системы имеют право объявлять определённые префиксы. Эти данные оформляются в виде ROA - Route Origin Authorization.
Получив BGP-маршрут, оператор может проверить его происхождение по RPKI. Если объявление соответствует опубликованному разрешению, маршрут считается валидным по происхождению. Если ASN не совпадает с разрешённым, такой маршрут можно отклонить.
RPKI не проверяет весь путь AS_PATH и не делает BGP полностью защищённым. Он в первую очередь помогает подтвердить, что конкретная автономная система действительно имеет право быть источником объявления данного префикса. Но даже эта проверка существенно сокращает класс ошибок и атак, связанных с подменой происхождения маршрута.
Для понимания того, где именно соединяются разные автономные системы и почему BGP-объявления быстро распространяются между крупными операторами, полезно отдельно посмотреть материал Как работают магистральные сети и точки обмена интернет-трафиком.
Полностью исключить ошибки BGP пока невозможно. Глобальная маршрутизация состоит из огромного количества независимых сетей, каждая из которых использует собственные настройки, фильтры и коммерческие политики. Даже при наличии RPKI и строгой фильтрации безопасность зависит от того, насколько последовательно эти механизмы внедрены у разных операторов.
Поэтому устойчивость BGP строится не на одном защитном механизме, а на сочетании фильтрации, проверки происхождения маршрутов, мониторинга аномалий и быстрой реакции сетевых операторов на подозрительные объявления.
BGP - один из базовых механизмов, благодаря которым тысячи независимых сетей складываются в единый интернет. Автономные системы сообщают друг другу, какие IP-префиксы через них доступны, а маршрутизаторы выбирают подходящий путь с учётом AS_PATH, локальных приоритетов, политики операторов и других параметров.
Такая архитектура делает интернет гибким и децентрализованным. Если один канал или оператор становится недоступен, маршруты могут перестроиться, а трафик - пойти через другие сети. При этом отсутствие единого центра управления означает, что ошибочное BGP-объявление тоже способно распространиться далеко за пределы одной автономной системы.
Route leak, неправильная конфигурация или BGP Hijacking могут перенаправить трафик в неподходящую сеть и сделать часть сервисов недоступной. Фильтрация маршрутов и RPKI уменьшают риск подобных ситуаций, но полностью исключить человеческие ошибки и некорректные объявления пока невозможно.
Обычному пользователю настраивать BGP не приходится, однако понимание его работы помогает объяснить, почему иногда крупный сервис перестаёт открываться сразу у миллионов людей, хотя сами серверы продолжают работать. В таких случаях проблема может находиться не в сайте или домашнем подключении, а в глобальной маршрутизации между сетями.