Два провайдера: отказоустойчивость и распределение нагрузки

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

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

16 фев 2017, 15:58

Вроде получилось реализовать схему задачи номер 2.

Что имеем:
Оператор west call (у меня 3 канала) и 1 канал локальная сеть:
ether1 - wc1
ether2 - wc2
ether3 - wc3
ether6 - lan

Что нужно:
Использовать сразу все 3 канала связи для увеличения общей пропускной способности для клиентов lan.

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

/ip firewall mangle
# помечаем пришедшие соединения согласно интерфейсу
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether1 new-connection-mark=conn_wc1
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether2 new-connection-mark=conn_wc2
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether3 new-connection-mark=conn_wc3

# помечаем соедиенния на 80,443,110,25 TCP порты, как относящиеся к wc3 (т.е. веб-серфинг и почта только через wc3). делаем это для того, что бы небыло проблем с куками, паролями и личным кабинетом на разных сайтах.
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local dst-port=80,443,110,25 in-interface=ether6 new-connection-mark=conn_wc3 protocol=tcp

# непосредственно PCC
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=ether6 new-connection-mark=conn_wc1 per-connection-classifier=both-addresses:3/0
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=ether6 new-connection-mark=conn_wc2 per-connection-classifier=both-addresses:3/1
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=ether6 new-connection-mark=conn_wc3 per-connection-classifier=both-addresses:3/2


# назначаем routing mark согласно меткам соединений
add action=mark-routing chain=prerouting connection-mark=conn_wc1 in-interface=ether6 new-routing-mark=rout_wc1
add action=mark-routing chain=prerouting connection-mark=conn_wc2 in-interface=ether6 new-routing-mark=rout_wc2
add action=mark-routing chain=prerouting connection-mark=conn_wc3 in-interface=ether6 new-routing-mark=rout_wc3


# таблица маршрутизации
/ip route
add distance=1 gateway=ether1 routing-mark=rout_wc1
add distance=1 gateway=ether2 routing-mark=rout_wc2
add distance=1 gateway=ether3 routing-mark=rout_wc3
add distance=1 gateway=ether1,ether2,ether3 routing-mark=rout_Mixed

# обязательно должен быть маршрут по-умолчанию без меток, в данном случае ECMP
add distance=1 gateway=ether1,ether2,ether3


p.s. логика интерфейса микротика - это вынос мозга, конечно, для начинающего :-):


Spiller
Сообщения: 14
Зарегистрирован: 16 дек 2016, 10:05

16 фев 2017, 16:18

Всеравно странно. При 3х каналах 50 Мбит максимальная скорость загрузки в торрент-клиенте 11 Мб/с.


eforummikrotik
Сообщения: 0
Зарегистрирован: 26 фев 2017, 19:47

01 мар 2017, 21:12

Spiller писал(а):Всеравно странно. При 3х каналах 50 Мбит максимальная скорость загрузки в торрент-клиенте 11 Мб/с.

Может у вас не 50 а до 50 Мб?) У меня сотка но реально это 20-30.


Mamadasha
Сообщения: 0
Зарегистрирован: 16 мар 2017, 20:43

16 мар 2017, 20:44

eforummikrotik писал(а):
Spiller писал(а):Всеравно странно. При 3х каналах 50 Мбит максимальная скорость загрузки в торрент-клиенте 11 Мб/с.

Может у вас не 50 а до 50 Мб?) У меня сотка но реально это 20-30.


поддерживаю. у меня такая же фигня


Аватара пользователя
Barvinok
Сообщения: 98
Зарегистрирован: 28 фев 2012, 23:21

11 апр 2017, 02:01

И снова здравствуйте!

Прихожу к такому решению поставленной в топике задачи - одновременно использовать три инструмента:
1. check-gateway=ping на основном маршруте;
2. /tool netwatch> хоста в сети провайдера. Это может быть DNS- или DHCP-сервер, маршрутизатор, VoIP-шлюз.. да что угодно. Главное, что бы он был доступен исключительно по каналу вашего провайдера, а через других - нет.
Хороший пример - DNS-сервера Билайна.
И жёстко прописать маршрут к этим серверам через шлюз означенного провайдера.
3. Наблюдать за /interface monitor-traffic на входящем интерфейсе. Если rx-packets-per-second=0, с большой вероятность этот интерфейс не подключен к интернету. Но этот способ только для белого IP, на сером вполне может быть 0 весьма длительное время.

1.

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

check-gateway=ping
без комментариев;

2.

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

/ip firewall mangle
#Мы будем менять distance основного маршрута, не хотелось бы терять с ним связь. Посему сразу делаем так:
add action=mark-connection chain=input in-interface=ether1-DD new-connection-mark=DD_conn
add action=mark-routing chain=output connection-mark=DD_conn new-routing-mark=to_DD

/ip route
#...и так:
add distance=5 gateway=195.208.36.1 routing-mark=to_DD

#Это основной канал
add check-gateway=ping comment="Main Gateway" distance=1 gateway=195.208.36.1

#Это запасной канал
add distance=2 gateway=192.168.112.1

#Жёстко прописываем путь к DNS-серверу провайдера, который будем netwatch
add comment="Route to DNS DD" distance=1 dst-address=194.190.110.242/32 gateway=195.208.36.1

/system script
add name=DD_down source="/ip route set [/ip route find comment=\"Main Gateway\"] distance=3"
add name=DD_up source="/ip route set [/ip route find comment=\"Main Gateway\"] distance=1"

/tool netwatch
add down-script=DD_down host=194.190.110.242 interval=10s timeout=5s up-script=DD_up


3.

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

Если /interface monitor-traffic interface=ether1-DD rx-packets-per-second=0, то /system script run DD_down;
После чего наблюдать, когда rx-packets-per-second>0, тогда /system script run DD_up;
Как это сказать по микротиковски..? :du_ma_et:
Последний раз редактировалось Barvinok 13 май 2017, 11:07, всего редактировалось 1 раз.


mrrc
Сообщения: 102
Зарегистрирован: 03 авг 2016, 22:33

04 май 2017, 23:41

У меня не стоит задача балансировки.
Необходимо отдельную внутреннюю подсеть(ти), обслуживающую wi-fi-ные точки доступа, завернуть на выделенный узкий канал провайдера, зазовем его ether1_WAN_10M.

В /ip route rule добавлены подсети, трафик с которых должен идти по указанному узкому каналу.

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

/ip route rule
add action=lookup-only-in-table src-address=172.16.18.0/24 table=wi-fi_hotel_users
add action=lookup-only-in-table disabled=yes src-address=50.0.0.0/24 table=wi-fi_hotel_user

Прописал маршрут на узкий и основной каналы

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

/ip route
add comment="Wi-Fi hotel route to 10Mbits channel" distance=1 gateway=ether1_WAN_10M routing-mark=wi-fi_hotel_users
add comment="Main WAN route" distance=1 gateway=80.xxx.xxx.xxx

В целом работает, трафик от вай-файных пользователей судя по трасерту и активности интерфейса идет через узкий канал.

Проблема замечена следующая.
Если выдернуть кабель из интерфейса основного канала (на нем пока нет юзеров или "упал" он, например), перестает работать DNS у подключённых wi-fi пользователей. В общем, провайдер пока один заведен, просто разные по пропускной способности каналы, поэтому DNS-адреса провайдера на обоих WAN-подключениях на данный момент одинаковые. Заданы соответствующим образом в IP->DNS.
 
Рассуждения:
Как я понимаю, запросы к DNS-серверам провайдера, указанным в IP -> DNS, отправляются по основному маршруту, и в случае отваливания интерфейса основного канала (когда мы отключаем интерфейс или выдергивает провод основного канала), слать их получается некуда, DNS прекращает работать, отсюда и проблема.

И второй вопрос, существует еще одна сервисная подсетка 50.0.0.0/24, в которой точки доступа и контроллер CAPsMAN внутри общаются между собой. Она сейчас отключена в ip route rule как видно выше, если ее также активировать, точки отваливаются от контроллера.
Собственно как заставить работать пользователей указанной подсети и сервисной подсети полностью через ether1_WAN_10M, включая и работу с DNS серверами провайдера?


kowalsky
Сообщения: 16
Зарегистрирован: 24 июл 2016, 11:29
Откуда: Москва

26 июл 2017, 17:53

Доброго дня.
Подскажите настроил двух провайдеров, распределил как равноценный сбалансированный все работает все устраивает, но на этом же оборудовании подняты sstp и l2tp vpn, после меток и изменении маршрутов отваливается все клиенты, в общем на сколько я понял все что на маршрутизатор в input не проходит. Не могу понят почему может как то нужно пометить эти пакеты?


stsocrat
Сообщения: 0
Зарегистрирован: 28 авг 2017, 14:08

28 авг 2017, 14:18

Привет!
Имею два внешних канала с настройкой через
Mangle - mark connection 1- forward
Mangle - mark connection 2 - forward
Mangle - mark routing 1 - prerouting
Mangle - mark routing 2 - prerouting
После чего написаны Mark Packet-ы, к ним навязана Queue tree.
Внутренних адресов всего 20.
Мучаюсь задачей, как сделать так, чтобы один из внутренних адресов ходил наружу только через один определённый канал, а не поочерёдно, как в основной настройке.
Хелп! Никак не пойму, что именно делать.
Вроде интуиция подсказывает, что надо в разделе NAT в настройке для данного конкретного внутреннего IP что-то сделать, но все попытки приводят к неработоспособности интернета с этого внутреннего IP.
Или может в Mangle ограничения на mark connection 2 / mark routing 2 поставить какие то?


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

28 авг 2017, 14:40

stsocrat писал(а):Вроде интуиция подсказывает, что надо в разделе NAT в настройке для данного конкретного внутреннего IP что-то сделать, но все попытки приводят к неработоспособности интернета с этого внутреннего IP.
Или может в Mangle ограничения на mark connection 2 / mark routing 2 поставить какие то?

Я думаю тут интуиция не права.
Согласно вот такой картинке,

Изображение

сначала проходят стадия как:
мангл-импут, мангл-оутпут и мангл-построутинг и лишь потом там идёт SRC-нат.
Поэтому я думаю, Вы должны нужный Вам IP манглом промаркировать, и уже завернуть в нужный интерфейс,
а когда пакет дойдёт до выхода в глобал через этот интерфейс, то он уже и пронатиться (если нат на данном интерфейсе вообще разрешён).

Могу и ошибаться, но по логике вроде так.



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

25 сен 2017, 17:53

Ребят, помогите. Надо настроить двух провайдеров и создать две независимые сети. Одна сеть внутренняя для сотрудников, другая для гостей. Если падает интернет сотрудников, то он переходит на резервный канал для гостей. Будет такая железка MikroTik 125-246-1S-2HnD-IN


Закрыто