08 ноября 2017

Два интернет провайдера на Mikrotik RouterOS

В этой статье рассмотрим настройку роутера компании Mikrotik, с RouterOS на борту, для одновременной работы с двумя провайдерами.
Устройства от латвийской компании MikroTik — гибкие в настройке, функциональные решения для домашних и корпоративных сетей. Операционную систему RouterOS можно так же установить на различные аппаратные платформы, включая x86.
Дано:
  • локальная сеть 192.168.1.0/24 — роутер выступает в роли DNS сервера и шлюза. Адреса в локальной сети присваиваются вручную;
  • сеть провайдера 1.1.1.0/29, шлюз — 1.1.1.6, DNS1 — 1.1.10.1, DNS2 — 1.1.10.2;
  • сеть провайдера 1.1.2.0/29, шлюз — 1.1.2.6, DNS1 — 1.1.10.1, DNS2 — 1.1.10.2
Рис.1 - Схема сети
Схема сети
Настраивать будем на компьютере с адресом в локальной сети 192.168.1.10. Для примера возьмем роутер модели RB951G-2HnD.

Порт 1 и 2 будем использовать под интернет провайдеров, а остальные под локальную сеть.
Теперь Вы можете подсоединить все патч-корды с соответствующими портами. Я же предпочитаю первоначальную настройку производить на отдельном ноутбуке, соединив LAN порт ноута с пятым портом роутера. Подключаться будем через программу Winbox. Скачать можно с самого роутера, введя в браузере адрес по умолчанию «192.168.88.1» или с mikrotik.com. Сразу можно скачать обновление для RouterOS — ветки Bugfix only. На момент написания статьи это была версия 6.34.6 (правки при 6.39.3).
Итак, запустим Winbox при подключеном роутере.
На вкладке Neighbors автоматически выполняется поиск всех видимых устройств на RouterOS в сети. Подключаемся по mac-адресу к найденному устройству пользователем admin с пустым паролем.
winbox_neighbors
После входа появится окно описания конфигурации по умолчанию. Нажимаем «Remove Configuration»
reset-configuration
Описание конфигурации по умолчанию

Далее как минимум необходимо задать пароль для пользователя. Рекомендуется создать своего пользователя, а встроенную учетную запись отключить, что мы и сделаем. Идём в меню System -> Users и добавляем пользователя, нажав на плюс (+). Name — на Ваш выбор, Group — права пользователя ставим в full, Password — на Ваш выбор. Также можно перечислить адреса, с которых разрешено подключаться к роутеру, в опции Allowed Address. Жмём ОК. Встроенную учетную запись отключаем или удаляем нажав на (x) или (-) соответственно. Переподключаемся под новым пользователем.
Управление учётными записями
Управление учётными записями


Теперь определимся с сетевыми интерфейсами, перейдя в меню Interfaces. Как было описано выше, первый и второй порт роутера используем под wan порты, а остальное выпускаем в локальную сеть, указывая для портов с 3го по 4й в поле Master Port 5й порт. Для удобства к названию портов были приписаны описания (ether1-wan1, ether2-wan2, ether3-slave, ether4-slave, ether5-lan-master). Последний порт был выбран мастером не случайно. Если возникнет необходимость добавить еще один wan интерфейс, то мы просто уберем зависимость третьего порта от мастер-порта и настроим его под свои нужды. Необходимость переназначать мастер порт не возникнет, в отличии от варианта с присвоением роли мастер-порта третьему порту роутера.
Настроим интерфейсы


При необходимости использовать wi-fi-интерфейс потребуется создать bridge интерфейс и добавить в него мастер-пор ethernet интерфейсов и wi-fi интерфейс  (на своём оборудовании wi-fi я отключил, так как в нём не было необходимости). В данной статье используется так называемая switch-коммутация портов, которая обладает большей производительностью по сравнению с bridge-коммутацией. В приведенном роутере используется один switch-микроконтроллер на 5 портов. При наличии более одного switch-контроллера на каждый контроллер назначается один мастер порт, затем они объединяются в bridge, если есть необходимость объединить их в одно пространство. Подробнее о различиях способов коммутации портов можно прочитать здесь. Ниже приведен пример создания bridge-интерфейса и добавление в него мастер-интерфейса.
Создадим bridge- интерфейс
Создание bridge- интерфейс
Добавим порт в bridge-интерфейс
Добавление порта в bridge-интерфейс


Теперь укажем ip адреса для интерфейсов. Переходим в меню IP -> Addresses и добавляем адреса, вписывая его в поле Address с маской и выбирая интерфейс в поле Interface. Адрес сети в поле Network можно не вводить т.к. он заполнится автоматически, но при изменении адреса не забудьте проверить это поле. При объединении свитч-группы портов и wifi интерфейса в bridge — ip адрес присваивается на bridge интерфейс. В моём случае адрес присваивается мастер-порту.
Адрес для wan1
Адрес для wan1
Адрес для wan2
Адрес для wan2
Адрес роутера в локальной сети


Адреса присвоены
Т.к. у нас будет два wan-интерфейса и статические адреса, настраиваемые на интерфейсах вручную, то все маршруты мы напишем вручную. В случае настройки wan-интерфейса, например, на ppp подключение, то не забудьте убрать галочку ‘Add Default Route’.
В меню IP-> DNS укажем DNS-серверы и поставим галочку на Allow Remote Requests (если оно Вам надо).  Тут же можно создать запись с именем нашего роутера, предварительно изменив его (имя) в меню System -> Identity.
Настроим DNS
Настроим DNS


В случае классической настройки роутера с одним ISP WAN далее следовало бы указать шлюз, добавить стандартные правила Firewall’а и правило NAT для преобразования адресов. Но так как мы имеем дела с двумя ISP, то следует сначала настроим Firewall и NAT, а так же пометим интерфейсы и трафик для корректной маршрутизации. Для каждого wan интерфейса создаём по правилу в IP -> Firewall на вкладке NAT. В поле Chain на вкладке General выбираем srcnat, Src.Address — пишем локальную сеть с маской, Out. Interface — выбираем wan интерфейс. Если провайдер выдает динамически изменяющийся ip адресс, то на вкладке Action в поле Action выбираем masquerade. При статическом IP адресе, как в текущем примере, выбираем Action — src-nat и в поле To Address пишем адрес wan интерфейса. Нажимаем ОК.


Теперь переходим на вкладку Filter Rules и добавляем набор стандартных правил. В графической оболочке принцип настройки такой же как и при добавления правила NAT — на вкладке General выбираем параметры и цепочку, а на вкладке Action выбираем действие. Ниже привожу набор команд для термина, из которых понятно что и как настроить в каждом правиле. Так же можно скопировать и выполнить в окне терминала (кнопка New Terminal) одним списком.

Для установленных и связанных соединений в цепочке forward добавлено правило fasttrack connection. Это правило позволит разгрузить процессор маршрутизатора, отключив (пропустив) дополнительную обработку пакетов в установленных и связанных соединениях. Подробнее на MikroTik Wiki.
В рассматриваемом примере в локальной сети находится сервер, с которым будет вестись работа извне. Для выполнения этой задачи необходимо чтобы ответы на запросы, пришедшие по какому-либо из двух wan-интерфейсов, отправлялись на тот же самый интерфейс.
Для выполнения поставленной задачи необходимо пометить соединения с провайдером и после направлять трафик по соответствующим маршрутам, а так же создать сами маршруты.
Сразу добавим статические маршруты до шлюзов каждого из провайдера, плюс по маршруту на провайдера для соединений с метками маршрутизации. Маршрут до гейтов провайдеров можно указать одним правилом с одним на всех значением Distance, таким образом получив своеобразную балансировку нагрузки по wan интерфейсам. [По резервированию и Check Gateway чуть позже]
Маршрут до гетов провайдеров. Балансировка нагрузки
Маршрут до гейтов провайдеров. Балансировка нагрузки
В каждом маршруте для помеченных соединений я указывал IP адреса интерфейсов wan1 и wan2. В зависимости от типов настроенных соединений для wan’ов можно указывать IP интерфейса или сам интерфейс. Для статичных адресов метод с интерфейсами не заработал, так как адреса статикой были присвоены на бродкастные интерфейсы и с другой стороны wan интерфейса находятся медиаконвертеры провайдеров без proxy-arp на интерфейсах. В поле Routing Mark выбираем соответствующую метку.
Маршрут для помеченных пакетов через wan1
Маршрут для помеченных соединений через wan1
Маршрут для помеченных пакетов через wan2
Маршрут для помеченных соединений через wan2


В IP -> Firewall на вкладке Mangle создаём правила для двух провайдеров, которые будут помечать соединения идущие по цепочке forward с wan интерфейсов. На вкладке General в поле Chain выбираем forward, в поле In. Interface выбираем ether1-wan1, затем на вкладке Action выбираем mark connection, в поле New Connectio Mark пишем произвольную метку, например wan1-con. Аналогичным образом создаём правило для wan2.
Помечаем соединения для wan1
Помечаем соединения для wan1
Помечаем соединения для wan2
Помечаем соединения для wan2
Следом создаем еще два правила на вкладке Mangle — для помеченных ранее соединений указываем метки для маршрутизации, чтобы помеченные ранее соединения продолжали работать через wan интерфейсы, через которые были установлены (соединения). На вкладке General в поле Chain выбираем prerouting, в поле Src.Address пишем 192.168.1.0/24 (если за маршрутизатором несколько подсетей, то удобно занести их в Firewall->Address Lists и затем указать созданый лист на вкладке Advanced в поле Src. Address List), в поле Connection Mark выбираем метку нашего соединения — wan1-con. Переходим на вкладку Action, в поле Action выбираем mark routing, в поле New Routing Mark пишем wan1-rt. Аналогично создаем правило для wan2, выбирая wan2-con и вписывая wan2-rt для Connection Mark и New Routing Mark соответственно.
mikrotik_mark_rt_wan1
Добавляем метку маршрутизации для соединений через wan1
mikrotik_mark_rt_wan2
Добавляем метку маршрутизации для соединений через wan2

Теперь подобным образом создаём пары правил для каждого интерфейса, чтобы корректно обрабатывать соединения извне с самим маршрутизатором (например SSH, WinBox, VPN). Для каждого wan выбираем Chain — input, Dst.Address — ip адрес wan интерфейса, In/Interface — wan интерфейс, Action — mark connection, New Connection Mark — текстовую марку, уникальную для каждого правила.


Теперь похожим образом добавляем помеченным маршрутам метку маршрутизации. Цепочка output, Connection Mark — присвоенная метка правилом выше для wan интерфейса. Action — mark routing, New Routing Mark — метка для наших маршрутов через wan интерфейсы.

Пометим собственные соединения маршрутизатора (DNS запросы от маршрутизатора к внешним серверам, проверка пакетов в System->Packages). Цепочка output, Src.Address — адрес wan интерфейса, Action — mark connection, New Connection Mark — уникальная текстовая метка для каждого wan интерфейса.


И добавляем метку маршрутизации. Цепочка output, Src.Address — адрес wan интерфейса, Connection Mark — присвоенная метка правилом выше для wan интерфейса. Action — mark routing, New Routing Mark — метка для наших маршрутов через wan интерфейсы.


Вот и всё. Выпустив роутер в сеть проверяем доступность шлюзов провайдера — посмотрев на список маршрутов в колонке Gateway к адресу шлюза будет дописано reachable. Так же в списке появятся динамически созданные маршруты. Проверяя работу из локальной сети можно отключая интерфейсы wan в MikroTik’е или просто попеременно выдергивать по одному проводу из wan’ов. Активные соединения, установленные ранее через отключенный wan будут теряться, но перезапустив соединение (например обновив страницу в браузере) оно будет установлено через оставшийся активный wan.
В приведенном примере оба wan порта работают в подсетях одного провайдера и DNS серверы для подсетей общие. Если провайдеры разные, то скорее всего потребуется указать через какой интерфейс ходить до конкретного DNS сервера, так как к каждому DNS серверу может быть разрешен доступ только из сети соответствующего ему повайдера. Таким же образом можно принудительно пускать трафик до конкретных ресурсов через конкретный wan (например, если до ресурса во внешней сети соединение оптимально по скорости/стабильности через конкретного провайдера, или просто только из сети/ip-адреса этого провайдера разрешен доступ).
Перейдем в IP -> Firewall и на вкладке Address Lists создадим для каждого wan по группе адресов (over-wan1 и over-wan2) попутно добавляя необходимые адреса или подсети. Каждый последующий элемент добавляется с выбором группы адресов из списка в поле Name. Допустим есть некий сервис по адресу 110.110.110.1 до которого минимальные задержки у провайдера на wan1, а для сервиса по адресу 220.220.220.2 такая же история, но на wan2. В группу over-wan1 мы добавляем 110.110.110.1, а в over-wan2 добавляем 220.220.220.2. Так же в соответствующие группы нужно добавить адреса DNS серверов провайдера, если провайдеры разные. В приведенном примере добавляем только адреса сервисов.
Создаём списки. Добавляем адреса
Создаём списки. Добавляем адреса
Теперь переходим на вкладку Mangle и создаём по правилу на каждый список чтобы пометить маршруты. На вкладке General поле Chain = prerouting и внизу ставим галочку на Connection State — new. Далее на вкладке Advanced в поле Dst. Address List выбираем список адресов (over-wan1) и на вкладке Action в поле Action выбираем mark routing, в поле New Routing Mark выбираем метку (wan1-rt). Таким же образом создаём правило для следующего списка.
mikrotik_addr_list_mang01
mikrotik_addr_list_mang02
mikrotik_addr_list_mang03
Теперь можно проверить доступность ресурсов из адресных списков запустив трассировку до узла. Соединение должно идти через шлюз определенного для выбранного wan провайдера.
Вот  и всё на этом. Удачи Вам!

2 комментария:

  1. Спасибо, очень здорово всё написано

    ОтветитьУдалить
  2. Ежедневник Админа: Два Интернет Провайдера На Mikrotik Routeros >>>>> Download Now

    >>>>> Download Full

    Ежедневник Админа: Два Интернет Провайдера На Mikrotik Routeros >>>>> Download LINK

    >>>>> Download Now

    Ежедневник Админа: Два Интернет Провайдера На Mikrotik Routeros >>>>> Download Full

    >>>>> Download LINK TK

    ОтветитьУдалить