Привет, Хабр! Хочу поделиться своей реализацией, видением 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
/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 Необходимо создать таблицы маршрутизации
Это необходимо, чтобы трафик от каждого провайдера был в своей таблице маршрутизации, и куда мы могли бы отправлять определённых пользователей.
Дополнительных таблиц нам нужно столько, сколько будет провайдеров.
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 для правильного прохождения траффика
На каждого провайдера нам необходимо добавить несколько правил, для того, чтобы роутер мог "ответить" правильно, то есть если трафик пришел с первого провайдера, с первого интерфейса, то роутер ответит провайдеру с этого же интерфейса.
Давайте разберем каждого провайдера по отдельности.
первое правило первого провайдера ISP1 (он же LTE)
Этим правилом мы говорим - из интерфейса WAN-LTE (у нас это первый провайдер ISP1) все пакеты маркируй "con-isp1". Название маркировки "con-isp1" - произвольное, пишите его так, чтобы вы понимали, откуда идут эти пакеты, это так-же будет необходимо при построении QOS
Второе правило первого провайдера ISP1
Вот тут хочу заострить особое внимание на конструкцию правила. Тут роутеру мы говорим, все пакеты, которые имеют маркировку con-isp1 (мы создали ее первым правилом) не из Interface list WAN отправляй в таблицу rtab-ISP1 (на самом деле дай метку маршрута, но смысл не изменится)
Во многих инструкциях такой конструкции я не встречал, и с их примерами у меня не работало.
Третье правило первого провайдера ISP1
Здесь все просто, указываем адрес источника наш ip адрес и направляем его в таблицу rtap-ISP1
Важное дополнение, на скриншоте указан комментарий ISP1-out, по этому комментарию исходящий адрес подставляется автоматически с помощью скрипта в DHCP клиенте.
Остальные провайдеры настраиваются точно так же.
В целом три провайдера настроены и работают, но между ними нет ни резервирования, ни переключения, в случае когда линк есть, но интернета нет. Решить эту проблему в некоторых случаях может помочь опция chek gateway в настройках маршрута, или так называемый файловер, его мы настроем в следующей части статьи.
Так как тема QOS и Балансировки достаточно большая и тесно связаны, то продолжение их будет в следующей части статьи.
Комментарии (8)
imintsev
03.12.2024 15:50Только есть замечание.
При публикации гайдов по микроту было бы хорошо показывать не только скриншоты, но и команды терминала.
Зачастую их читать удобнее
lantonov
Ееть одна интересная вещь что на LTE сеть динамический меняется взамимости от загрузки и ещё адрес может прилететь с маской /32 а шлюз вообще виртуальный например 10.64.64.0 и что ты сним будешь делать
sh_023 Автор
Это не совсем в тему поста, но отвечу на ваш вопрос, если происходит так, что прилетает /32 маска, а шлюз виртуальный, и если это замечено за провайдером, то в таком случае ЛТЕ модем через ppp соединение, да еще один нат к сожалению, и все будет работать.
а так, пост о другом немного)
lantonov
Я просто говорю то об этом так как для стабильности работы модема желательно всегда убирать его nat чтобы он был ppp и почти всегда используется он ppp
lantonov
А об отвале можно узнать по Lcp так как там есть время жизни и если оно превышает то значит он завис