Микротик и проброс портов в локальную сеть если два провайдера (два шлюза)
Жил да был обычный Микротик, никого не трогал.
Но вот приключилась у него кручинушка.
Появился во втором порту новый провайдер лютый, да с внешним айпишником.
Вот тут то всё и закрутилось.
Имеется два приходящих канала от двух провайдеров с белыми ip адресами.
Требуется пробросить порт 80 до сервера в локальной сети так чтобы он был доступен по любому из каналов.
Суть проблемы заключается в том что шлюз по умолчанию один, пакет сам по себе не пойдёт куда надо, его надо научить ходить правильно и ровно.
Долго парился и наткнулся на правильную идею маркировать всё что движется, а что не движется — двигать и маркировать!
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 я не делаю ибо Вы их можете самостоятельно нагородить как Вам надо.
В таблице маршрутизации имеем основной шлюз 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
вот так должно выглядеть mangle
Обращаю внимание именно на последнюю строку srcnat, тут фишка в том что можно работать без этой строки и получать реальные адреса тех кто обращается к серверу, но у меня на серваке адрес 192.168.55.55 является вторым интерфейсом и при этом вылазят марсианские пакеты
Микротик теперь доступен по любому из приходящих каналов, незабывайте настроить запрещающие правила под свои нужды ибо за вашим микротом живёт злой БОТНЕТ!
Но вот приключилась у него кручинушка.
Появился во втором порту новый провайдер лютый, да с внешним айпишником.
Вот тут то всё и закрутилось.
Имеется два приходящих канала от двух провайдеров с белыми 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 комментарий