Два провайдера

Обсуждение ПО и его настройки
Ответить
Agent Smit
Сообщения: 71
Зарегистрирован: 26 апр 2017, 13:10

У нас есть два провайдера.
Две локальной сети.
LAN1 192.168.0.0/24
LAN2 192.168.1.0/24
LAN1->IPS1
LAN2->IPS2
Реализовано с помощью маркировки трафика
chain=prerouting action=mark-routing new-routing-mark=test1 passthrough=yes src-address=192.168.0.0/24
chain=prerouting action=mark-routing new-routing-mark=test1 passthrough=yes dst-address=192.168.0.0/24
а потом в ip route добавляем :
ip route add gateway=1.1.1.1 routing-mark=test1
ip route add gateway=2.2.2.2

Все нормально работает.
В Интернете встречал подобные инструкции в которых реализовано немного по другому, например добавляют правила в
ip route rule
Теперь добавляем правила маршрутизации:
/ip route rule add dst-address=192.168.0.0/24 action=lookup table=main
/ip route rule add dst-address=192.168.1.0/24 action=lookup table=main
/ip route rule add dst-address=1.1.1.0/30 action=lookup table=main
/ip route rule add dst-address=2.2.2.0/30 action=lookup table=main
/ip route rule add src-address=1.1.1.0/30 action=lookup table=ISP1
/ip route rule add src-address=2.2.2.0/30 action=lookup table=ISP2
/ip route rule add routing-mark=ISP1 action=lookup table=ISP1
/ip route rule add routing-mark=ISP2 action=lookup table=ISP2


У нас в ip route rule ничего не прописано и все работает нормально.
Можете подсказать для чего в ip route rule создавать еще одну таблицу маршрутизации, если и так ip route с параметром routing mark понимает через какого провайдера выходить в Интернет?


Cyr
Сообщения: 8
Зарегистрирован: 09 сен 2017, 14:11
Откуда: Пенза

Задам свой вопрос тут, чтобы не плодить темы.
Настроил балансировку по этой статье http://wiki.specialistoff.net/index.php/ECMP_load_balancing_with_masquerade
Но в https://habrahabr.ru/post/244385/#comment_10172862 встретил мнение что:
Маркировать СОЕДИНЕНИЯ в цепочке INPUT совершенно бесполезно.
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 new-connection-mark=cin_ISP1
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=cin_ISP2
происходит это потому что цепочка input идёт уже после маршрутизации, а значит первый прилетевший пакет уже прошел маршрутизацию и открыл соединение без марки, и всё что происходит дальше в этом соединении так же не будет маркироваться.
Можете проверить сами, открыть Connection list и поссмотреть какая марка навешиваеться на соединения.
Правильно будет вот так:
/ip firewall mangle add action=mark-connection chain=prerouting in-interface=ISP1 new-connection-mark=cin_ISP1
passthrough=no

Кроме того, устно услышал мнение, что вместо input надо ставить forward. Потому, что мне нужно сделать проброс порта 80.
Что вы по этому поводу скажите?


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Можно и одним, а когда и двумя правилами делать. Есть разные подходы.
Ниже привожу пример как у меня сделано.

Код: Выделить всё

/ip firewall mangle
add action=mark-connection chain=input comment="Mark-conn input on ISP1_in" in-interface-list=ls1-WAN1 new-connection-mark=ISP1_in passthrough=no
add action=mark-connection chain=input comment="Mark-conn input on ISP2_in" in-interface-list=ls2-WAN2 new-connection-mark=ISP2_in passthrough=no
add action=mark-connection chain=forward comment="Mark-conn forward on ISP1_in to new-mark ISP1_for" in-interface-list=ls1-WAN1 new-connection-mark=ISP1_for passthrough=no
add action=mark-routing chain=prerouting comment="Mark-rout with mark-conn ISP1_for to route via iface of ISP1" connection-mark=ISP1_for new-routing-mark=ISP1_rout passthrough=no src-address-list=LocalNet
add action=mark-connection chain=forward comment="Mark-conn forward on ISP2_in to new-mark ISP2_for" in-interface-list=ls2-WAN2 new-connection-mark=ISP2_for passthrough=no
add action=mark-routing chain=prerouting comment="Mark-rout with mark-conn ISP2_for to route via iface of ISP2" connection-mark=ISP2_for new-routing-mark=ISP2_rout passthrough=no src-address-list=LocalNet
add action=mark-routing chain=output comment="Mark-rout with mark-conn ISP1_in to route via iface ISP1" connection-mark=ISP1_in new-routing-mark=ISP1_rout passthrough=no
add action=mark-routing chain=output comment="Mark-rout with mark-conn ISP2_in to route via iface ISP2" connection-mark=ISP2_in new-routing-mark=ISP2_rout passthrough=no

На счёт проброса - не вижу проблем, делаете правило проброса, но в нём указываете нужного Вам провайдера, если у провайдера есть стат.адрес внешний,
можете и его указать, чем правило будет более точным, тем оно точно срабатывать будет. Если делать обобщённым, то 80 порт буде доступен с любого провайдера.
Так как маркировка (у меня во всяком случаи) проходит всего и всех снаружи, то такие пробросы работают как они есть, и в них явно указывать через что идти - не надо.
Работает нормально, поверьте.

(Не забудьте отключить WWW службу в микротике, ибо она занимает порт 80, а если она Вам нужна, сместите её скажем на порт 81).



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Cyr
Сообщения: 8
Зарегистрирован: 09 сен 2017, 14:11
Откуда: Пенза

Vlad-2 писал(а):Можно и одним, а когда и двумя правилами делать. Есть разные подходы.
А для чего 2-мя правилами, если можно одним prerouting`ом?
(Не забудьте отключить WWW службу в микротике, ибо она занимает порт 80, а если она Вам нужна, сместите её скажем на порт 81).
Я в сервисах ограничил доступ к 80 порту только с внутренних адресов.


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Cyr писал(а):А для чего 2-мя правилами, если можно одним prerouting`ом?

Ну Вы просили уточнений как правильно, я показал как сделано у меня и работает эта схема.
Одним правилом это слишком тривиально, возможно в домашнем роутере, побыстрому
и в рамках простейших задач, да, пойдёт, но в рамках более тонкой настройки - врядли.
Опять же, надо отталкиваться что мы маркируем, когда маркируем айпи адреса, чтобы потом,
их куда то направлять - тут одним правилом и можно обойтись.
А когда надо маркировать входящий, исходящий и промежуточный трафик, то правильнее
это делать отдельными правилами. Также обычно сразу делают прероутинг на марк-роутинг,
но опять же, не все виды трафика так можно отмаркировать, поэтому тренер на курсах
и предупреждал, что правильнее делать маркировку соединений.

Cyr писал(а):Я в сервисах ограничил доступ к 80 порту только с внутренних адресов.

Ну порт то 80 работает(занят), а по-умолчанию, порт доступен на всех интерфейсах,
зачем упрямствовать, уберите временно веб-службу микротика, сделайте проброс,
а потом уже смотрите как они вместе будут работать.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Cyr
Сообщения: 8
Зарегистрирован: 09 сен 2017, 14:11
Откуда: Пенза

А будет ли работать система, если вообще не маркировать трафик?
Указать только роут ECMP:
/ip route add gateway=91.x.x.x,85.x.x.x
И правила роутинга:
/ip route rule add dst-address=192.168.0.0/24 action=lookup table=main
/ip route rule add src-address=91.x.x.x action=lookup table=ISP1
/ip route rule add src-address=85.x.x.x action=lookup table=ISP2


Ответить