Понадобилось организовать работу с двумя подключениями к интернету одновременно. Один провайдер Эр-Телеком, второй – Ростелеком. Оба подключаются по PPPOE. Заявленная скорость подключения примерно одинаковая.
Опишу кратко настройку маршрутизатора Mikrotik для одновременной работы с двумя провайдерами. В Сети можно немало найти руководств о настройке одновременной работы двух подключений. Однако не все они подходили именно под мой случай.
На самом деле не так важно два провайдера или больше, смысл настроек аналогичный.
В моём случае:
Эр-Телеком: pppoe-out1, ip-адрес: 94.144.177.177, routing-mark: to-isp1, connection-mark: to-isp1c
Ростелеком: pppoe-out2, ip-адрес: 85.237.51.51, routing-mark: to-isp2, connection-mark: to-isp2c
Локальная сеть: 192.168.1.0/24
Сервер: 192.168.1.15
Таким образом требовалось:
1) разделить нагрузку по подключениям поровну (!).
2) обеспечить возможность подключения к компьютеру из интернет (DNAT)
С первым всё относительно просто. Предполагается что маскарадинг для локальной сети уже настроен.
/ip firewall nat add chain=srcnat action=masquerade src-address=192.168.1.0/24
Нужно создать статическое правило маршрутизации:
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out1,pppoe-out2
В случае статической маршрутизации в качестве gateway указываются IP-адреса шлюза. А вот для туннельных протоколов лучше будет использовать имя интерфейса. Это нужно если шлюз назначается автоматически при установлении сессии.
Если с доступом к интернет-ресурсам все относительно просто, то с подключением из глобальной сети к компьютеру немного сложнее.
Во-первых придется создать правила NAT для второго подключения (читай второго IP-адреса) аналогично первому.
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.1.15 to-ports=80 protocol=tcp dst-address=94.144.177.177 dst-port=80 add chain=dstnat action=dst-nat to-addresses=192.168.1.15 to-ports=80 protocol=tcp dst-address=85.237.51.51 dst-port=80
Теперь следует добиться того, чтобы ответ на запрос через какого-либо провайдера уходил на его же шлюз. Для этого потребуется маркировка маршрутов и соединений.
Маршруты по-умолчанию для маркированных пакетов (в дополнении к основному правилу см. выше):
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=to-isp1 add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=to-isp2
Эти два правила промаркируют входящие соединения для каждого из провайдеров.
/ip firewall mangle add action=mark-connection chain=forward disabled=no in-interface=pppoe-out1 new-connection-mark=to-isp1c passthrough=yes add action=mark-connection chain=forward disabled=no in-interface=pppoe-out2 new-connection-mark=to-isp2c passthrough=yes
Следующая пара правил нужна если только необходимо ходить на внешние ресурсы строго через определенного провайдера. Например на локальные ресурсы, доступ на которые возможен только из «домашней» сети провайдера. Таким образом, к ресурсам Эр-Телеком подключаемся через Эр-Телеком, к Ростелеком через Ростелеком.
/ip firewall mangle add action=mark-routing chain=prerouting comment="to dom.ru" connection-state=new disabled=no dst-address=!94.144.177.177 dst-address-list=domnet \ new-routing-mark=to-isp1 passthrough=yes src-address=192.168.1.0/24 add action=mark-routing chain=prerouting comment="to rtk" connection-state=new disabled=no dst-address=!85.237.51.51 dst-address-list=rtknet \ new-routing-mark=to-isp2 passthrough=yes src-address=192.168.1.0/24
Для этих правил следует предварительно создать списки ip-адресов domnet и rtknet. Например так:
/ip firewall address-list add list=domnet address=94.181.128.0/18 disabled=no add list=rtknet address=85.237.0.0/16 disabled=no
Последняя пара правил направляет ответы на шлюз того провайдера которому принадлежат соединения:
/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=to-isp1c disabled=no new-routing-mark=to-isp1 passthrough=yes src-address=192.168.1.0/24 add action=mark-routing chain=prerouting connection-mark=to-isp2c disabled=no new-routing-mark=to-isp2 passthrough=yes src-address=192.168.1.0/24
Следует заметить, что вышеприведенная заметка никоим образом не претендует на пошаговую инструкцию по настройке ROS. Здесь описан лишь частный случай применения ее возможностей. Нужно помнить, что большинство правил маршрутизации в данной заметке работают полагаясь на connection tracking т.е. Механизм определения состояний iptables. И от правильной настройки conntrack зависит будет работать описанная выше конфигурация или нет.
Вообще маршрутизаторы Mikrotik не позиционируются производителем как устройства для конечного пользователя. И для настройки маршрутизации необходимы знания сетей вообще и iptables в частности. Поэтому для более полного понимания принципов работы привожу несколько полезных ссылок:
Официальное руководство по RouterOS
Тема по RouterOS на форуме ixbt.com
Руководство по Iptables
Неплохо, подмечено много актуальных тонкостей в посте. Актуально написано!
- Войдите на сайт для отправки комментариев
- cсылка
⏏- Войдите на сайт для отправки комментариев
- cсылка
⏏Задача почти один в один.. делают все как тут написанно.. и ничего не выходит.. не работает роутинг одновременно на дувух провайдеров по виртуальным именам.. если ставишь галочку add default route (в ppoe) то работает по тому прову который первый успел подрубится( если руками вместо имен в pppoe-out1 и pppoe-out2 вписываешь то что дает в автомате при автоматическом создании маршрута то кое как что то начинает работать но до первой перезагрузки или дисконекта провайдера. Плиз хелп
- Войдите на сайт для отправки комментариев
- cсылка
⏏А по одному работает?
- Войдите на сайт для отправки комментариев
- cсылка
⏏Да при отключении одного из ppoe другой нормально работает
- Войдите на сайт для отправки комментариев
- cсылка
⏏Не видя всех настроек, сложно что-то прокомментировать.
Явно где-то не маркируется и пакеты идут не туда. Conntrack работает?
Как выглядит цепочка forward?
- Войдите на сайт для отправки комментариев
- cсылка
⏏Можно попросить Вас платно настроить это дело? У самого не получилось.
Скайп Gamai.Ru, drdeft@gmail.com
- Войдите на сайт для отправки комментариев
- cсылка
⏏Написал бы здесь что именно не получается, попробовали бы вместе разобраться.
- Войдите на сайт для отправки комментариев
- cсылка
⏏Уважаемый isn, воспользовался Вашей инструкцией, все прекрасно работает спасибо Вам большое! Подскажите есть ли возможность в этой схеме организовать автоматическое переключение каналов при его падении? Так как микротик проверяет доступность шлюзов, а не самого интернета и при отсутствии пинга продолжает отправлять запросы на активный интерфейс.
- Войдите на сайт для отправки комментариев
- cсылка
⏏Т.е. соединение активно, а дальше шлюза интернета нет?
Очевидно придется писать скрипты, чтобы динамически менять правила маршрутизации. Сам я такого не делал, поэтому вряд ли подскажу.
- Войдите на сайт для отправки комментариев
- cсылка
⏏Совершенно верно! А я так надеялся(, может попробуете написать скрип именно под Вашу схему за разумное вознаграждение)?
- Войдите на сайт для отправки комментариев
- cсылка
⏏Доходчивая статья, автору респект и главное уважуха ))
- Войдите на сайт для отправки комментариев
- cсылка
⏏Добрый день! Очень полезная для меня статья! Подскажите, пожалуйста, по какому принципу будут использоваться провайдеры? Одна сессия в один, другая в другой? Или на уровне пакетов??
Спасибо.
- Войдите на сайт для отправки комментариев
- cсылка
⏏На уровне соединений.
- Войдите на сайт для отправки комментариев
- cсылка
⏏Добры день, две локальной сетки ,(одна локальная компы другая wifi сеть ) у меня пакеты маркируются но не уходят по второму каналу , хочу wifi пустить по второму каналу не идет или ЕСЛИ ИСПОЛЬзовать ip routes rules ping идет на внешние ip по второму каналу через трасроут видно но когда адрес вбиваешь ни пинг не идет не трасроут, днс на микротике прописан можете посоветовать чтонибудь заранее бладгодарен)
- Войдите на сайт для отправки комментариев
- cсылка
⏏Вопрос плохо понял, если честно. Интернет-канала два и/или локальных подсетей тоже две?
- Войдите на сайт для отправки комментариев
- cсылка
⏏канала два надо опредереленные ip роутить через второй канал локальной сети
- Войдите на сайт для отправки комментариев
- cсылка
⏏