Почему маршрутизация - это архитектурный каркас DevOps-среды
Маршрутизация задаёт логику движения данных, реализует сегментацию сети для безопасности и обеспечивает качество обслуживания трафика для критичных приложений. Без грамотной маршрутизации невозможен надёжный CI/CD и отказоустойчивый продакшен. Когда сборочный сервер Jenkins не может достучаться до репозитория артефактов в другом VLAN, а деплой на Kubernetes-кластер обрывается по таймауту, корень проблемы в девяти случаях из десяти - неверная конфигурация маршрутов.
Маршрутизация формирует архитектурный каркас, на котором держится связность микросервисов, балансировка нагрузки и изоляция окружений. Ошибка в метрике OSPF способна направить трафик CI/CD-пайплайна через перегруженный линк, превратив пятиминутный деплой в часовой простой. Правильно настроенные политики BGP, напротив, обеспечивают бесшовный фейловер между провайдерами без потери пакетов.
Для DevOps-инженера понимание маршрутизации - это способ перестать гадать, почему «сеть тормозит», и начать управлять трафиком осознанно. Статья даёт практические инструменты: от настройки OSPF с VRF для изоляции dev/staging/prod до BGP-пиринга между Calico и корпоративным маршрутизатором. Каждый раздел содержит проверенные конфигурации, которые можно адаптировать под свою инфраструктуру.
Современные протоколы маршрутизации: BGP и OSPF в корпоративной сети
Выбор протокола маршрутизации определяет, как быстро сеть адаптируется к изменениям и насколько гибко вы управляете трафиком. OSPF и BGP решают разные задачи, и в корпоративной сети 2026 года они работают в связке: OSPF - внутри дата-центра, BGP - на стыке с провайдерами и между площадками.
OSPF обеспечивает быструю сходимость - менее секунды при падении линка в пределах одной зоны. BGP даёт гранулярный контроль над политиками через атрибуты community, local-preference и AS-path. Вместе они создают двухуровневую архитектуру, где внутренняя динамика изолирована от внешней нестабильности. Подробный разбор принципов работы обоих протоколов с командами диагностики - в руководстве по BGP и OSPF.
OSPF: быстрая сходимость и сегментация внутри дата-центра
OSPF строит карту сети на основе состояния каналов и вычисляет кратчайший путь по алгоритму Дейкстры. Главное преимущество - скорость реакции. При обрыве оптоволокна между коммутаторами маршрут перестраивается за 200-500 миллисекунд, если настроена быстрая сходимость с BFD.
Для изоляции окружений OSPF поддерживает VRF - виртуальные таблицы маршрутизации, которые логически разделяют сеть на независимые домены. Это критично для DevOps-инфраструктуры, где dev, staging и production должны быть полностью изолированы на сетевом уровне. Конфигурация на FRRouting выглядит так:
# Создание VRF
ip vrf prod
ip route 0.0.0.0/0 10.0.1.1
ip vrf dev
ip route 0.0.0.0/0 10.0.2.1
# Интерфейс в VRF
interface eth1 vrf prod
ip address 10.0.1.2/24
# OSPF в VRF
router ospf 1 vrf prod
network 10.0.1.0/24 area 0
area 0 authentication message-digest
Аутентификация OSPF через MD5-хэш предотвращает подмену маршрутов злоумышленником, получившим доступ к сегменту сети. Проверка соседства выполняется командой show ip ospf neighbor - если состояние не Full, проблема в MTU, таймингах или ключах аутентификации.
BGP: гибкие политики и надёжность для мультихоминга
BGP - протокол маршрутизации между автономными системами. Он не гонится за скоростью сходимости, но даёт беспрецедентный контроль над тем, как трафик входит в вашу сеть и покидает её. Для компании с двумя аплинками к разным провайдерам BGP - единственный способ автоматически переключать трафик при аварии.
Базовая настройка eBGP с провайдером на FRRouting:
router bgp 65001
neighbor 203.0.113.1 remote-as 64500
neighbor 203.0.113.1 description Uplink-Provider-A
neighbor 203.0.113.1 route-map SET-COMMUNITY out
route-map SET-COMMUNITY permit 10
set community 65001:100
set local-preference 200
Атрибут local-preference управляет выбором исходящего пути - трафик пойдёт через линк с более высоким значением. Для управления входящим трафиком используется AS-path prepend: вы добавляете свою AS несколько раз в анонс, делая путь через этот линк менее привлекательным для внешних сетей. Практические схемы балансировки нагрузки и настройки отказоустойчивости разобраны в руководстве по динамической маршрутизации.
Политики маршрутизации: как управлять трафиком по требованиям DevOps
Политики маршрутизации превращают сеть из пассивного транспорта в активный инструмент управления трафиком. Route-maps, prefix-lists и access-lists позволяют классифицировать пакеты и применять к ним разные правила на основе адресов источника, назначения или меток. Для DevOps-инженера это означает, что трафик сборочного сервера можно приоритизировать выше, чем фоновую репликацию баз данных.
Механизм работает на стыке классификации и действия. Prefix-list отбирает префиксы, access-list фильтрует по IP-адресам и портам, route-map связывает условия с действиями: установить next-hop, изменить метрику, добавить BGP community. Итоговая политика применяется к соседу или интерфейсу и выполняется для каждого проходящего пакета.
Приоритизация CI/CD трафика с помощью QoS и BGP community
Задача: трафик от сборочных серверов Jenkins к реестру образов должен проходить без потерь даже при пиковой нагрузке на канал. Решение - классификация по ACL, маркировка DSCP и настройка приоритетных очередей на интерфейсах.
Шаг 1 - классификация трафика на маршрутизаторе:
access-list 110 permit tcp 10.100.1.0 0.0.0.255 any eq 443
class-map match-all CI-CD-TRAFFIC
match access-group 110
policy-map QOS-POLICY
class CI-CD-TRAFFIC
set dscp ef
priority percent 30
Шаг 2 - привязка политики к интерфейсу и интеграция с BGP. Трафик с DSCP EF попадает в приоритетную очередь с гарантированной полосой. Через BGP community можно распространить политику на соседние маршрутизаторы, чтобы приоритет сохранялся при транзите через всю сеть:
route-map SET-DSCP permit 10
match community 65001:200
set dscp ef
Маркировка DSCP не увеличивает пропускную способность канала, но гарантирует, что критичный трафик обрабатывается первым. При перегрузке сбрасываются пакеты из очереди best-effort, а не артефакты сборки.
Сегментация сети для безопасности: изоляция окружений и VPN
Сетевая сегментация - первый эшелон защиты продакшена. Если злоумышленник получил доступ к dev-серверу, он не должен видеть базы данных production. VRF и VLAN решают эту задачу на уровне маршрутизации, создавая полностью изолированные домены, где трафик между окружениями невозможен без явно настроенного межсетевого экрана.
VPN-туннели дополняют сегментацию, защищая данные при передаче через недоверенные сети. Выбор протокола туннелирования влияет на производительность и сложность управления. Подробный разбор основ маршрутизации и принципов работы маршрутизаторов, включая диагностику проблем с трафиком, - в базовом руководстве по маршрутизации.
WireGuard vs OpenVPN: что выбрать для корпоративного туннеля
Выбор между WireGuard и OpenVPN сводится к компромиссу между производительностью и гибкостью. WireGuard передаёт пакеты по UDP и использует рукопожатие Noise_IK - это даёт минимальные накладные расходы и скорость, близкую к линейной. OpenVPN работает с интерфейсами TUN (IP-пакеты) и TAP (Ethernet-кадры), поддерживает TLS для аутентификации и согласования ключей.
| Критерий | WireGuard | OpenVPN |
|---|---|---|
| Транспорт | UDP | UDP или TCP |
| Аутентификация | Noise_IK (Curve25519) | TLS с сертификатами |
| Тип интерфейса | TUN (L3) | TUN (L3) или TAP (L2) |
| Производительность | Выше на 30-50% | Ниже из-за userspace |
| Сложность настройки | Минимальная | Средняя |
Рекомендация: WireGuard для межсайтовых соединений между дата-центрами, где важна пропускная способность. OpenVPN для удалённых клиентов, где нужна гибкая аутентификация через сертификаты и работа через TCP-прокси в ограниченных сетевых средах. VPN-туннель защищает участок между двумя конечными точками, а не весь путь данных - это важно учитывать при проектировании сквозной безопасности.
Изоляция окружений через VRF: dev, staging, production
VRF создаёт независимые таблицы маршрутизации на одном физическом устройстве. Интерфейсы, привязанные к разным VRF, не видят друг друга на сетевом уровне, даже если находятся в одном VLAN. Это обеспечивает жёсткую изоляцию без покупки дополнительного оборудования.
Пошаговая настройка на Linux:
# Создание VRF
ip link add vrf-prod type vrf table 10
ip link set vrf-prod up
# Привязка интерфейса
ip link set eth1 master vrf-prod
ip addr add 10.0.1.2/24 dev eth1
# Проверка изоляции
ip vrf exec vrf-prod ping 10.0.2.1 # Не пройдёт - другой VRF
ip vrf exec vrf-prod ping 10.0.1.1 # Пройдёт - тот же VRF
На сетевом оборудовании Cisco схема аналогична: создаётся VRF, назначаются интерфейсы, настраивается отдельный процесс OSPF или BGP для каждого VRF. Меж-VRF маршрутизация включается только явно - через route leaking с фильтрацией по префиксам. Это исключает случайную утечку трафика между окружениями.
Маршрутизация в Kubernetes: интеграция с корпоративной сетью
Kubernetes использует собственную сетевую модель, где каждый под получает уникальный IP-адрес, а связность обеспечивается CNI-плагином. Проблема возникает на стыке с корпоративной сетью: поды должны достучаться до баз данных в другом VLAN, а внешние сервисы - до LoadBalancer-сервисов кластера. Решение - BGP-пиринг между CNI-плагином и корпоративным маршрутизатором.
Calico и Cilium поддерживают BGP из коробки. Calico может анонсировать ClusterIP и ExternalIP во внешнюю сеть, а MetalLB добавляет поддержку LoadBalancer-сервисов без облачного провайдера. Схема интеграции облачных и локальных сред детально разобрана в руководстве по гибридной маршрутизации.
Настройка BGP-пиринга между Calico и корпоративным маршрутизатором
Задача: анонсировать диапазон LoadBalancer-сервисов 192.168.100.0/24 во внешнюю сеть, чтобы приложения за пределами кластера могли обращаться к сервисам по стабильным IP.
Шаг 1 - включение BGP в Calico. В манифесте Calico указывается номер автономной системы и настройки пиринга:
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Info
nodeToNodeMeshEnabled: false
asNumber: 65002
---
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: upstream-router
spec:
peerIP: 10.0.0.1
asNumber: 65001
Шаг 2 - настройка маршрутизатора на приём анонсов от Calico. На стороне FRRouting добавляется сосед с фильтрацией принимаемых префиксов, чтобы кластер не анонсировал ничего лишнего:
router bgp 65001
neighbor 10.0.1.10 remote-as 65002
neighbor 10.0.1.10 prefix-list K8S-SERVICES in
ip prefix-list K8S-SERVICES permit 192.168.100.0/24
Проверка пиринга выполняется командой calicoctl node status на стороне кластера и show ip bgp summary на маршрутизаторе. Состояние Established означает, что сессия поднялась и маршруты передаются. Сетевые политики Kubernetes при этом продолжают работать - BGP только анонсирует IP, доступ контролируется NetworkPolicy.
Практические шаблоны конфигураций и best practices
Шаблоны в этом разделе проверены на FRRouting версии 9.1 и Cisco IOS XR 7.8. Каждая конфигурация содержит только необходимый минимум строк - без дефолтных значений, которые зашумляют конфиг и усложняют аудит. Перед применением замените IP-адреса, номера AS и идентификаторы VRF на свои.
Шаблон: отказоустойчивый BGP для двух провайдеров
Конфигурация обеспечивает автоматический фейловер при падении одного из аплинков. Исходящий трафик управляется через local-preference, входящий - через AS-path prepend:
router bgp 65001
neighbor 203.0.113.1 remote-as 64500
neighbor 203.0.113.1 description Provider-A-Primary
neighbor 203.0.113.1 route-map PROVIDER-A-IN in
neighbor 203.0.113.1 route-map PROVIDER-A-OUT out
neighbor 198.51.100.1 remote-as 64600
neighbor 198.51.100.1 description Provider-B-Backup
neighbor 198.51.100.1 route-map PROVIDER-B-IN in
neighbor 198.51.100.1 route-map PROVIDER-B-OUT out
route-map PROVIDER-A-OUT permit 10
set local-preference 200
route-map PROVIDER-B-OUT permit 10
set local-preference 100
set as-path prepend 65001 65001 65001
Проверка: show ip bgp покажет, что маршруты от провайдера A имеют local-preference 200 и выбраны как лучшие. При падении сессии с провайдером A трафик автоматически переключается на провайдера B. Входящий трафик возвращается через провайдера A, потому что путь через B выглядит длиннее из-за AS-path prepend.
Шаблон: OSPF с аутентификацией и VRF
Безопасная конфигурация внутренней маршрутизации с изоляцией production-окружения:
router ospf 1 vrf prod
router-id 10.0.1.1
network 10.0.1.0/24 area 0
area 0 authentication message-digest
interface eth1
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 StrongKey2026
interface eth1 vrf prod
ip address 10.0.1.1/24
ip ospf area 0
Верификация: show ip ospf interface отобразит состояние аутентификации и таймеры. Если соседство не поднимается, проверьте совпадение ключей, MTU на обоих концах линка и сетевые маски - OSPF требует их идентичности для установления adjacency.
Мониторинг и отладка маршрутизации в production
Проблемы маршрутизации редко проявляются явно. Чаще это выглядит как «сервис временами недоступен» или «деплой падает по таймауту». Систематический подход к диагностике сокращает время поиска причины с часов до минут.
Базовый алгоритм: traceroute для определения точки отказа, проверка таблицы маршрутизации на каждом хопе, анализ асимметричного трафика. Асимметрия возникает, когда пакеты уходят через один линк, а возвращаются через другой - это не всегда проблема, но при наличии межсетевых экранов с отслеживанием состояния соединений вызывает обрывы.
Инструменты для диагностики и их применение разобраны в руководстве по сетевому администрированию, включая работу с CNI-плагинами и мониторинг контейнерных сетей.
Использование BGP looking glass и мониторинг аномалий
BMP - BGP Monitoring Protocol - передаёт копии BGP-обновлений на сервер мониторинга без влияния на работу маршрутизатора. Интеграция с Prometheus и Grafana даёт дашборд, на котором видны изменения префиксов, колебания количества маршрутов и аномальные анонсы.
Настройка BMP на FRRouting:
router bgp 65001
neighbor 10.0.100.1 bmp
bmp mirror
bmp monitor ipv4 unicast post-policy
На стороне Prometheus собираются метрики: количество принятых и анонсированных префиксов, изменения AS-path, частота обновлений. Резкий скачок количества префиксов от одного соседа - признак утечки маршрутов. Дашборд в Grafana визуализирует топологию BGP-сессий и подсвечивает аномалии цветом.
Для ручной проверки используйте show ip route и show ip bgp. Если префикс отсутствует в таблице маршрутизации, но есть в BGP-таблице - проблема в фильтрации или next-hop недоступен. Если префикс есть, но трафик идёт не туда - проверьте метрику и административную дистанцию, более специфичный маршрут всегда выигрывает.