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

Раздел для тех, кто начинает знакомиться с 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
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

maximilian писал(а):Заработало вот на таком конфиге

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

/ip route
add distance=1 gateway=62.xxx.xxx.xxx routing-mark=wan2
add distance=1 gateway=10.yyy.yyy.yyy routing-mark=wan1

осталось три вопроса
1) если стоит дистанция 1 на обоих провайдерах, то один из них все равно не активен в плане интернета
2) как заставить работать интернет на втором провайдере для его подсети
3) возможно не по теме, меня в принципе устроит отсутствие "интернета" на втором провайдере, тк запросы извне исправно обрабатываются, за небольшим исключением, сервер на винде все отлично отрабатывает, а вот сервер на дебиан, только при наличии "интернета" (тобишь когда активен второй провайдер).

Прилагаю картинку как примерно должно быть! (Примерно конечно, но логика зато видна)
Изображение

Описание картинки маршрутов + Ответ на вопрос-1:
1) на картинки 4 провайдера промаркированных маршрута. У них дистанция всегда 1, так как маркированный
маршрут - это создания отдельной дополнительной или альтернативной таблицы маршрутизации,
то такие маркированные маршруты не мешают друг другу и они даже при дистанции 1 всегда будут
активными, то бишь чёрными.
Эти маршруты нужны для правильного взаимодействия, а именно для выхода через того
именно провайдера, через который эти пакеты были или ранее получены или сгенерированы
в процессе работы.
1.1) обратите внимание, у меня потом идёт маршрут по-умолчанию (я на нём стаю курсором).
Это действующий активный маршрут по-умолчанию, это означает что всё что явно роутеру
не известно или не определено, любой комп/сервер если явно не описан работать через
другого провайдера, всё по умолчанию уходить на первого провайдера.
Вот тут уже дистанции важны, как первый провайдер "умрёт", уйдём на второго, потом
на четвёртого и лишь потом на третьего (у него самая плохая, то есть дорогая стоимость).
Вот так и у Вас, должно быть как я и ранее писал, 2 маркированных маршрута и
минимум один дефолтный, через который всё будет уходить + работать ДНС и другие
исходящие пакеты с самого микротика (микротик как сетевое устройство тоже хочет шлюз
по умолчанию иметь).

ответ на вопрос-2 Ваш:
2) Интернет на втором канале работает, опять же, при взаимодействии, если пакет будет иметь
маркировку второго канала, он и уйдёт через второй канал.

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

maximilian писал(а):зы мой конфиг на первой странице
зыы маршрут по совету kt72ru немаркированный в 0.0.0.0 есть

Ну нет у Вас ни на первой странице, не сейчас = нет у Вас дефолтного маршрута. Вы утверждаете,
но нет маршрута нет и поэтому у Вас частично и не работает схема.
Не вижу я его (поэтому вверху Ваш код с маршрутами и оставил, чтобы показать, я его
там, маршрута по дефолту не вижу) и не сделали Вы его и в тот раз, как посоветовал kt72ru

Смотрите мой пример, почитайте другие статьи, и старайтесь понять,
а не сделать как Вам удобно/хочется.



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

Vlad-2 Спасибо за информацию, возможно ввел в заблуждение, на первой странице исходный код. Маршрут добавлял позже.

Можете подсказать, а чем плохо мое решение ?


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

maximilian писал(а):Vlad-2 Спасибо за информацию, возможно ввел в заблуждение, на первой странице исходный код. Маршрут добавлял позже.

Главное чтобы он был в рабочей конфигурации
maximilian писал(а):Можете подсказать, а чем плохо мое решение ?

Не скажу что оно плохое, просто оно как-то ограниченно сделано. Не гибко так скажу.
В любом случаи: Вы двух провайдеров используете, каналы есть, так что слово "плохое" тут не уместно.
Всё зависит от видения и от того что надо.

У меня настроено так, что я в таблицы и в маршруты и в манглы не лезу вообще,
я добавляю IP-адрес компа/подсети в тот или иной адрес-лист, а уже каждый
такой адрес-лист привязан к маркировкам, и у меня IP-компьютера оказывается
в том канале, в который адрес-лист я его и засунул.
Мало что это просто и удобно, плюс ещё в том, что даже новички,
не понимающие что и как надо делать, с этим делом, как прописать IP в адрес-в они могут точно.



На работе(ах): 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

Всем доброго времени суток!
Хочется реанимировать эту тему так, как решение вопроса 2 WAN - 2LAN с реально работающим конфигом было найдено ТОЛЬКО на этом форуме.

Но есть несколько "хотелок", которые хочется реализовать с помощью уважаемых форумчан.
Общий конфиг маршрутизатора (x86 Mkrotik v.6.43.3 ) выглядит примерно так:
два статических аплинка и множество локальных подсетей, которые хочется на основе адрес-листов разбросать по аплинкам. И еще одна локальная подсеть в которой находится биллинг и он/его должны видеть все остальные подсети и тоже иметь выход в мир. Ну и как вишенка на верхушке этого пироженка - автоматическое переключение маршрутов при падении одного из аплинков.

В роли подопытного кролика выступает RB750 os v.6.43.7
ether1 - WAN 1
ether2 - WAN 2
ether3 - LAN 1
ether4 - LAN 2
ether5 - LAN billing
За основу были взяты части конфигов товарищей maximilian и kt72ru но продвинулся
я лишь на 30% к желаемому результату. Ну и как говориться - ПАМАГИТЕ!!!
 
/ip pool
add name=pool1 ranges=10.10.10.10-10.10.10.20
add name=pool2 ranges=20.20.20.10-20.20.20.20
/ip dhcp-server
add address-pool=pool1 disabled=no interface=ether3 name=server1
add address-pool=pool2 disabled=no interface=ether4 name=server2
/ip address
add address=192.168.111.2/24 interface=ether1 network=192.168.111.0
add address=192.168.222.2/24 interface=ether2 network=192.168.222.0
add address=10.10.10.1/24 interface=ether3 network=10.10.10.0
add address=20.20.20.1/24 interface=ether4 network=20.20.20.0
add address=30.30.30.2/24 interface=ether5 network=30.30.30.0
/ip dhcp-server network
add address=10.10.10.0/24 gateway=10.10.10.1
add address=20.20.20.0/24 gateway=20.20.20.1
/ip dns
set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4
/ip firewall mangle
add action=mark-connection chain=forward in-interface=ether1 new-connection-mark=in_wan1_for
add action=mark-routing chain=prerouting connection-mark=in_wan1_for new-routing-mark=wan1 src-address=10.10.10.0/24
add action=mark-connection chain=forward in-interface=ether2 new-connection-mark=in_wan2_for
add action=mark-routing chain=prerouting connection-mark=in_wan2_for new-routing-mark=wan2 src-address=20.20.20.0/24
add action=mark-connection chain=input in-interface=ether2 new-connection-mark=in_wan2
add action=mark-connection chain=input in-interface=ether1 new-connection-mark=in_wan1
add action=mark-routing chain=output connection-mark=in_wan2 new-routing-mark=wan2
add action=mark-routing chain=output connection-mark=in_wan1 new-routing-mark=wan1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether2
/ip route
add disabled=yes distance=1 gateway=192.168.111.1 routing-mark=wan1
add distance=1 gateway=192.168.222.1 routing-mark=wan2
add distance=1 gateway=192.168.111.1
/ip route rule
add action=lookup-only-in-table disabled=yes routing-mark=wan1 table=wan1
add action=lookup-only-in-table routing-mark=wan2 table=wan2
add action=lookup-only-in-table disabled=yes src-address=10.10.10.0/24 table=wan1
add action=lookup-only-in-table src-address=20.20.20.0/24 table=wan2


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

ruslan.liskov писал(а): 18 дек 2018, 00:46 два статических аплинка и множество локальных подсетей, которые хочется на основе адрес-листов разбросать по аплинкам.
Так делайте адрес-листы с нужными сетями/диапазонами IP и "заруливайте" их в нужный маршрут!?
(естественно сначала маркируем нужный маршрут, делаем таблицу маршрутизации и уже
нужный адрес-лист(ы) привязываем к этому маршруту).
ruslan.liskov писал(а): 18 дек 2018, 00:46 И еще одна локальная подсеть в которой находится биллинг и он/его должны видеть все остальные подсети и тоже иметь выход в мир.
Ну а с локальными сетями в чём проблема? Хоть 3 хоть 5 сетей, по-умолчанию на роутере сети локальные между собой
смаршрутизированы, если надо между сетями делать ограничения, то ли правилами в таблице маршрутов,
либо файрволом.....
Ну и также потом каждую подсеть описать и в НАТе
ruslan.liskov писал(а): 18 дек 2018, 00:46 Ну и как вишенка на верхушке этого пироженка - автоматическое переключение маршрутов при падении одного из аплинков.
Ну и тут всё просто если у Вас статика (интернет подключается статически, и адресация не меняется).
Делаете рекурсивную маршрутизацию, она отслеживает логически присутствие канала, и нет проблем с переключением.
При динамике сложнее, надо будет скрипты использовать.

P.S.
конфиг толком не смотрел



На работе(ах): 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

Для обладателя двух сертификатов от Mikrotik моя задача, конечно простая а вот я с манглами только вчера столкнулся. Доки по манглам читаю но далеко не все понятно... Признаюсь, конфиг просто содрал с форума без полного понимания процесса :smu:sche_nie: :smu:sche_nie: :du_ma_et:

На существующей машине все сети маскарадятся через один интерфейс и прописаны через адрес лист.
Реализовано вот так:
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
Возникает вопрос - куда запихивать третью подсеть (биллинг)?
И немного не понятно содержание листа LocalNet, понимаю, что туда прописуются локальные подсети. Но у меня все подсети локальные.


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

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% будет точно зависеть от Вас, как Вы всё перенесёте и запустите.
И я Вам показал как управлять (завернуть) разные сети по разным провайдерам, а защиту,ограничения
между сетями, защиту внешнюю я не описывал. Поэтому читайте, анализируйте, ищите, вникайте и запускайте.



На работе(ах): 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

2) Но фраза выше - прозвучала как-то с зацепом, а не слабо ли мне.... :-)
Ни в коем случае! Я реально уважаю людей у которых не закипел мозг при изучении микротика!
Большое спасибо за развернутый ответ. Буду стараться вникнуть в ваш конфиг.


ruslan.liskov
Сообщения: 6
Зарегистрирован: 17 дек 2018, 21:35

:uch_tiv: Что тут сказать! Реально рабочий конфиг, вернее готовый шаблон настройки микротика для работы через двух провайдеров. Ваш пост надо вынести в тему "Готовые решения"!
Огромное спасибо!


ruslan.liskov
Сообщения: 6
Зарегистрирован: 17 дек 2018, 21:35

Чуть не забыл, вы и так сильно помогли, но еще один вопрос.
Т.к. у нас два провайдера, то у каждого провайдера свои днс сервера.
Т.е. нам запросы к днс тоже надо разделять в нужные направления.
Например:
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
Правильно?


Ответить