Повторяемая история такова: демон маршрутизации на устройстве VPN в EC2 научит VPC своим удалённым префиксам, как только поднимется BGP. Половина этого верна. Сессия поднимается, и в таблице маршрутов VPC из-за этого ничего не меняется, поэтому первым симптомом обычно становится подсеть, которая тихо отправляет трафик в чёрную дыру.

Здесь путают две разные вещи: пиринг с сервером маршрутизации и установку маршрутов в таблицу.

Миф: поднимите BGP, и VPC выучит префиксы

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

Шаги настройки разделены не просто так: связать, создать конечную точку, настроить пиринг, затем включить распространение.

Route Server — это плоскость управления, а не туннель

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

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

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

Распространение — для каждой таблицы маршрутов, а не для всей VPC

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

Проверяйте действующую таблицу конкретной подсети, а не список префиксов, которые анонсирует устройство. API отвечает на этот вопрос напрямую: aws ec2 associate-route-server и aws ec2 enable-route-server-propagation --route-table-id <id> — это два шага, которые люди забывают, а aws ec2 describe-route-tables --route-table-ids <id> показывает, пришёл ли префикс вообще как запись route server.

Устройство по-прежнему несёт каждый пакет

Анонсировать доступность — не то же самое, что иметь её. Сессия BGP может оставаться установленной, пока VPN устройства не работает, а статический анонс, который никогда не меняется, продолжает тянуть трафик к мёртвому пути. Route Server поддерживает обнаружение сбоев, например BFD, но это проверяет живость партнёра, а не здоровье всего, что за ним.

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

Отзовите префикс и посмотрите, что произойдёт

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

Перенос маршрута на второе устройство не переносит сессии, которые он нёс, потому что состояние NAT и межсетевого экрана остаётся на первом устройстве.

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

Похожие статьи