Еще один MultiWan на Mikrotik ROS7 с Балансировкой и QOS. Часть 1
Привет, Хабр! Хочу поделиться своей реализацией, видением MultiWan на оборудовании компании Mikrotik.
Какие вопросы решает эта инструкция.
Горячий резерв интернета, перестал работать один, подхватит другой.
Разделение пользователей / сетей на провайдеров.
Балансировка трафика (все провайдеры активны).
Qos, как управлять скоростью абонентов и определенным траффиком, с помощью Queue Tree и Simple Queue
Для кого эта инструкция
Вы уже познакомились с Router OS, умеют настраивать NAT и писать маршруты, но mangle для вас «темный лес».
Перебрали все гайды по MultiWan, но все равно, что то не понятно.
Исходные данные
Первый провайдер (ISP1) — мобильны интернет через другой Mikrotik по технологии Passthrough LTE (передача Ip адреса от модема на основной роутер)
Второй провайдер (ISP2) — проводной интернет, имеющий «частный» адрес
Третий провайдер (ISP3) — временный провайдер (доп канал для конференции, мероприятий и т.д.)
Четвертый, пятый, шестой провайдер — при необходимости
В качестве провайдера так же может быть использовано VPN подключение, для того чтобы маршрутизировать определенные ресурсы, или сети, как пример — сеть бухгалтерии должна иметь выход в интернет, через центральный офис.
В качестве роутера может быть любой роутер с ROS7, c необходимой вам производительностью и количеством портов. Почему LTE является основным подключением, а проводной резервным — особенность здания, в котором это осуществлено. Все скриншоты с «боевой» машины.
Что именно будем реализовывать:
Первая группа пользователей ходит в интернет сразу по двум провайдерам ISP1 и ISP 2 с балансировкой по соединениям
Вторая группа пользователей ходит в интернет только через ISP3
Qos необходимых провайдеров и пользователей, в нашем случае это первая группа пользователей
Роутер адекватно выпускает свой трафик из любого подключения, корректно работает DSTNAT
Настраивать все бы будем на дефолтном конфиге от Mikrotik, в целом он не плохой, но не идеален, fastrack отключен.
1. Подготовка провайдеров
1.1 Определимся куда у нас будут подключены провайдеры и занесем их в лист WAN, это необходимо, как в целях безопасности, так и для правильной маршрутизации.
1.2.1 Настроим адреса или получим DHCP от провайдеров
Добавляем скрипт на DHCP, это нужно потому что, адрес мы от LTE получаем каждый раз разный, соответственно меняется и шлюз провайдера
Default Route можно не добавлять, мы его получим скриптом, но можно и включить, главное указать его стоимость, иначе он будет основным
1.2.2 Маленькая хитрость с DHCP
Добавляем скрипт в DHCP клиента
/ip/route/set gateway=$"gateway-address" numbers=[find comment=ISP-1-GW]
/ip/firewall/nat/set to-addresses=$"lease-address" numbers=[find comment=ISP1]
/ip/firewall/mangle/set src-address=$"lease-address" numbers=[find comment=ISP1-out]
/interface/l2tp-client/set src-address=$"lease-address" numbers=[find comment=ISP1]
/interface/l2tp-client/set src-address=$"lease-address" numbers=[find comment=VPS-LTE]
Описание скрипта
В IP/route мы ищем запись, у которой есть комментарий ISP-1-GW, и в качестве Gateway подставляем Gateway который нам дает DHCP
В Firewall Nat точно так же ищем комментарий ISP1 и в конструкции SRC-NAT в поле to adreess ставим адрес получаемый от DHCP
В Firewall Mange ищем комментарий ISP1-out и в эту запись подставляется адрес из DHCP, об этом подробнее в части Mangle ниже
Последние две записи нужны для подключение LTP клиентов через конкретно этого провайдера, поиск осуществляется так же по комментарию
1.3 Необходимо создать таблицы маршрутизации
Это необходимо, чтобы трафик от каждого провайдера был в свое таблице, и куда мы могли бы отправлять определённых пользователей.
Дополнительных таблиц нам нужно столько, сколько будет провайдеров.
Находится в Routing — table
1.4 Зададим необходимые маршруты, где ISP1 будет с дистанцией 1, ISP2 будет с дистанцией 2, ISP3 будет с дистанцией 3, это видно на следующей картинке
1.4.4 Дублируем каждый маршрут в свою таблицу. Это необходимо для того, чтобы в в своей таблице, свой провайдер был «дефолтным»
Для маршрутов которые работают через DHCP не забываем указать комментарий, именно по нему будет осуществляться поиск записи подставка правильного адреса шлюза.
Собираем все маршруты
Что мы тут видим?
От каждого провайдера есть «нули» в таблице main и эти же маршруты присутствуют в своих таблицах rtab.
2. NAT
Мы не будем использовать action masquerade, вместо него мы будем использовать SRC-NAT
третий провайдер спрятался ниже, так как был добавлен значительно позже других
Важное замечание, необходимо так же указывать комментарии к правилам, в одном случае это делаем фаервол более читаемым, а во втором у нас есть скрипт в DHCP клиенте, который будет подставлять soure address в нужное поле, при получении нового адреса
На самом деле, если вдруг у вас все подключения по DHCP, или вы вдруг таскаете микротик везде с собой, то можно заранее указать все комментариях nat, mangle route, и скрипты в DHCP клиентах.
3. Магический Mangle для правильного прохождения траффика
На каждого провайдера нам необходимо добавить несколько правил, для того, чтобы роутер мог «ответить» правильно, то есть если трафик пришел с первого провайдера, с первого интерфейса, то роутер ответит провайдеру с этого же интерфейса.
Всего 9 правил, по 3 правила на провайдера.
Давайте разберем каждого провайдера по отдельности.
первое правило первого провайдера ISP1 (он же LTE)
Этим правилом мы говорим — из интерфейса WAN-LTE (у нас это первый провайдер ISP1) все пакеты маркируй «con-isp1». Название маркировки «con-isp1» — произвольное, пишите его так, чтобы вы понимали, откуда идут эти пакеты, это так-же будет необходимо при построении QOS
Второе правило первого провайдера ISP1
Второе правило
Вот тут хочу заострить особое внимание на конструкцию правила. Тут роутеру мы говорим, все пакеты, которые имеют маркировку con-isp1 (мы создали ее первым правилом) не из Interface list WAN отправляй в таблицу rtab-ISP1 (на самом деле дай метку маршрута, но смысл не изменится)
Во многих инструкциях такой конструкции я не встречал, и с их примерами у меня не работало.
Третье правило первого провайдера ISP2
третье правило
Здесь все просто, указываем адрес источника наш ip адрес и направляем его в таблицу rtap-ISP1
Важное дополнение, на скриншоте указан комментарий ISP1-out, по этому комментарию исходящий адрес подставляется автоматически с помощью скрипта в DHCP клиенте.
Остальные провайдеры настраиваются точно так же.
В целом три провайдера настроены и работают, но между ними нет ни резервирования, ни переключения, в случае когда линк есть, но интернета нет. Решить эту проблему в некоторых случаях может помочь опция chek gateway в настройках маршрута, или так называемый файловер, его мы настроем в следующей части статьи.
Так как тема QOS и Балансировки достаточно большая и тесно связаны, то продолжение их будет в следующей части статьи.