Mikrotik разные bgp community в разные шлюзы

Мне тут понадобилось в Mikrotik разрулить разные bgp community в разные шлюзы или интерфейсы, кому как нравится. Долго не мог найти такой информации в интернете и даже ИИ не давал верного ответа. Выработал решение самостоятельно и сделал заметку для себя и может кому еще пригодится.

Ранее я уже делал статьи про настройку BGP в Mikrotik поэтому сейчас не буду повториться, а расскажу конкретно как завернуть разные bgp community в разные шлюзы или интерфейсы. Так же в статье про настройку BIRD я оставлял информацию как можно сделать то же самое, что и в этой статье, но эта конфигурация мне кажется более правильной и логичной.

Если знаете другое более правильное решение, то напишите в комментариях какое и самое главное почему вы считаете ваше решение лучше, чем это.

Исходные данные:

  • Mikrotik RB5009 с RouterOS v7.18.2
  • Имеется два настроенных и работающих стыка BGP, которые получают разные BGP community с разными сервисами.
  • Имеются два разных шлюза или интерфейса для доступа к этим сервисам
  • community 65444:770 и 65444:780 через интерфейс wg0
  • community 64888:301 через интерфейс wg0
  • Остальные community через интерфейс wg2

Для начала нужно перейти в Winbox и открыть Routing > Filtr. Создать нужное количество правил. Тут важно, что правила читаются сверху в низ и их порядок имеет значение. Поэтому сначала нужные community, а затем все остальные, которые не попали под первые правила. Правила можно перетаскивать и устанавливать их в нужной последовательности. Так же нужно отметить, что правила с одинаковым названием фильтра в Mikrotik, например IN-antifiltr-2, это один фильтр, но их применение строго сверху в низ.

Я создал три правила с названием фильтра IN-antifiltr-2 и три правила с названием фильтра IN-BIRD-2. Разместил их по очереди друг за другом

/routing/filter/
add chain=IN-antifiltr-2 comment=YuoTube disabled=no rule="if (bgp-communities includes 65444:770){set gw *0xc;accept;}"
add chain=IN-antifiltr-2 comment=Google disabled=no rule="if (bgp-communities includes 65444:780){set gw *0xc;accept;}"
add chain=IN-antifiltr-2 comment="Default othe" disabled=no rule="set gw *0x13; accept;"

/routing/filter/
add chain=IN-BIRD-2 comment=Google disabled=no rule="if (bgp-communities includes 64888:301){set gw *0xc;accept;}"
add chain=IN-BIRD-2 comment=Discord disabled=yes rule="if (bgp-communities includes 64888:501){set gw wg0;accept;}"
add chain=IN-BIRD-2 comment="Default othe" disabled=no rule="set gw *0x13; accept;"

Я не знаю почему, но в Winbox имя интерфейса отображается корректно, а в терминале указываются какие-то непонятные значения для меня (wg0 – *0xc wg2 – *0x13). Я делал через Winbox, но для понимания выложил конфигурацию выше

Затем остается пойти в настройки BGP пира и изменить входящий фильтр на нужный

Через мгновение маршруты перестроятся и вы получите желаемый результат

Теперь вы знаете как сделать в Mikrotik разные bgp community в разные шлюзы

Решил еще для истории зафиксировать конфиг с параметром distance. На данный момент я еще не решил точно как это может пригодиться. Идея изначально была как-то зарезервировать шлюз. Ума еще не дал, но в заметках оставил.

/routing/filter/
add chain=IN-antifiltr-2 comment=YuoTube disabled=no rule="if (bgp-communities includes 65444:770){set gw wg0;set distance 100;accept;}"
add chain=IN-antifiltr-2 comment=Google disabled=no rule="if (bgp-communities includes 65444:780){set gw wg0;set distance 100;accept;}"
add chain=IN-antifiltr-2 comment="Default othe" disabled=no rule="set gw wg2; set distance 100; accept;"

/routing/filter/
add chain=IN-BIRD-2 comment=Google disabled=no rule="if (bgp-communities includes 64888:301){set gw wg0;set distance 100;accept;}"
add chain=IN-BIRD-2 comment=Discord disabled=yes rule="if (bgp-communities includes 64888:501){set gw wg0;set distance 100;accept;}"
add chain=IN-BIRD-2 comment="Default othe" disabled=no rule="set gw wg2; set distance 100; accept;"
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии