@alexpebody
IT - lifestyle

Mikrotik NAT -> ISP1 ISP2 распределение?

Доброго дня. Прошу помощи? Есть простая схема:

623493b1da09c501790828.png

В LAN есть ПК пусть будет 10.1.1.10/24 на нем какой то сервис на порту 80 пусть будет просто веб открывающий картинку, никаких SSL 443 HTTPS нет, предположим просто 80й порт и все на этом. Через МТ (Микротик) прокинут порт наружу 8001 на адрес 10.1.1.10/24 на внутренний 80. через netmap либо dst-nat в action и так и так пробовал, правило Firewall Forward 1е все для всех разрешено.

Проблема: Т.к. 2 провайдера и соответственно два нулевых маршрута 0.0.0.0/0 с разными дистансами, не будем вдаваться сейчас в подробности рекурсии и резевации и пр... Пусть будет просто ISP1 = dis1 и ISP2 = dis2, по дефолту все идет через ISP1 и когда мы заходим по внешке на адрес провайдера и порт 8001 мы успешно получаем картинку с 80 порта ПК, но если мы пойдем через внешку ISP2, то мы не получим картинку, тк отправка в нат через ISP2, а возврат с ISP1, забыл уточнить, что "маскарады" разделены также на src ISP1 и src ISP2.

Вопрос: Как сделать, чтобы и с ISP1 и с ISP2 запрос по 8001 порту отдавался? Понятно что нужен Mangle на уровне Preroute, на текущий момент сделано только по Input Mark и Output Mark, чтобы пинговались с обоих ISP, а также к самому МТ можно было ходить с обоих ISP, но как бы я не делал тоже самое с PREROUTE ISP1 -> OUT ISP1 и добавляя маршруты 0.0.0.0/0 c этими марками, толку 0! Всю голову сломал, честно нет сил уже! Прошу помощи.

з.ы. Информации по Failover Balancing и прочие статьи перечитал пачками, но везде балансировка, а мне нужно чтобы и с одного и с другого провайдера можно было делать запрос по порту и отдача шла именно через него.

ЗАРАНЕЕ СПАСИБО!
  • Вопрос задан
  • 343 просмотра
Решения вопроса 2
karabanov
@karabanov
Системный администратор
Мультиван и маршрутизация на Mikrotik RouterOS - тут на все случаи жизни конечно написано, но всё делать необязательно, достаточно промаркировать трафик.
Ответ написан
@alexpebody Автор вопроса
IT - lifestyle
Исходя из схемы, запрос 8001 порта извне идет INPUT INTERFACE -> DST-NAT -> ROUTING DECISION -> MANGLE FORWARDING -> FILTER FORWARD -> MANGLE POSTROUTING -> OUTPUT INTERFACE

По сути нам надо поймать и сделать марку ISP1 и ISP2 на MANGLE PREROUTING и "сказать" что ROUTE OUTPUT будет через ISP1 и также через ISP2 соответветственно, НО ЭТО НЕ РАБОТАЕТ! (

Я делал маркировку прероута по входу чуерез ISP1 и говорил ROUTE OUT через ISP1 и также для ISP2, но это не работает... Причем в FIREWALL CONNECTION пакем видно что уходит через нужную марку, но при этом в браузере - TIMEOUT, зато как только мы меняем дефолт провайдера - меняя дистансы, все тут же уходит с ISP2.

62349f4c5a152625367902.jpeg

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

1. Метим входящие соединения от каждого из провайдеров
/ip firewall mangle add action=mark-connection chain=prerouting \
comment="Connmark in from ISP1" connection-mark=no-mark in-interface=ether1 \
new-connection-mark=conn_isp1 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting \
comment="Connmark in from ISP2" connection-mark=no-mark in-interface=ether2 \
new-connection-mark=conn_isp2 passthrough=no

2. Направляем ответный транзитный трафик по соответствующим таблицам маршрутизации
/ip firewall mangle add action=mark-routing chain=prerouting \
comment="Routemark transit out via ISP1" connection-mark=conn_isp1 \
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting \
comment="Routemark transit out via ISP2" connection-mark=conn_isp2 \
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp2 passthrough=no

3. Направляем ответный локальный трафик по соответствующим таблицам маршрутизации
/ip firewall mangle add action=mark-routing chain=output \
comment="Routemark local out via ISP1" connection-mark=conn_isp1 \
dst-address-type=!local new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=output \
comment="Routemark local out via ISP2" connection-mark=conn_isp2 \
dst-address-type=!local new-routing-mark=to_isp2 passthrough=no
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Drno
Вам надо из вне попадать? из из локалки по внешнему IP ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы