Без проблем. Ты прав насчет входящего трафика. Гораздо проще реализовать политику исходящего трафика, потому что твоя сеть сама держит пакеты и решает, как их переслать, независимо от того, сколько у тебя публичных IP-адресов. Это называется «маршрутизация на основе политики», и у тебя есть много вариантов.
Один из них — просто балансировать нагрузку между интерфейсами (при условии, что все провайдеры подключены к одному маршрутизатору, но у этого есть серьёзный минус: единственная точка отказа. Вся сеть зависит от одного роутера).
В целом, маршрутизация на основе политики использует критерии, связанные с источником трафика, его назначением или их комбинацией.
Пример по источнику:
- Можно выбирать политику исходящего трафика в зависимости от интерфейса, с которого пришёл трафик (ether1 = здание 1 > ISP1 / ether2 = здание 2 > ISP2, если он доступен)
- Можно выбирать по IP-адресу источника (x.x.x.0/24 → ISP1, y.y.y.0/24 → ISP2)
- Если у тебя несколько маршрутизаторов в топологии, используя iBGP, можно настроить так, чтобы одни роутеры ставили более высокий LOCAL_PREF для маршрутов через ISP1, а другие — для маршрутов через ISP2.
Пример по назначению:
- Если решение будет приниматься по IP-адресам или диапазонам назначения, избегай соблазна использовать статические маршруты.
- Следует заставить BGP воспринимать эти назначения с приоритетом через ISP1, ISP2 и т.д.
- Обычно для этого используется LOCAL_PREF, но можно фильтровать (игнорировать) определённые префиксы от менее желательного провайдера, чтобы использовать другого. Например, сеть 4.0.0.0/8 идёт от обоих ISP, но у тебя есть префикс 4.8.16.0/22, который ты хочешь пускать через ISP2 — блокируешь этот /22 у ISP1, и роутер всегда будет использовать ISP2, потому что более конкретный маршрут побеждает.
- Можно выбирать по определённым назначениям: 0.0.0.0/0 = ISP1, за исключением ряда ASN, IP-диапазонов и т.п.
Можно использовать BGP-сообщества:
ISP могут добавлять community-номера к префиксам. В BGP нет единого стандарта их значений — каждый ASN задаёт свои параметры. Например, ISP с ASN65000 может сообщить, что community 65000:100 — маршрут к прямому клиенту, 65000:200 — через пировую сеть, 65000:300 — внутри собственной сети провайдера. Тогда можно прописать политику: 0.0.0.0/0 идёт через ISP1, а 65000:100 и 65000:300 — через ISP2. Это значит, что по умолчанию используешь ISP1, но для собственных сетей и прямых клиентов — ISP2.
Если сообщества нельзя использовать, можно договориться так, чтобы ISP2 давал только маршруты к клиентам + маршрут по умолчанию, а ISP1 — только маршрут по умолчанию.
Как видишь, с BGP можно делать много чего. Советую почитать как можно больше технических блогов, статей, форумов и посмотреть видео на YouTube по этой теме. У каждой сети свои особенности, и чем лучше ты понимаешь, как работает BGP, тем эффективнее сможешь настроить политику для своей сети.