Два провайдера два роутера одна сеть

Сообщения без ответов | Активные темы

Автор Сообщение

Заголовок сообщения: Два провайдера и два роутера в одной сети

СообщениеДобавлено: Вт янв 12, 2010 16:11 

Не в сети



Зарегистрирован: Вт янв 12, 2010 12:17
Сообщений: 4

Дано: DI-604, DI-524, три компа и два ноута с вайфаем (везде винда) + 2 провайдера (PPTP и PPoE).

Вопрос: как объединить все это в одну сеть чтобы не было конфликта между провайдерами? Балансировка трафика не требуется, но необходимо удобное переключение с каждой машины между двумя провайдерами.

По идее, требуется прописать какие-то правила, но какие именно чтобы трафик не перетекал из одного роутера через другой и на внешку?

Задача минимум — одна рабочая группа для всех компов (для обмена файлами). Знаю о существовании соответствующих устройств, но пока хотелось бы обойтись имеющимся железом.

Вернуться наверх

Профиль  

AndreTM

Заголовок сообщения:

СообщениеДобавлено: Ср янв 13, 2010 06:27 

Не в сети



Зарегистрирован: Чт апр 20, 2006 04:01
Сообщений: 5326
Откуда: Белозерск

Поподробнее, что требуется (можно в личку).

А вообще, для этого существуют метрики протокола TCP/IP.

И изучайте возможности netsh (раз у вас Win).

_________________
(tm) DWL-2100AP*, DIR-3xx/6xx*, DSL-2xx0*, ANT24-xxxx* | РТ

Вернуться наверх

Профиль  

devil44

Заголовок сообщения:

СообщениеДобавлено: Ср янв 13, 2010 10:26 

Не в сети



Зарегистрирован: Вт янв 12, 2010 12:17
Сообщений: 4

Главный вопрос:

Если в две сетевые карты компа воткнуть патчкорды от двух роутеров, подключенных каждый к своему провайдеру, то обмен трафиком между этими провайдерами будет или нет?

Если НЕТ — то и проблем нет. Если БУДЕТ — тогда таки есть проблема.

Задачу попробую объяснить на пальцах, может станет понятней.

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

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

Главная проблема — как не допустить обмена трафиком между провайдерами (от этого все предостерегают).

PS: Сори за много букв, не знаю как сократить.

Вернуться наверх

Профиль  

sse

Заголовок сообщения:

СообщениеДобавлено: Ср янв 13, 2010 13:12 

Не в сети



Зарегистрирован: Чт ноя 01, 2007 22:04
Сообщений: 17
Откуда: Армавир

Вернуться наверх

Профиль  

danilovav

Заголовок сообщения:

СообщениеДобавлено: Ср янв 13, 2010 20:26 

Не в сети



Зарегистрирован: Чт дек 07, 2006 15:42
Сообщений: 8502
Откуда: RareSoftware.ru

Если надо продолжать использовать оба роутера (каждые клиенты — свой), то вам надо

1) Сделать одну сеть (например, 192.168.1.х) на компьютерах и роутерах, но разные адреса у роутеров (и соответственно компьютеров)

2) Прописать все настройки IP вручную (с учетом у кого какой шлюз) и отключить на обоих девайсах DHCP

3) Соединить сети (роутеры) обычным патчкордом

По последнему вопросу — обмена, если не настроить, не будет. Только два шлюза не прописывайте.

_________________
Хотите хороший девайс? D-Link DFL!

Хотите считать с него трафик?

http://www.raresoftware.ru/products/lan/dfltc

Изображение

Вернуться наверх

Профиль  

devil44

Заголовок сообщения:

СообщениеДобавлено: Чт янв 14, 2010 08:14 

Не в сети



Зарегистрирован: Вт янв 12, 2010 12:17
Сообщений: 4

Цитата danilovav:

Цитата:

Если надо продолжать использовать оба роутера (каждые клиенты — свой), то вам надо
1) Сделать одну сеть (например, 192.168.1.х) на компьютерах и роутерах, но разные адреса у роутеров (и соответственно компьютеров)
2) Прописать все настройки IP вручную (с учетом у кого какой шлюз) и отключить на обоих девайсах DHCP
3) Соединить сети (роутеры) обычным патчкордом

По последнему вопросу — обмена, если не настроить, не будет. Только два шлюза не прописывайте.

Если не прописывать маршрут между роутерами, то каким образом комп достучится не до того роутера, к которому он физически подключен? А если прописывать — как разрешить трафик только для раб.станций, но не для обмена инет-трафиком?

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

Просто все соединить, настроить согласно своим соображениям и посмотреть что из этого выйдет пока не позволяет природная осторожнось.

Вернуться наверх

Профиль  

danilovav

Заголовок сообщения:

СообщениеДобавлено: Чт янв 14, 2010 23:22 

Не в сети



Зарегистрирован: Чт дек 07, 2006 15:42
Сообщений: 8502
Откуда: RareSoftware.ru

Если все так плохо (в плане понимания), то для начала приведите внутреннюю адресацию на обоих роутерах, настройки компьютеров (автоматом или вручную).

_________________
Хотите хороший девайс? D-Link DFL!

Хотите считать с него трафик?

http://www.raresoftware.ru/products/lan/dfltc

Изображение

Вернуться наверх

Профиль  

YuriAM

Заголовок сообщения:

СообщениеДобавлено: Пт янв 15, 2010 01:10 

Не в сети



Зарегистрирован: Вт июл 10, 2007 12:42
Сообщений: 7188
Откуда: Екатеринбург

devil44 писал(а):

Просто все соединить, настроить согласно своим соображениям и посмотреть что из этого выйдет пока не позволяет природная осторожнось.

Главное — не втыкать хвосты от провайдеров в один общий коммутатор. А втыкать в WAN порты разных рутеров или на разные сетевые карты в один компьютер почти 100% безопасно. Почти — потому что вам надо будет еще неплохо постараться, чтобы провайдеры, воткнутые в разные сетевые карты одного компа, смогли обмениваться трафиком.

Лучше изучайте основы сетей или привлеките специалиста.

_________________
6 x DFL-210, 2 x DFL-800. Для DFL-210/260/800/860 лучшая прошивка 2.27.08.03 (for WW). СКАЧАТЬ.
Совет: Не используйте в IP- и Routing-правилах сочетание any/all-nets нигде, кроме временных правил. Иначе возможны бреши в безопасности и несрабатывание последующих правил.

Вернуться наверх

Профиль  

devil44

Заголовок сообщения:

СообщениеДобавлено: Пт янв 15, 2010 09:50 

Не в сети



Зарегистрирован: Вт янв 12, 2010 12:17
Сообщений: 4

Цитата:

Ответ:Если все так плохо (в плане понимания), то для начала приведите внутреннюю адресацию на обоих роутерах, настройки компьютеров (автоматом или вручную).

Поскольку сеть всего из пяти машин и двух роутеров, то топология и адресация перестраивается без проблем, а то как оно работает сейчас вообще не имеет значения.

Цитата:

Лучше изучайте основы сетей или привлеките специалиста.

Физически кого-то привлечь не удастся, делать все придется своими руками, а вот насчет учить основы я только за, но подскажите какому разделу уделить особое внимание.

Вернуться наверх

Профиль  

YuriAM

Заголовок сообщения:

СообщениеДобавлено: Пт янв 15, 2010 10:49 

Не в сети



Зарегистрирован: Вт июл 10, 2007 12:42
Сообщений: 7188
Откуда: Екатеринбург

devil44 писал(а):

Физически кого-то привлечь не удастся, делать все придется своими руками,

Прискорбно.

devil44 писал(а):

Цитата:

Лучше изучайте основы сетей или привлеките специалиста.

… а вот насчет учить основы я только за, но подскажите какому разделу уделить особое внимание.

Принципы работы по протоколу TCP/IP. Основы принипов работы интернет-шлюзов (бюджетных маршрутизаторов).

Когда то было неплохое пособие для начинающих на IXBT.com или его форуме.

_________________
6 x DFL-210, 2 x DFL-800. Для DFL-210/260/800/860 лучшая прошивка 2.27.08.03 (for WW). СКАЧАТЬ.
Совет: Не используйте в IP- и Routing-правилах сочетание any/all-nets нигде, кроме временных правил. Иначе возможны бреши в безопасности и несрабатывание последующих правил.

Вернуться наверх

Профиль  

tobedimas

Заголовок сообщения:

СообщениеДобавлено: Вт мар 16, 2010 13:37 

Не в сети



Зарегистрирован: Чт мар 04, 2010 23:48
Сообщений: 30
Откуда: Энергодар

danilovav писал(а):

Если надо продолжать использовать оба роутера (каждые клиенты — свой), то вам надо
1) Сделать одну сеть (например, 192.168.1.х) на компьютерах и роутерах, но разные адреса у роутеров (и соответственно компьютеров)
2) Прописать все настройки IP вручную (с учетом у кого какой шлюз) и отключить на обоих девайсах DHCP
3) Соединить сети (роутеры) обычным патчкордом

По последнему вопросу — обмена, если не настроить, не будет. Только два шлюза не прописывайте.

интересно, зачем отключать dhcp, условия маршрутизации прописываются в маршрутизаторах для группы адресов?

Вернуться наверх

Профиль  

danilovav

Заголовок сообщения:

СообщениеДобавлено: Вт мар 16, 2010 13:42 

Не в сети



Зарегистрирован: Чт дек 07, 2006 15:42
Сообщений: 8502
Откуда: RareSoftware.ru

В бюджетных моделях вы ни-че-го не пропишете для внутренней маршрутизации.

DHCP отключать надо потому, что я предлагал физически соединять сети — два DHCP сервера создадут путаницу.

_________________
Хотите хороший девайс? D-Link DFL!

Хотите считать с него трафик?

http://www.raresoftware.ru/products/lan/dfltc

Изображение

Вернуться наверх

Профиль  

tobedimas

Заголовок сообщения: Re: Два провайдера и два роутера в одной сети

СообщениеДобавлено: Вт мар 16, 2010 13:49 

Не в сети



Зарегистрирован: Чт мар 04, 2010 23:48
Сообщений: 30
Откуда: Энергодар

devil44 писал(а):

Дано: DI-604, DI-524, три компа и два ноута с вайфаем (везде винда) + 2 провайдера (PPTP и PPoE).
Вопрос: как объединить все это в одну сеть чтобы не было конфликта между провайдерами? Балансировка трафика не требуется, но необходимо удобное переключение с каждой машины между двумя провайдерами.

По идее, требуется прописать какие-то правила, но какие именно чтобы трафик не перетекал из одного роутера через другой и на внешку?

Задача минимум — одна рабочая группа для всех компов (для обмена файлами). Знаю о существовании соответствующих устройств, но пока хотелось бы обойтись имеющимся железом.

мне кажется нужно сделать что-то типа как тут. схема у него правильная.

Вернуться наверх

Профиль  

danilovav

Заголовок сообщения:

СообщениеДобавлено: Вт мар 16, 2010 14:01 

Не в сети



Зарегистрирован: Чт дек 07, 2006 15:42
Сообщений: 8502
Откуда: RareSoftware.ru

Решение что называется «вилами по воде». К тому же, это удаленное соединение сетей, а у автора вроде как сети можно соединить физически, поэтому не надо нагораживать.

_________________
Хотите хороший девайс? D-Link DFL!

Хотите считать с него трафик?

http://www.raresoftware.ru/products/lan/dfltc

Изображение

Вернуться наверх

Профиль  

tobedimas

Заголовок сообщения:

СообщениеДобавлено: Ср мар 24, 2010 03:40 

Не в сети



Зарегистрирован: Чт мар 04, 2010 23:48
Сообщений: 30
Откуда: Энергодар

danilovav писал(а):

В бюджетных моделях вы ни-че-го не пропишете для внутренней маршрутизации.

DHCP отключать надо потому, что я предлагал физически соединять сети — два DHCP сервера создадут путаницу.

я так понял, это мне. круто! но что за нафик? воткнули туда static routing, virtual server, nat и dmz !!! ни-хе-ра, инструкцию написать не потрудились!!! а оказывается это дерьмо бюджетного класса !!! я в панике!!!!!!!!!!!!!!!!!!!!!!! что ж делать, если купить что-то дороше??? обалдеть! какой-то урод вписал в прошивку static routing. естественно никто про это не знает, один я это увидел, и занялся хернёй. а поддержка адекватно заявляет, типа сбегай купи другое дерьмо, это устарело. как будто это когда-то работало, но видиммо физ части износились, прибор глючит, в общем в топку! капец!

Вернуться наверх

Профиль  

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 9

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Добрый день.

Описание: в одно помещение заведено 2 кабеля с интернетом от разных провайдеров. Есть 2 роутера TP-Link Archer C20, в каждый подключен свой кабель соответственно. К каждому роутеру подключено N устройств (по LAN и по Wi-Fi).

Суть: как объединить эти 2 роутера и все устройства подключенные к ним в единую локальную сеть? Возможность соединить роутеры с помощью кабеля имеется.

P.S. В данной теме толком не разбираюсь, поэтому прошу помощи. Если для решения задачи необходимы какие-либо нюансы, пишите. Заранее спасибо.

задан 15 мар 2018 в 4:31

Pankrashin G.O.'s user avatar

5

Как это делается в теории

Существуют 2 варианта — через динамичную и статичную маршрутизацию. Я никогда не использовал TP-Link Archer и не могу найти у него в спецификациях что-то о динамической маршрутизации, так что придётся рассмотреть второй вариант, хотя предпочтителен первый.

Для организации L3-связности между двумя сегментами сети (двумя роутерами) понадобится 2 диапазона внутренних (до NAT) адресов на этих роутерах (например 192.168.1.0/24 и 192.168.2.0/24). Соединяем эти два роутера витой парой, прописываем на каждом статичную dhcp запись для роутера-соседа. Так, на первом роутере (192.168.1.1) второй должен получать адрес 192.168.1.2 и на втором роутере (192.168.2.1) первый должен получать 192.168.2.2 . Далее, на каждом роутере в сторону своего соседа надо прописать статический маршрут (в случае, если связности из сетей не появилось). Таким образом, на первом роутере из сети 192.168.1.0/24 необходимо прописать маршрут до 192.168.2.0/24 в сторону 192.168.2.1 через 192.168.2.2 и соответственно на втором роутере из сети 192.168.2.0/24 необходимо прописать маршрут в сторону 192.168.1.1 через 192.168.1.2 до сети 192.168.1.0/24

ответ дан 15 мар 2018 в 5:56

nobody's user avatar

nobodynobody

1,8971 золотой знак8 серебряных знаков17 бронзовых знаков

1

Для чего нужно разграничение трафика

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

Как разграничить трафик

Для решения проблемы можно настроить приоритет определённого вида трафика. Для этого в качестве шлюза необходимо иметь либо дорогое устройство от CISCO, либо полноценный сервер. Но проще и надёжнее использовать разные независимые каналы в Интернет. Это могут быть либо две независимые линии одного и того же провайдера, или же линии двух различных провайдеров. Конечно же, лучше иметь две линии от разных провайдеров — в случае проблем у одного провайдера выручит другой.

Так как же построить такую схему локальной сети, при которой разные устройства в локальной сети будут выходить в Интернет через разных провайдеров или просто через разные шлюзы? А схема эта довольно проста.

Настройка подключения к Интернету разных устройств через разные шлюзы

Коммутационная схема

1. Два роутера подключаются к двум разным провайдерам через WAN-порты.

2. Между собой роутеры соединяются Ethernet-кабелем (витой парой) через LAN-порты.

3. К роутерам подключены компьютеры, сетевые МФУ через LAN-порты и ноутбуки по Wi-Fi.

Настройка роутеров

Роутер №1.

Подключён к Провайдеру А.
IP-адрес 192.168.1.1
Маска подсети 255.255.255.0
DHCP-сервер включён.

Роутер №2.

Подключён к Провайдеру Б.
IP-адрес 192.168.1.254
Маска подсети 255.255.255.0
DHCP-сервер выключен.

Настройка компьютеров

1. Все компьютеры и другие устройства, которые должны подключаться к Интернету через провайдера А (соответственно, через шлюз №1), должны быть настроены на автоматическое получение сетевых параметров в свойствах сетевых адаптеров:

Автоматическое получение сетевых параметров

2. На компьютерах, которые должны использовать провайдера Б (шлюз №2), нужно вручную задать IP-адреса, а в качестве шлюза и DNS-сервера указать IP-адрес роутера №2, т.е. в нашем примере 192.168.1.254:

Ручная настройка ip-адреса, шлюза и dns

Назначая IP-адреса вручную, важно не указать уже используемый адрес. Мы советуем на роутере №1 задать пул DHCP с запасом, а вручную указывать адреса из другого диапазона. Например, на роутере с включённым DHCP-сервером указываем диапазон DHCP 192.168.1.20-100, а на устройствах, которые должны выходить в Интернет через шлюз №2, будем указывать вручную адреса из диапазона 192.168.1.150-200.

Схема локальной сети с двумя шлюзами (провайдерами)

Выводы

Эта схема хороша тем, что в любой момент на любом устройстве, подключённом к любому из роутеров, вы можете выйти в Интернет через любой шлюз. Если нужен шлюз №1, установите в свойствах сетевой карты автоматическое получение всех сетевых параметров. Если нужно выйти через шлюз №2, настройте сетевые параметры вручную, как мы показали. При такой коммутационной схеме неважно, в LAN-порт какого роутера подключено устройство, т.к. они находятся в одном сегменте сети. Кстати, Wi-Fi — это тоже LAN, только без проводов.

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


1) Роутер 1 и свитч 1 соединены через локальные порты
2) Соединяем свитч c локальным портом роутера 2 кабелем UTP

Перекрёстный кабель между роутером и свитчём делать не нужно (данный свитч имеет функцию автоматического определения Auto-MDI/MDIX http://vituha.com/mdi-mdix-automdix)
Т.е. для всех соединений нашей объединённой локальной сети делаем прямые кабели по схеме: http://compl.ucoz.ru/publ/sety_internet/setevye_tekhnologii/statja_3_obzhim_kabelja/11-1-0-15

3) Назначаем адрес доступа к роутеру 1: 192.168.1.1
4) Назначаем адрес доступа к роутеру 2: 192.168.1.2
5) В роутере 1 и в роутере 2 создаём однинаковый пул DHCP:
192.168.1.100 – 192.168.1.199
6) В роутере 1 и в роутере 2 делаем одинаковую привязку MAC-адресов компьютеров к локальным адресам

Для любого вновь подключённого устройства необходимо вручную прописывать локальные адреса и привязывать их к MAC-адресам
Нельзя допускать автоматического распределения адресов. Это может привести к конфликту)
Исключение – устройства, подключаемые через WiFi (т.к. wifi- роутер один, то конфликта не будет. Тем не менее следить за этим процессом всё равно нужно!)
К назначению адресов нужно подходить очень аккуратно

Для принт-сервера заранее назначаем адрес: 192.168.1.199

6) Настраеваем роутер 1 на работу с провайдером 1 (pppoe… логин, пароль)
7) Настраеваем роутер 2 на работу с провайдером 2 (динамические адреса)

Далее возможно три случая:

1) Если нужно, чтобы объединённая локальная сеть работала через провайдера 1:
В роутере 2 отключам функцию DHCP, в роутере 1 функцию DHCP оставляем включённой

В роутере 1 (TP-LINK WR1043ND) эта функция находится в разделе DHCP Settings
В роутере 2 (TP-LINK WR1043ND) она же находится в разделе
System Management/ System Services

2) Если нужно, чтобы объединённая локальная сеть работала через провайдера 2:
В роутере 1 отключам функцию DHCP, в роутере 2 функцию DHCP оставляем включённой

3) Если необходимо, чтобы разные компьютеры локальной сети одновременно работали через разных провайдеров:

В этом случае в обоих роутерах включаем DHCP

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

В Windows 7 выбранное соединение отображается наглядно
В Windows XP проверить полученное соединение можно через сервис проверки своего ip-адреса… например, здесь: http://www.rawex.ru/speed/vaship.php

В зависимости от того, какое соединение выбрано, можно работать либо с локальной сетью одного провайдера, либо с локальной сетью другого провайдера

Роутеры настроены.
Теперь организуем локальную сеть, расшарим папки и принтер.

Трудность в следующем.
Два компьютера в моей сети работают под управлением windows 7, остальные – под Windows XP

Рабочая группа по умолчанию в windows xp – mshome
Рабочая группа по умолчанию в windows 7 – workgroup (или что-то типа того)
Получается такая штука, что компьютеры под управлением windows 7 не видят компьютеров под управлением xp
Необходимо сделать следующее: в разделе Система Windows 7 нужно поменять название рабочей группы, чтобы на всех компьютерах объединённой локальной сети рабочая группа была одной и той же

После того, как это сделано, можно на всех компьютерах объединённой локальной сети подключить сетевые диски.

Для того, чтобы работал принтер, нужно на всех компьютерах объединённой локальной сети установить программное обеспечение принт-сервера:
http://www.tp-linkru.com/support/download/?productcategoryid=208&model=TL-PS310U&version=V1
Главная программа: MFP and Storage_Server
Утилита для организации очередей печати: Network Printer Wizard
Прошивку принт-сервера следует поменять на последнюю доступную!

На тех компьютерах, на которых необходима работа сканера, устанавливаем соответсвующее программное обеспечение принтера

P.S.

Использовались:

Клещи обжимные TRENDnet TC-CT68
http://www.ulmart.ru/goods/26812/

Универсальный зачистной нож 5bites LY-501C
http://www.ulmart.ru/goods/164722/
(Клещами зачищать провода не удобно. С ножом лично мне работать понравилось больше.
Чтобы не резать провода, на ноже есть специальный регулировачный винт)

Тестер кабеля многофункциональный 5bites LY-CT013
http://shop.bigcomp.ru/catalog/group2466/good111895.html

Кабель витая пара Telecom UTP cat 6
http://www.ulmart.ru/goods/168562/

Коннекторы RJ-45

Пассатижи
(без них правильно обжать довольно-таки толстый кабель да ещё и с сердечником практически нереально)

P.S 2.

Пара слов об открытии портов:

В роутере 1 (TP-LINK WR1043ND) с этим всё просто
Заходим в раздел Forwarding/ Virtual Servers
Прописываем порты
В качестве IP Address указываем локальный адрес компьютера, на котором необходимо открыть портыРоутер 2 (Asus RX3041H ):

Заходим в раздел Firewall/ Advanced/ Service
Указываем название программы, для которой необходимо открыть порт, прописываем порт

Затем заходим в раздел Firewall/ Inbound ACL
В Destination Port выбираем пункт Service
В появившемся открывающимся списке выбираем название программы, для которой необходимо открыть порт
В NAT прописываем адрес компьютера, на котором необходимо открыть порт
Жмём Add

P.S. 3:

Роутер TP-LINK WR1043ND иногда подвисает (не очень часто)
Ничего страшного. Лечится переподключением к розетке
В будущих прошивках этот глюк обещают исправить

С этим роутером лучше всего использовать в паре wifi usb адаптер TP-LINK WN821NC
http://www.ulmart.ru/goods/221903/
Заявленная скорость до 300Мбит/с
(На случай, если на каком-нибудь из компьютеров вдруг понадобится WiFi)

Mikrotik-2-ISP-Load-Balancing-000.pngКак мы уже говорили, сегодня очень многие рабочие процессы прямо зависят от наличия доступа в интернет, поэтому несколько каналов доступа — это не прихоть и не роскошь, а насущная необходимость. Одной из первых задач, которые решаются несколькими каналами, является отказоустойчивость, но потом возникают иные вопросы, а именно полноценное использование двух каналов, ведь это совсем не дело если оплаченный резервный канал простаивает. Поэтому в данной статье мы разберем методы балансировки каналов на оборудовании Mikrotik и рассмотрим связанные с этим проблемы и способы их решения.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Сразу начнем с того, что балансировка и обеспечение отказоустойчивости — это две не связанные друг с другом задачи, хотя очень часто их рассматривают совместно, что только вносит дополнительную путаницу. Обработка отказа предусматривает переключение каналов при отказе одного из них, а балансировка распределяет трафик между ними. Поэтому и рассматривать мы их будем раздельно, хотя и коснемся немного вопроса отказоустойчивости, чтобы у вас было понимание как совместить одно с другим.

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

Данная статья предназначена для RouterOS 6.x

Во всех примерах ниже будет рассматриваться следующая схема, ее же мы использовали в предыдущей статье цикла. Но здесь во внутренней сети у нас появился дополнительный узел — условный веб-сервер, который должен быть доступен сразу на обоих внешних адресах.

Mikrotik-2-ISP-Load-Balancing-001.pngА начнем мы с необходимого теоретического минимума, без которого настройка балансировки выльется в непонятные камлания с непредсказуемым результатом.

Общие вопросы, проблемы и решения

Начнем с соединений, все пакеты установленного соединения должны проходить через один и тот же канал. Это аксиома. Поэтому балансировка должна выполняться не на уровне пакетов, а на уровне соединений. А так как соединения бывают разные и трафик по ним передается разный, то даже равномерно сбалансировав каналы по соединениям вы не получите равномерной балансировки по нагрузке. Это сразу следует понимать.

Второй момент, который связан с протоколами прикладного уровня, в рамках одного сеанса которых могут быть созданы несколько соединений. Если бездумно балансировать по соединениям, то может получиться так, что рамках одного сеанса мы получим соединения с разными адресами источниками. В ряде случаев это не критично, а в других может доставить ряд существенных неудобств, особенно если на другой стороне существует привязка сессии к IP-адресу. Наиболее критично это для финансовых приложений, например, онлайн-банков, в лучшем случае это приведет к постоянной необходимости заново аутентифицироваться в личном кабинете, в худшем — стать причиной блокировки доступа.

Также могут возникнуть проблемы с IPsec, туннелями, VPN и т.д., т.е. со всем тем, что чувствительно к IP-адресу противоположного узла.

Для того, чтобы этого избежать следует привязать балансировку к еще одному параметру — адресу источника и направлять все соединения одного узла в текущий промежуток времени через один и тот-же канал.

Следующая сложность — проброс портов и собственные сервисы роутера. Мы всегда должны отправлять ответ на тот интерфейс, с которого пришел запрос, а, следовательно должны исключить такие соединения из балансировки. Это решается дополнительной маркировкой и всегда должно делаться в первую очередь.

Предварительная настройка роутера

Прежде всего вам потребуется отключить динамическое добавление маршрутов, которое используется при создании коммутируемых подключений, например, PPPoE или DHCP:

Mikrotik-2-ISP-Load-Balancing-002.png

Важно! Во время выполнения операций с настройкой маршрутов у вас кратковременно пропадет доступ в интернет. Поэтому все указанные действия следует выполнять имея физический доступ к устройству.

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

Затем создайте второе правило маскарадинга или SNAT в разделе IP — Firewall — NAT для выхода в интернет через второй интерфейс, а также продублируйте для него все правила проброса портов.

Примерно это будет выглядеть так для маскарадинга, где 192.168.111.0/24 — диапазон внутренней сети:

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.111.0/24
add action=masquerade chain=srcnat out-interface=ether3 src-address=192.168.111.0/24

И так для проброса портов, в данном случае 192.168.111.152 внутренний адрес условного веб-сервера:

/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.3.107 dst-port=80 \
in-interface=ether1 protocol=tcp to-addresses=192.168.111.152 to-ports=80
add action=dst-nat chain=dstnat dst-address=192.168.233.182 dst-port=80 \
in-interface=ether3 protocol=tcp to-addresses=192.168.111.152 to-ports=80

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

Таблицы маршрутизации

Все указанные ниже действия мы будем делать в IP — Routes, перейдем туда и сначала заполним основную (main) таблицу маршрутизации, которая будет использоваться по умолчанию, если никакая иная таблица не указана. Добавим маршрут к первому провайдеру: Dst. Address — оставляем по умолчанию — 0.0.0.0/0, Gateway — указываем шлюз первого провайдера, в нашем случае 192.168.3.1 и устанавливаем административную дистанцию маршрута — Distance — 1.

Mikrotik-2-ISP-Load-Balancing-004.pngВ терминале это сделать еще проще:

/ip route
add distance=1 gateway=192.168.3.1

В принципе этого уже достаточно для того, чтобы наша сеть продолжила нормально выходить в интернет после того, как вы отключите динамическое добавление маршрутов.

Затем создадим таблицы маршрутизации для каждого из провайдеров. Это делается точно также, как и для основной, но с обязательным указанием имени таблицы в поле Routing Mark, мы не будем придумывать ничего сложного и просто назовем наши таблицы ISP1 и ISP2. В качестве шлюзов — Gateway — указываем шлюзы соответствующих провайдеров.

Mikrotik-2-ISP-Load-Balancing-003.pngЛибо выполните в терминале:

/ip route
add check-gateway=ping distance=1 gateway=192.168.3.1 routing-mark=ISP1
add check-gateway=ping distance=1 gateway=192.168.233.2 routing-mark=ISP2

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

А как с отказоустойчивостью? А ее настраиваем любым желательным способом отдельно для каждой таблицы маршрутизации. Для этого можете воспользоваться нашей статьей:

Mikrotik и несколько провайдеров. Резервирование каналов

Например, самый простейший способ на основе дистанции маршрутов будет выглядеть так:

/ip route
add check-gateway=ping distance=1 gateway=192.168.3.1
add check-gateway=ping distance=2 gateway=192.168.233.2

add check-gateway=ping distance=1 gateway=192.168.3.1 routing-mark=ISP1
add check-gateway=ping distance=2 gateway=192.168.233.2 routing-mark=ISP1

add check-gateway=ping distance=1 gateway=192.168.233.2 routing-mark=ISP2
add check-gateway=ping distance=2 gateway=192.168.3.1 routing-mark=ISP2

Как видим таблицы main и ISP1 полностью повторяют друг друга и основным шлюзом (с меньшей дистанцией) в них первый провайдер, таблица ISP2, наоборот, использует основным шлюзом второго провайдера. Таким образом каждая из дополнительных таблиц при нормальной работе сети будет отправлять трафик через свой канал, а при аварии — через оставшийся рабочий.

Маркировка трафика для проброшенных портов

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

Какой именно трафик, на какие именно порты и по какому протоколу приходит нам известно, поэтому будем выборочно маркировать только его. Все действия по маркировке мы будем выполнять в цепочке PREROUTING таблицы mangle, при этом помним, что правила обрабатываются в порядке очереди до первого терминирующего правила.

Переходим в IP — Firewall — Mangle и создаем следующее правило: Chain — prerouting, Dst Address — 192.168.3.107 — внешний адрес на канале первого провайдера, Protocol — tcp, Dst. Port — 80. Если проброшено несколько портов, то просто перечисляем их через запятую. В результате у вас должно получиться два правила, одно для протокола TCP, второе для UDP.

Mikrotik-2-ISP-Load-Balancing-005.pngНа вкладке Action выбираем действие mark connection, в поле New Connection Mark ставим марку ISP1-IN, т.е. входящие соединения через первого провайдера (название марки можете выбрать на собственное усмотрение), также обязательно ставим флаг Passthrough, чтобы пакет продолжил движение по таблице.

Mikrotik-2-ISP-Load-Balancing-006.pngБыстрее выполнить действия в терминале:

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address=192.168.3.107 dst-port=80 \
new-connection-mark=ISP1-IN passthrough=yes protocol=tcp

Затем создаем аналогичное правило для входящих соединений второго провайдера, только указываем второй внешний IP адрес и ставим марку ISP2-IN.

Соединения мы промаркировали, теперь нужно направить трафик в нужные таблицы маршрутизации, поэтому ниже создадим следующее правило: Chain — prerouting, Src/ Address — 192.168.111.0/24, Connection Mark — ISP1-IN.

Mikrotik-2-ISP-Load-Balancing-007.pngНа закладке Action выбираем mark routing и в поле New Routing Mark указываем таблицу маршрутизации, в которую мы направляем трафик, в нашем случае ISP1, флаг Passthrough не ставим, данное правило будет для пакета терминирующим.

Mikrotik-2-ISP-Load-Balancing-008.pngВ терминале:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1-IN new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Затем создаем такое же правило для второго провайдера, которое будет направлять пакеты соединения с маркой ISP2-IN в таблицу маршрутизации ISP2. Данный набор правил всегда должен стоять раньше всех других правил по балансировке в таблице Mangle.

Собственный трафик роутера

Эта настройка понадобится вам, если у вас на роутере есть публичные сервисы, которые должны быть доступны через обоих провайдеров, например, VPN-сервер. Обратите внимание, что это не касается проброшенных портов, а именно собственных служб роутера. Здесь у нас стоит точно такая же задача — отправить трафик в тот же канал, через который он пришел.

Здесь мы будем действовать более широко, критерием будет интерфейс входа, промаркируем входящий трафик следующим образом:

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ether1 \
new-connection-mark=ISP1-IN passthrough=yes
add action=mark-connection chain=prerouting in-interface=ether3 \
new-connection-mark=ISP2-IN passthrough=yes

Нетрудно заметить, что в данные правила попадает весь входящий трафик, как собственный роутера, так и транзитный. А вот далее есть особенности. Выше мы маркировали пакеты в цепочке PREROUTING таблицы mangle, но исходящий трафик роутера туда не попадает, поэтому мы должны маркировать пакеты в двух местах. В OUTPUT для собственного трафика роутера:

/ip firewall mangle
add chain=output connection-mark=ISP1-IN action=mark-routing new-routing-mark=ISP1
add chain=output connection-mark=ISP2-IN action=mark-routing new-routing-mark=ISP2

И в PREROUTING для транзитного:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1-IN new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2-IN new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Эти правила точно также должны находиться в самом верху таблицы mangle и заменяют правила для проброшенного трафика.

Ручная балансировка каналов

Самый простой способ, в котором мы можем вручную указать какой именно трафик в какую таблицу маршрутизации направить. При этом для выделения этого трафика мы можем использовать любые критерии доступные в цепочке prerouting. В нашем примере мы будем использовать в качестве критерия адрес источника. Создадим в IP — Firewall — Address Lists два адресных листа ISP1 и ISP2, затем добавим в них IP-адреса ПК, которые будут выходить в сеть через первый и второй канал соответственно.

Mikrotik-2-ISP-Load-Balancing-009.pngИли:

/ip firewall address-list
add address=192.168.111.254 list=ISP1
add address=192.168.111.155 list=ISP2

Теперь выполним маркировку попадающих под правило соединений:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1

Данное правило промаркирует все соединения, адрес источник которых входит в лист ISP1 и не имеет других марок — критерий Connection Mark — no mark — маркой ISP1. Немного о последнем критерии, с его помощью мы маркируем только те соединения, которые не имеют уже установленной марки. Это сделано для того, чтобы избежать возможной перемаркировки пакетов. И хотя в нашей конфигурации в данном месте таких быть не должно лучше все же подстраховаться на будущее.

Таким же образом маркируем соединения для второго провайдера на основании адресов из второго списка.

Затем перейдем к маршрутизации, создадим правило, которое будет направлять трафик, промаркированный как ISP1 в первую таблицу маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Здесь же создадим правило для второй таблицы маршрутизации.

В результате полный набор правил будет выглядеть так:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP2 passthrough=yes src-address-list=ISP2

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Аналогичным образом можно решать и иные задачи по разделению трафика между каналами, например, сделать выборочный обход блокировок. Для этого маркируем трафик на основании адреса назначения согласно спискам и направляем в нужную таблицу маршрутизации.

Балансировка NTH (по соединениям)

Довольно простой метод балансировки, когда мы оперируем соединениями и полностью соответствует принципу «на первый-второй рассчитайсь». Т.е. первое соединение направляем в первый канал, следующее во второй, затем снова в первый и т.д. Но если реализовать этот способ без дополнительных настроек, то мы получим ситуацию, когда трафик от одного узла к другому внешнему узлу может идти сразу через оба канала, что является нежелательным. Поэтому мы будем действовать по следующему алгоритму:

  • Маркировать новые соединения по принципу NTH
  • Добавлять адрес источник промаркированного соединения в список
  • В начале таблицы Mangle перехватываем трафик и принудительно маркируем на основании списков

Ниже будем рассматривать сразу готовое решение, начнем с перехвата трафика, для этого добавим уже известное нам по прошлому методу правило:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1

Затем продублируем его для списка второго провайдера и направим маркированный трафик в нужные таблицы маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

По сути, мы продублировали набор правил для ручной балансировки, но есть одно существенное отличие, если тогда мы формировали списки вручную, то теперь будем делать это динамически. Еще ниже добавляем следующее правило для маркировки соединений: Chain — prerouting, Src. Address — 192.168.111.0/24, Connection Mark — no mark, Сonnection state — new:

Mikrotik-2-ISP-Load-Balancing-010.png

Еще раз обращаем внимание, что мы маркируем только новые соединения, адрес источника которых — адреса локальной сети и которые не имеют других марок.

Затем переходим на закладку Extra и в разделе Nth ставим Every 2, Packet 1 — это означает что под условия будет попадать каждый первый пакет из двух.

Mikrotik-2-ISP-Load-Balancing-011.pngНа закладке Action выбираем mark connection, New Connection Mark — ISP1 и ставим флаг Passthrough.

В терминале:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=2,1 passthrough=yes src-address=192.168.111.0/24

Затем аналогичное правило для второго провайдера, только в Nth ставим Every 2, Packet 2 или nth=2,2 для терминала.

Так как флаг Passthrough установлен — пакет идет дальше, следующим шагом будет добавление адреса источника в соответствующий список. Для этого добавим следующее правило: Chain — prerouting, Src/ Address — 192.168.111.0/24, Сonnection Mark — ISP1:

Mikrotik-2-ISP-Load-Balancing-012.pngПереходим в Actions и указываем действие add src to address list, в поле Address List указываем список первого провайдера ISP1, ниже указываем срок действия записи, а нашем случае 8 часов. Теперь после выполнения балансировки все соединения этого узла будут закреплены за выбранным каналом на 8 часов, срок действия записи можете указать по собственному усмотрению.

Mikrotik-2-ISP-Load-Balancing-013.pngВ терминале:

/ip firewall mangle
add action=add-src-to-address-list address-list=ISP1 address-list-timeout=8h \
chain=prerouting connection-mark=ISP1 src-address=192.168.111.0/24

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

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Повторяем указанный набор правил для второго провайдера.

В результате у нас получится:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP1 passthrough=yes src-address-list=ISP1
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=ISP2 passthrough=yes src-address-list=ISP2

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=2,1 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP2 nth=2,2 passthrough=yes src-address=192.168.111.0/24

add action=add-src-to-address-list address-list=ISP1 address-list-timeout=8h \
chain=prerouting connection-mark=ISP1 src-address=192.168.111.0/24
add action=add-src-to-address-list address-list=ISP2 address-list-timeout=8h \
chain=prerouting connection-mark=ISP2 src-address=192.168.111.0/24

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Внимательный читатель заметит, что у нас появилось два одинаковых блока с действием mark routing и сразу возникает резонный вопрос: а нельзя ли обойтись одним. Можно, оставив нижний, но при этом нужно учитывать, что большая часть трафика будет промаркирована именно первыми правилами, основываясь на нахождении адреса источника в списке и поэтому дальнейшее прохождение пакетов по цепочке является нежелательным с точки зрения производительности. Поэтому первый блок сразу отправляет пакеты в нужную таблицу маршрутизации прерывая их дальнейшее прохождение вниз по правилам.

Теперь некоторое время поработаем и заглянем в списки, как видим узлы равномерно распределены по каналам и добавлялись туда строго по очереди (обратите внимание на колонку с временем добавления):

Mikrotik-2-ISP-Load-Balancing-014.pngЕсли вам нужно, чтобы какой-то узел постоянно работал через один и тот же канал, просто добавьте его в нужный список вручную.

Следующий вопрос: как быть при разной пропускной способности каналов. Допустим ISP1 предоставляет канал в 100 Мбит/с, а ISP2 только 50 Мб/с. В таком случае нам нужно изменить условия балансировки, как показывают несложные математические вычисления, вместо балансировки 1/2 нам нужно балансировать 1/3. Т.е. в условиях Nth ставим Every 3, а затем два пакета маркируем для первого провайдера, а третий для второго.

add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=3,1 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP1 nth=3,2 passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new \
new-connection-mark=ISP2 nth=3,3 passthrough=yes src-address=192.168.111.0/24

Никакие другие правила данное изменение не затрагивает и больше изменять ничего не нужно.

Балансировка PCC (per connection classifier)

Это более сложный способ и в качестве критериев балансировки используются критерии соединения, такие как адрес и порт источника или назначения. При этом данный способ более прост в реализации за счет того, что нам не нужно контролировать ряд аспектов, например, привязку всех соединений узла к каналу.

Начнем. Прежде всего добавим правило маркировки соединений, маркировать мы все также будем трафик с адресами источника Src. Address — 192.168.111.0/24 и не имеющих других марок Connection Mark — no mark. Только на закладке Advanced добавим критерий Per Connection Classifer — src. address 2/0.

Это означает что в качестве критерия классификации мы выбираем адрес источник (доступны также адрес и порт источника, адрес назначения, адрес и порт назначения, оба адреса и т.д.) на основании которого вычисляется 32-битный хеш, затем этот хеш делится на указанное в числителе дроби число и остаток сравнивается со знаменателем, при совпадении происходит срабатывание правила. Так как делим мы на 2, то возможные остатки у нас 0 и 1, для первого провайдера указываем ноль и присваиваем соединению метку ISP1, а чтобы пакет пошел дальше не забываем про Passthrough.

Mikrotik-2-ISP-Load-Balancing-015.pngАналогичное правило создаем и для второго провайдера, только в критерии ставим в знаменатель остаток 2. Если нам нужно балансировать каналы в иной пропорции, то можем использовать иные параметры, так повторяя указанный выше пример с каналами 100 Мбит/с и 50 Мбит/с следует использовать числитель 3 и знаменатели 0,1,2. Правил будет также три, два из них должны ставить метку ISP1, одно — ISP2.

Добавить правило в терминале можно так:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP1 \
passthrough=yes per-connection-classifier=src-address:2/0 src-address=192.168.111.0/24

Затем ниже добавляем правила направляющие промаркированный трафик в нужную таблицу маршрутизации, пример для первого провайдера:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24

Полный набор правил будет выглядеть так:

/ip firewall mangleadd action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP1 \
passthrough=yes per-connection-classifier=src-address:2/0 src-address=192.168.111.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark new-connection-mark=ISP2 \
passthrough=yes per-connection-classifier=src-address:2/1 src-address=192.168.111.0/24

add action=mark-routing chain=prerouting connection-mark=ISP1 new-routing-mark=ISP1 \
passthrough=no src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2 new-routing-mark=ISP2 \
passthrough=no src-address=192.168.111.0/24

Как видим, несмотря на более сложный алгоритм реализация этого способа гораздо проще, так как классификацию соединений берет на себя роутер и нам не нужно создавать дополнительные списки и правила.

Балансировка ECMP (equal cost multipath routing)

Аббревиатура ECMP расшифровывается как маршрутизация через множество путей равной стоимости. А так как все пути равнозначны, то трафик будет равномерно балансироваться между ними. Этот метод широко используется провайдерами, но для конечных сетей это не самый лучший вариант. Почему? Потому что мы не можем повлиять на выбор пути для соединения согласно каким-либо критериям и поэтому несколько соединений от одного внутреннего узла к одному внешнему могут пойти и пойдут разными путями. К чему это может привести мы писали в начале этой статьи. Поэтому подходите к выбору этого способа балансировки взвесив все за и против.

Прежде всего создадим еще одну таблицу маршрутизации и добавим в нее нулевой маршрут с несколькими шлюзами, если нужна балансировка в разных пропорциях, то следует добавить нужный шлюз несколько раз. Ниже показан пример для каналов 100 Мбит/с и 50 Мбит/с у первого и второго провайдера. Указанные шлюзы будут использоваться по кольцу (Round-robin). Обратите внимание, что новый маршрут мы поместили в новую таблицу mixed.

Mikrotik-2-ISP-Load-Balancing-016.pngВ терминале:

/ip route
add check-gateway=ping distance=1 gateway=\
192.168.3.1,192.168.3.1,192.168.233.2 routing-mark=mixed

Теперь поймаем все исходящие соединения локальной сети без марок и назначим им марку mixed:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=mixed passthrough=yes src-address=192.168.111.0/24

И сразу завернем этот трафик в нужную таблицу маршрутизации:

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=mixed new-routing-mark=mixed \
passthrough=no src-address=192.168.111.0/24

Полностью конфигурация будет выглядеть так:

/ip route
add check-gateway=ping distance=1 gateway=\
192.168.3.1,192.168.3.1,192.168.233.2 routing-mark=mixed

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
new-connection-mark=mixed passthrough=yes src-address=192.168.111.0/24
add action=mark-routing chain=prerouting connection-mark=mixed new-routing-mark=mixed \
passthrough=no src-address=192.168.111.0/24

Как можно заметить, данный способ вообще предельно прост, но имеет ряд особенностей, которые следует учитывать.

Другие сети за роутером

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

Первое, что приходит на ум — это создать дополнительный список, скажем dont_balance и добавить его дополнительным критерием к правилам маркировки соединения через Dst. Addreess List, но таких правил может быть много и дополнительный критерий увеличит нагрузку на роутер. Поэтому мы пойдем другим путем, а именно вспомним, что во всех правилах маркировки мы использовали критерий Connection Mark — no mark. Следовательно, нам достаточно добавить таким соединениям собственную марку, и они не будут маркироваться правилами балансировки.

Чтобы не делать много записей можно сразу добавить в список диапазоны используемых частных сетей. На безопасность это не влияет, но упрощает администрирование.

Mikrotik-2-ISP-Load-Balancing-017.pngВ терминале создать и заполнить список можно так:

/ip firewall address-list
add address=192.168.0.0/16 list=dont_balance
add address=10.0.0.0/8 list=dont_balance

Теперь промаркируем входящие соединения из этих сетей в локальную сеть и исходящие из локальной во внутренние сети:

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address-list=dont_balance \
new-connection-mark=LOCAL passthrough=yes src-address=192.168.111.0/24
add action=mark-connection chain=prerouting dst-address=192.168.111.0/24 \
new-connection-mark=LOCAL passthrough=yes src-address-list=dont_balance

Далее можно не делать ничего, соединения с уже существующей меткой пройдут сквозь остальные правила и останутся в основной таблице маршрутизации, но если такого трафика много, то с целью уменьшения нагрузки на роутер добавим ниже еще одно правило, которое принудительно отправит эти пакеты в основную таблицу и прекратит их прохождение по цепочке.

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=LOCAL new-routing-mark=main passthrough=no

Эти правила должны располагаться в самом верху таблицы Mangle, выше всех других правил балансировки.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

  • Два провайдера в один роутер asus
  • Два роутера в одной сети единая wifi
  • Два роутера в одной сети через wifi роутер
  • Два принтера от одного роутера
  • Два роутера в одной сети zyxel keenetic