q-q
@q-q

Использование второго ISP для проброса за нат Микротик?

Снова здравствуйте. Спасибо всем кто помог с прошлым вопросом.
Сейчас возник новый вопрос.
Итак. Есть локальная сеть (например 1.1.1.1) и два провайдера (например 10.10.10.10 и 20.20.20)
В локальной сети есть хост для которого нужно транслировать за нат 443 и 80 порт. Всё бы ничего, но 443 порт используется под sstp.
Вопрос. Можно ли использовать белый адрес второго провайдера для этой цели?
Если да, то подскажите как?
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
@Grustnui
Уважаемый q-q. Нехорошо так говорить, но, пожалуйста подучите мат часть. И экспериментируйте не на своём офисе, а на тестовой среде:)

Я конечно могу ошибаться, но, по сути, вы сделали round robin между 2мя шлюзами. Причем очень неудачным образом. У вас пакеты в случайном порядке будут бегать через разные шлюзы без учета установленных соединений. Что получилось дальше: изначально, к примеру, соединение с google.com прилетело с ip 10.10.10.10, а следующий пакет с ушел с ip 20.20.20.20, от чего гугл слегка прифигел. Отсюда и лаги интернета. Верните как было :)

По теме как решить Ваш вопрос.
Чтобы мы лучше понимали друг друга.
1) Пусть IP от основного провайдера, который используется для SSTP 10.10.10.10
2) Для проброса портов мы хотим использовать второй провайдер: 20.20.20.20
3) ip адрес железяки в локалке к которой хотим пробрасывать порты: 1.1.1.2

Первая часть - очевидная пробрасываем все что приходит например на локальный ip:

/ip firewall nat
add action=dst-nat chain=dstnat dst-address=20.20.20.20 dst-port=80 protocol=\
tcp to-addresses=1.1.1.2 to-ports=80
add action=dst-nat chain=dstnat dst-address=20.20.20.20 dst-port=443 protocol=\
tcp to-addresses=1.1.1.2 to-ports=443

Но внезапно не работает :) Почему, да потому, что у вас получается так, что клиент посылает запрос на ip 20.20.20.20, а ответ приходит с ip 10.10.10.10 и клиент его просто отбрасывает, ибо у 10.10.10.10 он ничего не спрашивал. Другими словами наша задача сделать так, чтобы ответы от сервера тоже уходили с ip 20.20.20.20, но тут мы сталкиваемся со следующей проблемой, роутер по умолчанию не смотрит на адрес источника, когда принимает решение о маршрутизации пакета он смотрит только на адрес назначения!. Для решения этой проблемы придумана такая штука как Policy Based Routing. В микротике его можно реализовать кучей способов. Наиболее гибгий с использованием Mangle. Наиболее простой с использованием routing rules.

Для начала нам надо создать 2ю таблицу маршрутизации, назовём её ""2nd ISP" а в ней маршрут по умолчанию где шлюз 20.20.20.20 является основным, делается это предельно просто:

/ip route add distance=1 gateway=20.20.20.20 routing-mark="2nd ISP"

Теперь нам надо объяснить микротику, что трафик от условного веб сервера нам нужно пустить именно по этой таблице маршрутизации. Делается это с помощью routing rules.

/ip route rule add dst-address=0.0.0.0/0 src-address=1.1.1.2/32 table="2nd ISP"

Теперь оно должно прекрасно работать снаружи. Отдельно обращаю Ваше внимание, что я не знаю всей вашей топологии и использование влоб тех скриптов, что я написал может привести к тому что у вас что-то отвалится. Например что 1.1.1.2 не будет доступен из второго офиса. Также советую обратить внимание на статью https://habr.com/post/313342/ там немного другой случай, но теоретическая база одна :)

P.S. Если будут вопросы, готов ответить на них в Telegram
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
q-q
@q-q Автор вопроса
/ip route
add distance=1 gateway=\
10.10.10.10,20.20.20.20
Вроде получилось. Но появились проблемы с интернетом. Стал мягко говоря лагать.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы