MultiWAN-v2
Настройка нескольких провайдеров PPP
Я настоятельно рекомендую сначала прочитать, далее вникнуть, потом понять и только после того, как у вас вся картина будет нарисована в голове, приступить к настройке.
Это вторая часть статьи о подключении нескольких провайдеров, а именно разборка частных случаев.
Перед прочтением настоятельно рекомендую ознакомиться с основной частью.
Я не буду описывать некоторые очевидные нюансы которые описывал в основной части.
Начнём с чистого листа.
Вспоминается мне история, о похабном поведении одного из участника хабра, который меня как то раз после статьи упрекал в том, что я использую 192.168.0.0 сеть, он не как не мог понять почему я взялся за сложный проект с такой сетью (говорил, что надо было переделать сеть), и я надеюсь мне не придётся объяснять, что такие сети до сих пор используются в корпоративных сетях, «да это неправильно, да это не удобно», но как есть.
Провайдер через PPP
Первый пример будет, о том когда вам провайдер предоставляет доступ в интернет, через какой либо туннель основанный на PPP, это может быть PPPoE, PPTP или L2TP.
Единственная особенность, заключается в том, что для подключения PPPoE вам нечего делать не надо так как он использует ethernet и вы явно указываете на каком интерфейсе поднимать клиента.
Интернет через PPPoE
Тут всё очень просто, поднимаем клиента.
Проверяем, что нам выдал провайдер
И первая «проблема как многим кажется, это то, что адрес который назначил себе PPPoE сервер в первую очередь лежит в той же подсети, что и наша локальная сеть, а во вторых иногда встречается, что адрес шлюза может меняться, и нам он неизвестен.
Обходиться данная проблема очень просто. Так как соединение PPP, то некто нам не вправе запретить указать любой адрес удалённой стороны. Естественно руками мы задать его не можем на интерфейсе, так нам придётся указать и адрес наш, но он может быть динамический. Хорошим кейсом использовать профиль.
Единственной особенностью данного профиля, мы указываем какой адрес будет использоваться для достижения удалённой стороны.
Теперь назначим данный профиль на наш PPPoE клиент
Передёрнем наш интерфейс, чтобы произошли изменения на основании профиля и видим, что теперь у нас данных шлюз не лежит в присоединённой сети и мы можем его использовать без каких либо оговорок в маршрутизации как шлюз и самое главное он всегда статичный.
Единственное, что такой адрес не будет отвечать на пинги, но нам этого и не надо.
Теперь если необходимо отправить трафик через первого провайдера нам достаточно отправить в маршруту которого шлюз 172.31.1.1
На этом пока всё.
Интернет через L2TP
В нашем случае нам провайдер выдаёт настройки по DHCP и для доступа в интернет, нам необходимо поднять дополнительно L2TP туннель.
Настроим DHCP клиента.
С какими проблемами мы можем столкнутся при таком типе подключения при реализации multiwan.
- Должны использоваться DNS данного провайдера.
- Мы должны чтобы туннель строился обязательно через второго провайдера и адрес туннеля скорее всего лежит за пределами DHCP шлюза, значит нужен дефолтный маршрут.
С ДНС в версии 6.47 будет значительно проще так как появился форвард. Но пока она не long-term мы данную реализацию использовать не будем.
Сначала необходимо определиться с DNS
Посмотри какой DNS сервер нам выдал провайдер
Если бы ДНС сервер был из той же сети, что и DHCP было бы значительно проще.
Наша задача сделать так, чтобы запросы к DNS шли через второго провайдера, так как через других провайдеров они могут не отвечать на запросы или отдавать другие данные при ответе.
Первое что приходит в голову, «а давайте сделаем маршрут до ДНС серверов «, Идея отличная ровно до того момента пока вам не прилетит другой DNS сервер, второй момент адрес шлюза может поменяться и статический маршрут мало чем поможет.
Решать мы будем простеньким скриптом и VRF, я не буду углубляться в нюансы в VRF просто обозначим, что это таблица маршрутизации которая изолированная от всех остальных.
Укажем, что наш DHCP клиент должен устанавливать маршрут по умолчанию
Видим, что два маршрута в таблице VRF
Вывод из WinBox
Случающим шагом нам, необходимо сделать так, чтобы весь трафик который идёт на ДНС сервера второго провайдера, уходили через второго провайдера, т.е уходили через VRF таблицу.
И так, В первую очередь нам надо сделать loopback и создать псевдо-дефолтный маршрут для чего он нужен читайте основную статью.
Теперь нам необходимо создать правило в mangle, чтобы трафик который уходит с маршрутизатора до определённых хостов из адрес листа, уходил через VRF
Другими словами, когда пакет будет уходить с маршрутизатора до ип адреса перечисленного в листе VRF_ISP2 он будет отправлен в VRF_ISP2
А теперь нам необходимо как то заполнить данных лист, будем использовать DHCP скрипты, очень маленький и простой скрипт.
Смысл примерно такой, получаем значения DNS серверов которые выдал DHCP сервер, удаляем текущие записи и устанавливаем новые. Да конечно можно допилить до того, чтобы сначала была проверка, если такая запись в листах существует то нечего не делать, чтобы не было лишней итерации записи в память, но это на ваше усмотрение.
Теперь нам необходимо создать запись в адрес листе для vpn соединения, адрес для подключения VPN у нас vpn.isp.ru
Далее нам необходимо указать, что если трафик уходит до адрес листа vpn.isp.ru отправляем его в VRF
Следующим этапом необходимо точно также подготовить профиль для l2tp клиента по аналогии с PPPoE
Обратите внимание теперь мы используем уже другой адрес
Создать L2tp клиента
А дальше мы работает с этими интерфейсами точно также как из основной статьи, единственно что можно пренебречь сетями, а маркировать весь пришедший на интерфейс трафик.
Рекурсивная маршрутизация
Поэтому не буду давать в подробности, а только покажу наглядно.
Создаём два маршрута через двух разных провайдеров используя IP адреса шлюзов которые мы сами назначили
Создаём рекурсию для первого провайдера с полным замещением в случае падения
Multi WAN¶
В данной инструкций рассматривается:
Настройка переключения на резервные WAN-каналы при отказе основного канала
Балансировка трафика между WAN-каналами
Настройка переключения на резервные WAN-каналы при отказе основного канала¶
Функционал переключения на запасные каналы при отказе основного канала также известен как Connection Failover. Для его настройки необходимо выполнить следующие действия.
Настройка WAN-адаптеров
В нашем примере, устройство TING подключается к сети Интернет с помощью двух адаптеров — WAN и WAN2. Для адаптеров используются следующие настройки:
IP-адрес шлюза, достижимого через адаптер
Эти настройки нужно прописать в свойствах адаптеров в разделе Интерфейсы.
Настройки для адаптера WAN:
Настройки для адаптера WAN2:
Настройка шлюзов
Пройдите в раздел Система -> Шлюзы -> Все. Модифицируйте имеющиеся записи о шлюзах следующим образом:
Шлюз по умолчанию
Данное подключение будет основным, другие будут резервными
Отключить мониторинг шлюзов
Флаг не установлен
Убедимся, что мониторинг включен
В качестве сервера для пропинговки мы используем один из DNS-серверов от Google
Пометить шлюз как недоступный
Флаг не установлен
Шлюз по умолчанию
Флаг не установлен
Данное подключение будет резервными
Отключить мониторинг шлюзов
Флаг не установлен
Убедимся, что мониторинг включен
В качестве сервера для пропинговки мы используем один из DNS-серверов от Google
Пометить шлюз как недоступный
Флаг не установлен
После осуществления настроек, мы имеем две записи о шлюзах, которые выглядят следующим образом:
Расширенные настройки шлюзов
Для каждого шлюза могут быть настроены расширенные опции, которые меняют дефолтное поведение / пороги значений, например:
Пороговое значение задержки
Наименьшее и наибольшее пороговые значения для задержки в миллисекундах.
Пороговые значения потери пакетов
Наименьшее и наибольшее пороговые значения для потери пакетов в процентах.
Как часто посылается мониторинговые пакеты в секундах
Период времени в секундах после неудачного ICMP-запроса, по истечении которого шлюз считается недоступным
Количество ответных пакетов, используемых для вычисления среднего значения задержки.
Среднее количество потеряных пакетов
Количество мониориговых пакетов для вычисления среднего значения потерянных пакетов.
Задержка утраченного опроса
Задержка после которой вычисляется потеря пакетов.
Настройка шлюзовой группы
Пройдите в раздел Система -> Шлюзы -> Группа и кликните на кнопку Добавить группу в верхнем правом углу страницы. Используйте следующие настройки:
Кликните на кнопку Применить изменения.
Мы использовали потерю пакетов в качестве тригера для переключения на резервный интерфейс. Можно использовать и другие настройки:
Срабатывает при 100% потере пакетов.
Срабатывает, когда потеря пакетов превышает установленное пороговое значение.
Срабатывает, когда задержка превышает установленное пороговое значение.
Потеря пакетов и высокая задержка
Срабатывает, когда потеря пакетов превышает установленное пороговое значение или когда задержка превышает установленное пороговое значение.
Настройка межсетевого экрана
Для правильной работы межсетевого экрана необходимо модифицировать его настройки следующим образом.
Пройдите в раздел Межсетевой экран -> Правила, вкладка LAN.
Найдите преднастроенное правило Default allow LAN to any rule, откройте его на редактирование и в поле Шлюз укажите ранее созданную шлюзовую группу (в нашем примере, она называется GWGRP).
Создайте правило Allow LAN to gateway rule со следующими настройками:
Диапазон портов источника
Диапазон портов назначения
Allow LAN to gateway rule
Разместите правило Allow LAN to gateway rule выше в списке, чем правило Default allow LAN to any rule.
После осуществления манипуляций с правилами, список должен выглядеть аналогично тому, что указано на скриншоте:
Настройка DNS
Сделаем так, чтобы каждый из известных системе DNS-серверов был доступен через разные вышестоящие шлюзы.
Для этого, пройдите в раздел Система -> Настройки -> Общие настройки и осуществите настройки в соответствии со скриншотом:
Настройка функционала Connection Failover завершена
Мы настроили два канала подключения к Интернету. Каждый из каналов представлен своим WAN-адаптером, использует собственный вышестоящий шлюз, и свой IP-адрес для мониторинга работоспособности. Работоспособность каждого канала измеряется благодаря отправке мониторинговых ICMP-запросов.
Первый канал представлен адаптером WAN, использует шлюз 192.168.26.1 и мониторинговый IP-адрес 8.8.8.8. Первый канал является основным.
Второй канал представлен адаптером WAN2, использует шлюз 192.168.27.1 и мониторинговый IP-адрес 8.8.4.4. Второй канал является резервным. Переключение на второй канал произойдет, если первый канал окажется неработоспособным.
Балансировка трафика между WAN-каналами¶
Симметричная балансировка
Для настройки симметричной балансировки нагрузки между Интернет-каналами, выберите одинаковый ранг для обоих шлюзов в настройках шлюзовой группы.
Пройдите в раздел Система -> Шлюзы -> Группа, выберите ранее созданную группу GWGRP и модифицируйте ее настройки следующим образом:
В результате, поведение изменится с переключения при отказе на симметричное балансировку трафика между выбранными шлюзами. При этом, осуществляется балансировка на уровне соединений по циклическому алгоритму (round robin).
Асимметричная балансировка
Если у вас имеется два Интернет-канала, и один канал имеет большую пропускную способность чем другой, то можно установить настройки веса для каждого шлюза, и добиться тем самым ассиметричной балансировки нагрузки.
Допустим, шлюз GW_WAN доступен по каналу с пропускной способностью 10 Мбит/c, шлюз GW_WAN2 — по каналу с пропускной способностью 20 Мбит/c. Задайте вес первого шлюза как 1 и второго – как 2.
Сначала, выберите одинаковый ранг для для обоих шлюзов в настройках шлюзовой группы, так как это делалось для настройки симметричной балансировки.
Далее, пройдите в раздел Система -> Шлюзы -> Все, и модифицируйте каждую из двух шлюзовых записей следующим образом:
Для шлюза GW_WAN:
Для шлюза GW_WAN2:
Как результат, через второй шлюз будет маршрутизироваться вдвое больше подключений чем через первый шлюз.
Sticky соединения
На устройстве TING, в абсолютном большинстве случаев, настраивается механизм NAT. В зависимости от того, по какому каналу будет отправляться пакет, в нем будет прописываться соответствующий адрес WAN-адаптера (в нашем примере, это адрес 192.168.26.254 или адрес 192.168.27.254). Это значит, что может случиться ситуация, когда соединения от одного и того же компьютера во внутренней сети, будут восприниматься некоторым хостом в Интернете, как исходящие от разных IP-адресов. Некоторые веб-сайты ожидают того, что в течении сессии все запросы должны исходить от одного и того же IP-адреса. Доступ к таким веб-сайтам через устройство TING может работать некорректно, если включен функционал балансировки.
Для решения данной проблемы можно включить механизм т.н. фиксированных соединений. Пройдите в раздел Межсетевой экран -> Настройки -> Дополнительно и установите флаг Использовать фиксированные соединения.
Настройка балансировка трафика между WAN-каналами завершена!