Микротик и проброс портов в локальную сеть если два провайдера (два шлюза)

Интернет
Жил да был обычный Микротик, никого не трогал.
Но вот приключилась у него кручинушка.
Появился во втором порту новый провайдер лютый, да с внешним айпишником.
Вот тут то всё и закрутилось.


Имеется два приходящих канала от двух провайдеров с белыми ip адресами.
Требуется пробросить порт 80 до сервера в локальной сети так чтобы он был доступен по любому из каналов.
Суть проблемы заключается в том что шлюз по умолчанию один, пакет сам по себе не пойдёт куда надо, его надо научить ходить правильно и ровно.
Долго парился и наткнулся на правильную идею маркировать всё что движется, а что не движется — двигать и маркировать!

Начнёмс.
Как настраивать микротик с нуля и прописывать айпи адреса я рассказывать не буду а прейду сразу к ROUTE и FIREWALL.

итак что мы имеем?

eth1 — воткнут первый провайдер
eth2 — воткнут второй
192.168.55.x — обычный бридж остальных портов в локальной сети
176.123.160.1 шлюз первого провайдера(например)
217.15.196.1 шлюз второго провайдера(например)
176.123.160.(secret)Real Ip первого провайдера(например !(secret))
217.15.196.(secret)Real Ip второго провайдера(например !(secret))
192.168.55.1 наш микротик и его LAN
192.168.55.55 сервер в локальной сети до которого будем кидать тудасюда пакетосы по порту 80(например)

Никаких запрещающих правил в firewall я не делаю ибо Вы их можете самостоятельно нагородить как Вам надо.

IP ROUTE

В таблице маршрутизации имеем основной шлюз 176.123.160.1 с метрикой 1

далее создаём два шлюза и указываем в них Routing Mark

Dst 0.0.0.0/0 Gw 217.15.196.1 Routing Mark maxnet-isp
Dst 0.0.0.0/0 Gw 176.123.160.1 Routing Mark speedy-isp

Firewall mangle
Чтобы входящий пакет откуда пришёл туда ушёл его надо промаркировать и даже больше скажу, маркировать будем и те пакеты которые попадают в цепочку forward так как речь идёт о пробросе портов а не просто доступ к микротику с двух внешних интерфейсов. Обязательно обратите внимание на параметр passthrough и не забивайте голову микротику.

вот так должно выглядеть mangle

0    chain=input action=mark-connection new-connection-mark=to_speedy passthrough=yes in-interface=ether1 
1    chain=output action=mark-routing new-routing-mark=speedy-isp passthrough=no connection-mark=to_speedy log=no log-prefix="" 
2    chain=input action=mark-connection new-connection-mark=to_maxnet passthrough=yes in-interface=ether2 
3    chain=output action=mark-routing new-routing-mark=maxnet-isp passthrough=no connection-mark=to_maxnet 
4    chain=forward action=mark-connection new-connection-mark=to_speedy-f passthrough=no in-interface=ether1 
5    chain=prerouting action=mark-routing new-routing-mark=speedy-isp connection-mark=to_speedy-f in-interface=192.168.55.x 
6    chain=forward action=mark-connection new-connection-mark=to_maxnet-f passthrough=no in-interface=ether2 
7    chain=prerouting action=mark-routing new-routing-mark=maxnet-isp connection-mark=to_maxnet-f in-interface=192.168.55.x


Firewall NAT

0    chain=srcnat action=masquerade src-address=192.168.55.0/24 log=no log-prefix="" 
1    chain=dstnat action=dst-nat to-addresses=192.168.55.55 to-ports=80 protocol=tcp dst-address=176.123.160.(secret) in-interface=ether1 dst-port=80 log=no log-prefix="" 
2    chain=dstnat action=dst-nat to-addresses=192.168.55.55 to-ports=80 protocol=tcp dst-address=217.15.196.(secret) dst-port=80 log=no log-prefix="" 
3    chain=srcnat action=src-nat to-addresses=192.168.55.1 protocol=tcp dst-address=192.168.55.55 dst-port=80 log=no log-prefix=""


Обращаю внимание именно на последнюю строку srcnat, тут фишка в том что можно работать без этой строки и получать реальные адреса тех кто обращается к серверу, но у меня на серваке адрес 192.168.55.55 является вторым интерфейсом и при этом вылазят марсианские пакеты
A Martian packet is an IP packet seen on the public internet that contains a source or destination address that is reserved for special-use by Internet Assigned Numbers Authority (IANA). On the public Internet, such a packet’s source address is either spoofed, and it cannot actually originate as claimed, or the packet cannot be delivered.
Ну вобщем понятно, от марсиан я избавился.
Микротик теперь доступен по любому из приходящих каналов, незабывайте настроить запрещающие правила под свои нужды ибо за вашим микротом живёт злой БОТНЕТ!
И проброс совершён.

1 комментарий

комментарий был удален
Автор топика запретил добавлять комментарии