Попробуем накидать шпаргалку по настройке резервирования каналов. Как-то так сложилось, что задач балансировки подключений к интернету возникало нечасто, а вот резервирования – на каждом шагу. Точнее, требовалось “чтобы всё работало” и при этом ширины основного провайдера вполне хватало на нужды выхода в интернет. Кроме того, при использовании балансировки регулярно возникают сложности с тем, что запросы наружу почему-то прилетают с разных адресов. Почему – непонятно (#сарказм). Стало быть, будем делать всё же failover, а не balancing.

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

Подробнее? Сейчас всё расскажу. Для начала, разумеется, надо настроить адреса на интерфейсах, которые будут смотреть наружу. Если настройки вы получаете исключительно по DHCP, то не забываем отключить параметр “Add default route”. Хотя я в этом случае поискал бы провайдера, который способен выдать статичный адрес и создавать мне лишних проблем. Да, я знаю про всякие PPPoE, но на дворе 21 век и найти внятного провайдера всё проще. Плюс в базовую настройку я бы добавил мысль объединить WAN-интерфейсы в группу. Как минимум, это упрощает правило NAT. Как максимум – уменьшает общее число правил в файрволе, что в свою очередь ускоряет работу железки.

Далее, нужно настроить маркировку траффика. Это гарантирует, что роутер будет отвечать с того интерфейса, на который пришел запрос. Если мы просто выходим в интернет, это быть может неактуально. А вот если есть какие-то сервисы внутри сети или мы поднимаем туннели, не стОит вводить в заблуждение удаленный роутер отправляя пакеты откуда придётся. Итак, заходим в раздел IP -> Firewall -> Mangle и создаем правила следующего содержания для каждого из провайдеров:

Маркируем входящий трафик

General -> chainprerouting
General -> In. InterfaceWAN-1
General -> Connection Markno-mark
Action -> Actionmark connection
Action -> New Connection MarkFrom-WAN-1
Action -> Passthroughdisable

Направляем ответный транзитный трафик в нужную таблицу маршрутизации

General -> chainprerouting
General -> In. Interface List! WAN
General -> Connection MarkFrom-WAN-1
Extra -> Dst. Address Type! local
Action -> Actionmark routing
Action -> New Routing MarkTo-WAN-1
Action -> Passthroughdisable

Отправляем ответный локальный трафик в нужную таблицу маршрутизации

General -> chainoutput
General -> Connection MarkFrom-WAN-1
Extra -> Dst. Address Type! local
Action -> Actionmark routing
Action -> New Routing MarkTo-WAN-1
Action -> Passthroughdisable

Осталось настроить таблицу маршрутизации. Для начала требуется добавить маршруты до высокодоступных серверов вне нашей сети. Например, DNS’ы Google или же любые другие. Главное, чтобы они были доступны чуть более, чем всегда и не принадлежали нашей сети. Кроме того, нужно проверить, что значение Scope равно 10, вместо 30 по умолчанию. Так мы говорим, что это типа Connected Route и приоритет у него повыше.

Dst. Address8.8.8.8 (или любой другой)
Разные для разных каналов!
GatewayШлюз провайдера
TypeОставляем “unicast”
Distance1
Scope10
Target Scope10

Добавим рекурсивный маршрут наружу с разным весом

Dst. Address0.0.0.0/0
Gateway8.8.8.8 (адрес из предыдущего шага)
Check Gatewayping (проверяем доступность высокодоступного хоста)
TypeОставляем “unicast”
Distance1 для основного провайдера и 2 для резервного
Scope30
Target Scope10

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

Dst. Address0.0.0.0/0
GatewayШлюз провайдера
TypeОставляем “unicast”
Distance1
Scope30
Target Scope10
Routing MarkTo-WAN-1 (из правил раздела mangle)

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

Добавить комментарий