Два провайдера - две сети непересекающихся

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

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Я рад и испытываю душевную радость, что мои труды были
приняты, услышаны/увидены и реально пригодились и
особенно главное = что заработало.
Ура...
ruslan.liskov писал(а): 26 дек 2018, 01:41 Чуть не забыл, вы и так сильно помогли, но еще один вопрос.
Т.к. у нас два провайдера, то у каждого провайдера свои днс сервера.
Т.е. нам запросы к днс тоже надо разделять в нужные направления.
Например:
ISP1_DNS 1.1.1.1 ISp2_DNS 2.2.2.2
/ip route
add distance=1 dst-address=1.1.1.1/32 gateway=ISP1
add distance=1 dst-address=2.2.2.2/32 gateway=ISP2
Правильно?
На счёт ДНС = тут всё сложнее...
1) если мы ДНС-адреса задаём у клиента (то есть компу прописываем ДНС_прова1), и комп
этот привязан к провайдеру1 = тут всё гладко, юзер шлёт запрос на днс своего провайдера.
2) а если мы этот комп резко решили перекинуть в канал2 (второй провайдер), а ДНС у него прописан
первого провайдера = увы, идти к клиенту и менять ДНС = как-то не автоматизированно.
3) (примерно как у меня сделано) = у меня в офисе стоит внутри полноценный маленький ДНС-сервер,
его я указываю всем клиентам. Поэтому адресация его постоянна.
На нём есть 1-2 зоны которые отдаются только с того провайдера на котором эти зоны сделаны(подняты),
там я явно описываю что если нужна такая зона, то явно за ней "нырнуть" на ДНС-провайдера такова.
(там чуть сложнее конечно, но примерно так).

А всё сложно потому что = нам надо знать какой клиент(комп) сидит в каком канале(на каком провайдере)
в каждый момент времени, и зная это, перехватывать его ДНС запросы, и зная какой провайдер,
лишь на тот ДНС-провайдера и перенаправлять запросы.
А если ДНС-запросы шлют на роутер все компы сети, а уже роутер делает запросы от себя, то опять же,
опять всё не просто.

Подумайте, может тоже придумаете совокупность каких-то этих вариантов сообща и будет тоже хорошим
решением. За счёт использования мною view функции в DNS'е, за счёт того что у меня есть внешние домены
(мы их делегируем, то есть у меня есть свои публичные ДНСы) то мне проще было сделать как я описал
в 3-м пункте.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
ruslan.liskov
Сообщения: 6
Зарегистрирован: 17 дек 2018, 21:35

Если я вас правильно понимаю - оставить все как есть.
Т.е. у меня на корневом микротике в ip/dns прописаны адреса днс всех аплинков и стоит галочка на allow remote request. Ну и в принципе то все работает. Единственное переживаю, чтоб это не сказалось на качестве интернета.


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

ruslan.liskov писал(а): 27 дек 2018, 11:55 Если я вас правильно понимаю - оставить все как есть.
Увы, я такова не говорил. Я лишь описал нюансы и вариации тех или иных решений.
И в том числе описал решение с промежуточным сервером.
ruslan.liskov писал(а): 27 дек 2018, 11:55 Т.е. у меня на корневом микротике в ip/dns прописаны адреса днс всех аплинков и стоит галочка на allow remote request. Ну и в принципе то все работает. Единственное переживаю, чтоб это не сказалось на качестве интернета.
Тут всё от провайдеров зависит, при ДНС-запросе скажем на ДНС-прова1 с канала провайдера2 = может пустить, а может в больше
части не пустить (не выдать результат). И технически Интернет есть, а формально могут быть проблемы с резолвом.
Пропишите на всякий случай туда же и Яндекс-ДНСы.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
georghacker
Сообщения: 41
Зарегистрирован: 24 янв 2019, 07:34

Vlad-2 писал(а): 18 дек 2018, 16:08
ruslan.liskov писал(а): 18 дек 2018, 15:21 Для обладателя двух сертификатов от Mikrotik моя задача, конечно простая а вот я с манглами только вчера столкнулся. Доки по манглам читаю но далеко не все понятно... Признаюсь, конфиг просто содрал с форума без полного понимания процесса :smu:sche_nie: :smu:sche_nie: :du_ma_et:
1) Вы не правы, задача любая всегда сложная и хочется её решить красиво и профессионально (внутри себя как бы)
2) Но фраза выше - прозвучала как-то с зацепом, а не слабо ли мне.... :-)
3) Я ни раз делился конфигами и их описанием, отобрали мои бы сообщения, с выборкой
по двум-трём провайдерам и так далее.... думаю тоже было бы интересно.
4) Рад что признаётесь что конфиг сборная атомная солянка.
ruslan.liskov писал(а): 18 дек 2018, 15:21 На существующей машине все сети маскарадятся через один интерфейс и прописаны через адрес лист.
Реализовано вот так:
action=masquerade chain=srcnat dst-address=!172.31.0.0/16 out-interface=ether1 src-address-list=NAT
По логике надо сделать второй адрес лист NAT2. Пораспихивать в них подсети и создать еще одно правило:
action=masquerade chain=srcnat dst-address=!172.31.0.0/16 out-interface=ether2 src-address-list=NAT1
Возникает вопрос - куда запихивать третью подсеть (биллинг)?
1) делать НАТ по части отрицания = не нравиться мне этот метод, и он не всегда подходит
2) и я немного поленюсь, я не хочу вникать какие сети и так далее у Вас, я сделаю чуть проще,
я покажу на моих примерах, Вы это усвоите, перенесёте на свои сети, и всё заработает).

1) надо сделать конфигурацию не только рабочую, но и понятную.
Поэтому я использую несколько переменных
а) LocalNet = общая переменная, которая содержит все все Ваши локальные сети.
То есть явно надо описать все сети, пусть даже не пересекающие, но работающие в Интернете
через этот роутер
б) Потом для удобства Вы можете сделать пару адрес-листов с описанием конкретных подсетей,
чтобы уже эти явные адрес-листы явно в одно-двух правилах использовать
в) также я использую адрес-листы для интерфейсов, в частности ls1-WAN1 = это первый провайдер,
ls2-WAN2 = второй, и ls3-WAN3 = третий, удобство листов в том, что если у Вас меняется тип подключения
провайдеров, трогать файрвол(манглы) не надо, а также удобно делиться им, я вот взял и Вам откопировал.
Ваша задача привязать к ls1-WAN1 = интерфейс первого провайдера, к ls2-WAN2 интерфейс второго провайдера,
и так далее.
г) также я использую адрес-лист to_ISP1 (в этот адрес лист я помещаю те компы/сети) которые я явно хочу завернуть
на первого провайдера, соответственно в to_ISP2 - те кто пойдёт на второго и так далее.
(маленький лайфхак = тот провайдер который у Вас будет по-умолчанию, скажем провайдер 1, то для
такова провайдера можно явно адрес-лист to_ISP1 не заполнять, всё равно итак туда пойдут те кто явно
не описан)

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

/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=input comment="Mark-conn input on ISP3_in" in-interface-list=ls3-WAN3 new-connection-mark=ISP3_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-connection chain=forward comment="Mark-conn forward on ISP3_in to new-mark ISP3_for" in-interface-list=ls3-WAN3 new-connection-mark=ISP3_for passthrough=no
add action=mark-routing chain=prerouting comment="Mark-rout with mark-conn ISP3_for to route via iface of ISP3" connection-mark=ISP3_for new-routing-mark=ISP3_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
add action=mark-routing chain=output comment="Mark-rout with mark-conn ISP3_in to route via iface ISP3" connection-mark=ISP3_in new-routing-mark=ISP3_rout passthrough=no
add action=mark-routing chain=prerouting comment="GO-to-ISP1 (via AddrList)" connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=ISP1_rout passthrough=no src-address-list=to_ISP1
add action=mark-routing chain=prerouting comment="GO-to-ISP2 (via AddrList)" connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=ISP2_rout passthrough=no src-address-list=to_ISP2
add action=mark-routing chain=prerouting comment="GO-to-ISP3 (via AddrList)" connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=ISP3_rout passthrough=no src-address-list=to_ISP3
д) маршруты:
Первые три = смотрят на каждого провайдера, то есть что пришло от первого провайдера, туда и уйдёт.
Обращаю внимание = первые три маршрута = с указанием таблицы маршрутизации, ЭТО важно
НО важен и последний, обычный (дефолтный) маршрут = он нужен и роутеру, и у меня это
первый провайдер. Без дефолтного маршрута много чего не взлетит.
Так как адреса не могу показать, а понимание у Вас должно быть, вот ещё аспект:
77.xx.xx.xxP - буква Р в примере - это адрес провайдерского шлюза
77.xx.xx.xА - буква А в примере - это адрес самого роутера (внешний)

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

/ip route
add check-gateway=ping comment="ISP1_rout (1)" distance=1 gateway=77.xx.xx.xxP pref-src=77.xx.xx.xA routing-mark=ISP1_rout
add check-gateway=ping comment="ISP2_rout (2)" distance=1 gateway=195.yy.yy.yyP pref-src=195.yy.yy.yA routing-mark=ISP2_rout
add check-gateway=ping comment="ISP3_rout (3)" distance=1 gateway=78.zz.zz.zzP pref-src=78.zz.zz.zA routing-mark=ISP3_rout
add check-gateway=ping comment="Default GW" distance=1 gateway=77.xx.xx.xxP pref-src=77.xx.xx.xxA
е) последнее - это НАТ,
тут у меня просто, можете сделать одно правило НАТ, и применить ко всем провайдерам,
тут я использую общий адрес лист всех внешних провайдеров: это list1-WAN-iface
Первым правилом я делаю адрес-лист кому Интернет нельзя, (список LNAT-DENY), а потом выпускаю.
(конфиги я Вам формирую с разных роутеров, поэтому на этом роутере это так сделано)

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

/ip firewall nat
add action=accept chain=srcnat log=yes log-prefix="NAT-closed=> " out-interface-list=list1-WAN-iface src-address-list=LNAT-DENY
add action=masquerade chain=srcnat out-interface-list=list1-WAN-iface src-address-list=LNAT-WiFi
NOTE
Большая просьба: не кричать что не работает, а 10-ть раз проверить всё, убедиться в правильности,
всё что выше = готовая шпаргалка, но с учётом тонкостей провайдерских, тонкостей подключения,
10-20% будет точно зависеть от Вас, как Вы всё перенесёте и запустите.
И я Вам показал как управлять (завернуть) разные сети по разным провайдерам, а защиту,ограничения
между сетями, защиту внешнюю я не описывал. Поэтому читайте, анализируйте, ищите, вникайте и запускайте.
Уважаемый Влад. Есть ли возможность выложить готовый конф? Чтоб я залил и только адреса поменял на свои. Я понимаю, что мне надо учиться, вникать во всё.... Я много чего сделал в своей сети на базовых знаниях, но маркировки, хоть убейся не пойму как работают. У меня два оператора, две сети абсолютно не пересекающиеся. Эта задача когда-то была мне поставлена, но из-за нехватки знаний я просто отмазался от неё. Но с тех пор я тщетно пытаюсь понять как оно работает. Возможно готовый конф подскажет.


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

georghacker писал(а): 24 июл 2019, 13:58 Уважаемый Влад. Есть ли возможность выложить готовый конф? Чтоб я залил и только адреса поменял на свои.
Так понимаете в чём то суть:

1) я логику маркировки сжал, плюс в правилах использовал адрес-листы интерфейсов,
то есть я готовые правила маркировки взял скопировал (с работающего роутера) и вставил сюда.
То есть как раз Ваша задача просто привязать что переменная ls1-WAN1 = это у
Вас интерфейс провайдера1 и ls2-WAN2 = это какой-то интерфейс провайдера 2
Я за Вас это сделать на Вашем роутере не смогу!

2) Опять же, таблица маршрутов, я там тоже для примера лишь задал переменные для наглядности описания, Ваша задача их скопировать, поменяв их на свои, или сделать эти маршруты с указанием уже своих данных, полученных от провайдера.
Нужно просто задать маршруты с указанием Ваших данных и Ваших правильных активных интерфейсов.
georghacker писал(а): 24 июл 2019, 13:58 Я понимаю, что мне надо учиться, вникать во всё.... Я много чего сделал в своей сети на базовых знаниях, но маркировки, хоть убейся не пойму как работают. У меня два оператора, две сети абсолютно не пересекающиеся.
У Вас два канала. Задача простая, принять трафик на первом канале, его пометить,
пометить транзитный трафик, и уже обратные пакеты для этого канала вернуть
туда, куда надо (то есть в канал/в интерфейс) первого провайдера.
И всё такое повторить для каналов N+1
Это я упрощённо.
И в моём конфиге есть ещё 2 правила (для 2х каналов), которые позволяют явно задавать
кого/или какую сеть/подсеть/отдельные адреса в какой канал направлять.
Вот и всё.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
4fatal
Сообщения: 4
Зарегистрирован: 21 май 2020, 02:17

Vlad-2 Здравствуйте. Сделал по вашему мануалу, все работает как требуется. Но столкнулся с проблемой, микротик ни в какую не хочет отправлять почту( . Хотя пинги до smtp шлюза идут. С локальных сетей за шлюзом все отправляется без проблем. Может помочь в решении проблемы?


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

4fatal писал(а): 21 май 2020, 02:22 Vlad-2 Здравствуйте. Сделал по вашему мануалу, все работает как требуется. Но столкнулся с проблемой, микротик ни в какую не хочет отправлять почту( . Хотя пинги до smtp шлюза идут. С локальных сетей за шлюзом все отправляется без проблем. Может помочь в решении проблемы?
Ну к сожалению я не волшебник.

Надо Вам проверить:
1) если пинг есть до SMTP - есть связь логическая

2) проверьте что у Вас с файрволом на микротике?
2.1) исходящие соединения не блокируете

3) у микротика много интерфейсов, при отправке пакета на SMTP,
с какова адреса он это делает?
3.1) этот адрес с какова провайдера идёт?
3.2) маркировка правильно для этого адреса сделана?
3.3) правила в Мангле, да и как в любой части файрвола - порядок правил важен

4) проверить НАТ для данного направления (канала)

5) в момент отправки письма, в закладке Коннекшионс (файрвол),
попробуйте найти свою эту сессию. Может значения что-то подскажут.

Общий совет: микротик то же клиентское устройство (как компьютер) и
при обращении на какой-то узёл, оно будет инициировано с какова-то адреса,
найти эту инициацию, увидеть с какова адреса, дать для этого адреса доступ
и прочее..



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
4fatal
Сообщения: 4
Зарегистрирован: 21 май 2020, 02:17

Vlad-2 писал(а): 21 май 2020, 07:33 Ну к сожалению я не волшебник.
На это я даже не претендую))))
1) если пинг есть до SMTP - есть связь логическая
Да пинг есть с каждого провайдера
2) проверьте что у Вас с файрволом на микротике?
2.1) исходящие соединения не блокируете
В не понятных ситуация я первое проверяю файервол, отключаю запрещающие правила. Не помогает

3) у микротика много интерфейсов, при отправке пакета на SMTP,
с какова адреса он это делает?
3.1) этот адрес с какова провайдера идёт?
С внешнего адреса первого провайдера
3.2) маркировка правильно для этого адреса сделана?
3.3) правила в Мангле, да и как в любой части файрвола - порядок правил важен
Полностью по вашей схеме. Добавил манглы для hairpin nat
4) проверить НАТ для данного направления (канала)
Не совсем понимаю как
5) в момент отправки письма, в закладке Коннекшионс (файрвол),
попробуйте найти свою эту сессию. Может значения что-то подскажут.
Сессия есть вида:
Изображение

(пол поста оформили, пол поста оставили как есть, не понятно где мои сообщения,
где Ваши ответы, так не делается, пришлось за Вами исправлять).


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

Попробуйте сделать так,
чтобы отправка сообщения шла не с внешнего адреса,
а с локального, и пройдя такой запрос, локальный адрес правильно
пройдёт все этапы, отНАТиться, и выйдет правильно.

Мне кажется что с этим проблема.
(Вы же можете почту отправлять с компьютера так же через первого провайдера?)
Если ДА - проблема/конфликт что инициация сессии делается как-то не так,
поэтому и дал совет, попробовать инициацию письма сделать на роутере
с локального адреса.
(также почему регулярно прошу с компа делать трассировки, потому
что когда на роутере куча интерфейсов, не всегда понятно откуда и куда оно пойдёт),
а с компьютера просто....он инициирует с себя пакет с заранее созданным SRC адресом,
и тут одна цепочка лишь...



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
4fatal
Сообщения: 4
Зарегистрирован: 21 май 2020, 02:17

Vlad-2 писал(а): 22 май 2020, 18:42 Попробуйте сделать так,
чтобы отправка сообщения шла не с внешнего адреса,
а с локального
Вот это я и не понимаю, каким механизмом заставить микротик работать с локального адреса(


Ответить