Есть два роутера cisco 2951, каждая смотрит в своего провайдера, на каждой есть NAT.Есть ядро сети из двух cisco 9300 в stack, с настроенными SVI (interface vlan), где осуществляется межвланный роутинг.
Между ядром сети и роутерами настроен eigrp.
Разные подсети из ядра натятся в разных провайдеров при помощи route-map.
Вроде бы всё стандартно.
Возникла задача сделать доступ на один внутренний IP (виртуальную машину) доступ снаружи с двух провайдеров.
Т.е. На обеих 2951 пробрасываем порт на внутренный IP.
СХЕМА - https://ibb.co/Wk36rhG
Вроде бы простая задача но вызывает много вопросов.
В случае с микротиком-линуксом там понятно, можно помечать соединения в conntrack в фаирволе. Думаю если бы вместо 9300 был какой микрот я бы решил задачу.
Но как пометить соединения у циски?
Есть решение с одним роутером и двумя провайдерами, например можно сделать дополнительный нат через лупбек чтобы менять SRC IP у пакетов пришедших через 2 интерфейс - например https://habr.com/ru/post/117573/
Но как то это костыльно и мне не очень нравиться делать дополнительный NAT на одном из двух роутеров.
Есть еще решения через ip nat outside source, либо же повесить второй айпишник на виртуалку - https://habr.com/ru/post/80555/.
Тоже так себе.
Одно найденное решение для одного роутера мне понравилось - https://habr.com/ru/post/323108/ - суть в том что на каждого провайдера есть свой VRF и еще один локальный, плюс между ними BGP.
Тут уже интереснее, есть два маршрута по дефолту. Я начал гуглить дальше и узнал что у циски есть балансировка в CEF с учетом портов SRC и DST.
Начал думать как прикрутить такое решение на схему. Есть пара мыслей.
Хотел сделать VRF на 9300 чтобы в него загнать виртуалку и для нее же прописать два маршрута по дефолту, чтобы там cef балансировал по своей схеме cef polarization. Но оказалось, что текущая лицензия на 9300 не поддерживает VRF (Network Essential)
Собрал аналогичный стенд из трех цисок 887 и одного коммутатора, сделал подобную схему но без VRF, на той циске которая на стенде вместо ядра сети, включил ip cef load-sharing algorithm include-ports source destination, создал влан туда подключил виртуалку с веб сервисом, который показывает c какого айпи идет обращение. На двух других цисках сделал нат, пробросил порты. Вобщем все аналогично. Сделал 2 влана типа 2 провайдера, и с них обращался на два айпишника.
Вроде бы это даже начало работать как надо, но в такой схеме 2 маршрута по дефолту будут в глобальной таблице а не в VRF, а этого бы не хотелось делать на ядре сети в боевой схеме. Хотелось бы чисто роут мапами рулить.
Вопросы:
1. Как же все таки в такой схеме с CISCO сделать так чтобы ответ уходил туда откуда он пришел?
2. Реализуемо ли это впринципе через route-map ? я что то не понимаю как надо задать критерий. Ведь сурс адрес извне может быть любым и придти он может с любого интерфейса. А отвечает виртуалка тоже с одного адреса.
3. Можно ли без VRF сделать балансировку для одного влана?
4. И меня всё таки смущает почему почти нигде не пишут про такой кейс и использование балансировки через ip cef. Это не бест-практикс? Как тогда сделать?