Mikrotik RouterOS; два провайдера - балансировка, маршрутизация, firewall (без скриптов)

04.12.2012
Поделиться в:

Мы уже рассматривали вариант подключения двух провайдеров Интернет к одному маршрутизатору, под управлением операционной системы Mikrotik RouterOS. Однако, это был самый простой вариант. Который не всегда может подойти в тех или иных условиях. Поэтому сегодня, мы возьмем ряд конкретных примеров настройки маршрутизатора с условием подключения к двум провайдерам, и более подробно остановимся на некоторых нюансах настройки Firewall, NAT, маршрутизации и балансировки нагрузки или использования второго канала в качестве резервного.

И так как дальнейший рассказ будет с конкретными примерами, то и начнем его с конкретных условий. У нас есть 2 провайдера. Связь с обоими устанавливается посредством протокола PPPoE. Как настроить соединение с провайдером, подробно описано в этой статье, поэтому этот процесс мы пропустим. Обозначив лишь то, что провайдер №1 у нас подключен к порту Ether1, и имя его PPPoE подключения - ISP1. Провайдер №2, подключен к порту Ether2 и имеет имя PPPoE подключения - ISP2.

Единственный момент, это то, что мы в дальнейшем, будем самостоятельно создавать правила маршрутизации, поэтому при создании подключений к провайдерам, необходимо убрать галочку с пункта Add Default Route на вкладке Dial Out для PPPoE соединения.

PPPoE client RouterOS

NAT

Чтобы наша сеть правильно работала и имела доступ в интернет, нам необходимо настроить NAT. Для этого открываем раздел IP -> Firewall, переходим на вкладку NAT и кнопкой “+”, добавляем новое правило.

На вкладке General, цепучку Chain выбираем scrnat. Значение поля Out. Interface, в данном случае, мы оставляем не заполненным, так как у нас два провайдера, и соответственно 2 разных интерфейса.

New NAT Rule RouterOS

Затем на вкладке Action, в качестве параметра для поля Action, ставим значение masquerade.

New NAT Rule RouterOS

Сохраняем правило кнопкой OK. Настройку NAT, можно считать законченной.

NAT Rules RouterOS

Firewall

 Следующий наш шаг, это настройка функции Firewall, которая призвана защитить нашу локальную сеть.

 Переходим на вкладку Filter Rules, где нам предстоит создать ряд основных правил, согласно которым, будет организованно прохождение пакетов через наш маршрутизатор.

Если у вас есть в этом разделе какие либо правила, то их следует сперва удалить.

 Новые правила, можно добавлять нажатием кнопки “+”, после чего, например для правила разрешающего ping - chain=input protocol=icmp action=accept, на вкладке General, мы выбираем цепочку Chain - input, а протокол Protocol - icmp.

New Firewall Rule RouterOS

После чего, на вкладке Action, в качестве параметра для поля Action, выбираем acept.

New Firewall Rule RouterOS

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

Разрешаем Ping

chain=input protocol=icmp action=accept

chain=forward protocol=icmp action=accept

 Разрешаем установленные соединения

chain=input connection-state=established action=accept

chain=forward connection-state=established action=accept

 Разрешаем родственные соединения

chain=input connection-state=related action=accept

chain=forward connection-state=related action=accept

 Запрещаем не удачные соединения

 chain=input connection-state=invalid action=drop

chain=forward connection-state=invalid action=drop

Разрешаем соединения по протоколу UDP

chain=input protocol=udp action=accept

chain=forward protocol=udp action=accept

 Открываем доступ в Интернет для нашей локальной сети. Для тех, у кого префикс локальной сети, отличается от 192.168.0.0/24, поставить вместо этого, свои адрес.

chain=forward src-address=192.168.0.0/24 action=accept

 Разрешаем доступ к роутеру, только из локальной сети, как и выше - 192.168.0.0/24 стоит заменить своим адресом.

chain=input src-address=192.168.0.0/24 action=accept

 И в конце, запрещаем все остальное

chain=input action=drop

chain=forward action=drop

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

New Terminal Firewall Rules RouterOS

ip firewall filter add chain=input protocol=icmp action=accept

ip firewall filter add chain=forward protocol=icmp action=accept

ip firewall filter add chain=input connection-state=established action=accept

ip firewall filter add chain=forward connection-state=established action=accept

ip firewall filter add chain=input connection-state=related action=accept

ip firewall filter add chain=forward connection-state=related action=accept

ip firewall filter add chain=input connection-state=invalid action=drop

ip firewall filter add chain=forward connection-state=invalid action=drop

ip firewall filter add chain=input protocol=udp action=accept

ip firewall filter add chain=forward protocol=udp action=accept

ip firewall filter add chain=forward src-address=192.168.0.0/24 action=accept

ip firewall filter add chain=input src-address=192.168.0.0/24 action=accept

ip firewall filter add chain=input action=drop

ip firewall filter add chain=forward action=drop

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

Firewall Rules RouterOS

Routing

Последним, но одним из самых важных действий, осталось создание маршрутов. Начнем с того, что пометим наши соединения с провайдером. Это необходимо для того, чтобы все пришедшие на интерфейс того или иного провайдера запросы, уходили именно на его интерфейс. Это довольно критично в том случае, если у нас за NAT, есть какие либо ресурсы, к которым необходимо обеспечить доступ из глобальной сети Интернет. Например web-сервер или почтовый сервер и т.д. О том как организовать работу таких сервисов, мы уже рассматривали в статье Расширенные настройки Mikrotik RouterOS: перенаправление портов - dstnat.

 Для этого, нам необходимо создать два отдельных правила, для каждого провайдера в разделе IP -> Firewall на вкладке Mangle.

 На вкладке General, выбираем цепочку Chain как forward, а в качестве In.Interface выбираем интерфейс PPPoE подключения первого провайдера ISP1.

New Mangle Rule RouterOS

А на вкладке Action, в качестве параметра Action, выбираем mark connection и в появившемся ниже поле New Connection Mark, вписываем имя метки для этого соединения, например ISP1-con.

New Mangle Rule

То же самое, повторяем для второго провайдера. Только в качестве In.Interface выбираем ISP2, а в поле New Connection Mark, вписываем метку для второго соединения ISP2-con.

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

 Здесь же, создаем новое правило в котором в качестве цепочки Chain, выбираем значение prerouting, в поле Scr.Address вписываем префикс нашей локальной сети 192.168.0.0/24, а Cjnnection Mark выбираем метку соединения нашего первого провайдера ISP1-con.

New Mangle Rule RouterOS

Переходим на вкладку Action и в поле Action, выбираем mark routing, а в появившемся ниже поле New Routing Mark, присваиваем метку для маршрута этого провайдера, например ISP1-rt.

New Mangle Rule

Точно такое же привило, создаем и для второго соединения. Только, соответственно, в качестве Connection Mark выбираем ISP2-con, а в качестве New Routing Mark, вписываем ISP2-rt.

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

 Например у провайдера №2 - ISP2 есть локальные ресурсы имеющие диапазон адресов 181.132.84.0/22. А через провайдера №1, пинг к игровым серверам онлайн игр, гораздо меньше. И мы знаем что IP адреса этих серверов 90.231.6.37 и 142.0.93.168.

 Переходим на вкладку Address Lists раздела IP -> Firewall. И по одному добавляем эти IP адреса или подсети целиком, с именами to-ISP1 или to-ISP2, в зависимости от того, через какого провайдера должно быть обращение к этим ресурсам.

New Address List RouterOS

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

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

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

Address Lists RouterOS

Для того чтобы пометить маршруты для этих списков, возвращаемся на вкладку Mangle., где создаем еще 2 правила. Для ISP1 и списка to-ISP1, правило будет выглядеть так: на вкладке General, Chain - prerouting, Connection State - new.

New Mangle Rule RouterOS

На вкладке Advanced, Dst.Address List - наш список адресов для первого провайдера to-ISP1.

New Mangle Rule RouterOS

А на вкладке Action, Action - mark routing, New Routing Mark - ISP1-rt.

New Mangle Rule RouterOS

Повторяем тоже самое, для списка адресов второго провайдера. Но соответственно в качестве Dst.Address List, указываем список адресов для второго провайдера to-ISP2. А в качестве метки для маршрута New Routing Mark - ISP2-rt.

 И приступаем к самой основной части настройки маршрутизации - созданию статических правил маршрутизации в разделе IP -> Routes.

 Здесь, на вкладке Routes, создаем новый маршрут.

Если каналы наших обоих провайдеров, практически равны, то добавляем вот такой маршрут: но вкладке General, окна создания маршрута, для Dst.Address пишем 0.0.0.0/0, а в качестве Getway выбираем интерфейсы наших провайдеров ISP1 и ISP2. Все остальные параметры, оставляем без изменений.

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

New Route RouterOS

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

 Первый Dst.Address - 0.0.0.0/0, Gateway - ISP1.

А второй Dst.Address - 0.0.0.0/0, Gateway - ISP2, Distance - 2.

New Route RouterOS

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

 Первый будет иметь Dst.Address - 0.0.0.0/0, Gateway - ISP1, Routing Mark - ISP1-rt, а второй, соответственно Dst.Address - 0.0.0.0/0, Gateway - ISP2, Routing Mark - ISP2-rt

New Route RouterOS

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

Алексей С., специально для LanMarket

logo
Mikrotik RouterOS; два провайдера - балансировка, маршрутизация, firewall (без скриптов)
Отзывы покупателей
Рейтинг покупателей
5 / 5 5 5 159
На основе 159 оценок покупателей
20.1%
0%
0%
0%
0%
Отзыв
Отлично
Заголовок*
Достоинства
Недостатки
Комментарий*
Представьтесь
Комментарий
Алексей, Указал внешний IP в поле Dst.AddressПроброс не происходит. Прошу Вас подсказать в какую сторону искать."
Комментарий
Спасибо за статью. Раньше не работал с Микротик, но очень понравились возможности.Скажите, пожалуйста, если каналы isp1 и isp2 равнозначны, в какое правило нужно добавить проверку пинга на шлюзе, чтобы если пинг не проходит, все уходило по работающему каналу? В тот маршрут, где указываем сразу два шлюза или в те маршруты, которые созданы для помеченных маршрутов?
Комментарий
Огромная Благодарность за статью !!! Очень помогла, информация доступная и содержательная !!! Респект автору !!!
Комментарий
Алексей, MikroTik hAP Lite для этих целей подойдет?"
Комментарий
Алексей, СПС! уже разобрался. Вернул на одного провайдера тоже не работает. Проблема в firewall(). Необходимо добавить правило forward Connection NAT State dts nat. Конфиг вполне рабочий! Осталось допилить по безопасносити и настроить QoS. огромное спасибо за статью! "
Комментарий
Доброго дня. Как я понял, данный вариант подходит для настройки второго канала, как дополнительного", при, скажем, отваливании первого. Имеем 2 ППоЕ соединения, 2 оптики."
Комментарий
Алексей, syntax error (line 1 column 7) на оба правила"
Комментарий
Здравствуйте! Спасибо за статью, конфигурация работает уже год и очень выручает.Скажите, пожалуйста, как устранить иногда возникающее сообщение при открытии сайтов или попытке что-то скачать:This link was generated for another IP (XXX.XXX.XXX.XXX ip от провайдера1) than your IP (YYY.YYY.YYY.YYY ip от провайдера2)It could be if your ISP or sysadmin uses different IP for web surfing and downloading filesСпасибо. С уважением, Сергей.
Комментарий
Подскажите такой вопрос. Все настроено, все работает. Но есть вопрос. При подклчюении по VPN по IP первого провайдера, тот компьютер, который ходит через второго, недоступен. Это возможно как то исправить?
Комментарий
Хорошая статья!!! Захотелось попробовать подключиться к 2-м провайдерам (или одному и тому же провайдеру по разным путям, через две разные беспроводные точки доступа). В данный момент работает RB912, которая получает интернет через WiFi от соседнего роутера Zyxel. В RB912 работает одна встроенная радиокарта, но хочу прикупить вторую карточку. Раздает интернет в основном через медный порт, и при необходимости по WiFi с другим SSID. предоставляемые провайдером 50 мбит/с. работают стабильно. Хочется увеличить скорость :) Будет ли работать схема балансировки через два беспроводных канала сконфигурированных в качестве WAN ?
Комментарий
Добрый день! Подскажите что может быть у меня не так. Суть в чем, настроил все как по инструкции. Два провайдера разных, оба pppoe. Скорость делится но есть другая проблема. У одного из провайдеров белый ip. Он перестаёт быть доступным из внешнего мира когда подключается второй провайдер. Как поправить и что не так?
Комментарий
Алексей, Провайдеры разные. Все верно. настроено все правильно. Но не работает."
Комментарий
Алексей, Добавил ещё одно правило Mark Connection с цепочной Input (как вы рекомендовали) - не помогло. Может надо ещё одно на Mark routing ? А то не понятно что как помеченные будут дальше обрабатываться. (К L2TP server настроенному на mikrotik аналогично не могу подключиться)"
Комментарий
На двух статических IP от двух разных провайдеров все это не работает. Потратил пол ночи разобраться, что и как - лажа полная. 1. У меня два разных провайдера без каких либо pppoe (кто вообще этим еще пользуется О.о)2. У меня 4 диапазона локальных подсетей раскинутых на 4-ре VLAN.Но все это мало что значит поскольку 1 VLAN не видит ни одного из провайдеров...
Комментарий
Алексей, Решается все гораздо проще без маркировки трафика в firewall как такового (именно при включении в роутинге маркеров - у меня отваливалось все). Так вот: провайдеров можно заводить как угодно (PPPoE, DHCP, Statica). Нужно только вручную указать роутинг и выставить Distance. Все, после этого все работает. Для того, что бы на роутер можно было зайти по внешним IP нужно указать маркировку трафика для входящего на внешние IP трафик с привязкой к провайдеру. Львиную долю того, что тут написано - можно просто выкинуть. Могу, для примера, выложить свои настройки. 0 chain=input action=mark-connection new-connection-mark=Miratel -> Input passthrough=no dst-address=x.x.x.x in-interface=WAN-2 log=no log-prefix="" 1 chain=output action=mark-routing new-routing-mark=Miratel passthrough=yes connection-mark=Miratel -> Input log=no log-prefix="" 2 chain=input action=mark-connection new-connection-mark=Soborka -> Input passthrough=no dst-address=x.x.x.x in-interface=WAN-1 log=no log-prefix="" 3 chain=output action=mark-routing new-routing-mark=Soborka passthrough=yes connection-mark=Soborka -> Input log=no log-prefix="""
Комментарий
Впервые столкнулся с настройкой Микротик ОС, необходимо один диапазон локальных IP выпускать через 1 шлюз (модем), а другой диапазон - через второй шлюз (модем). Как это все попроще организовать?
Комментарий
Возникла проблема. Схеме мешают работать как положено дефолтные маршруты. Удалить или предотвратить их создание не могу.Дело в том, что в отличии от описанной выше схемы, у меня не PPPoE соединения а два шлюза (DSL модема), и как только я присваиваю интерфейсу IP адрес, автоматом создается дефолтный маршрут. Никаких галочек, отменяющих их создание там нет. Как избавиться, в таком случае, от дефолтных маршрутов?
Комментарий
Алексей, Алексей, огромное спасибо за статью! Настроил у себя сетку с выходом на 2 провайдера, работает, хотя узнал о Mikrotik RouterOS всего пару недель назад. Всем оставившим свои комментарии, также спасибо, очень помогло для понимания работы маршрутизатора."
Комментарий
Алексей, Вы имеете дефолтные маршруты 0.0.0.0 ?"

Возврат к списку


Популярное оборудование

Авторизуйтесь, чтобы добавить отзыв

x