Резервирование интернета (failover)
Цель: Настроить автоматическое переключение на резервный канал интернета (например, 4G/LTE модем), если основной канал (провайдер) перестает работать.
Основной принцип: Мы создадим специальный маршрут по умолчанию для основного канала и сделаем его активным. Для резервного канала создадим такой же маршрут, но с более низким приоритетом. Затем с помощью скрипта будем отслеживать доступность основного шлюза и автоматически отключать/включать основной маршрут при его пропаже/появлении.
Шаг 1: Подготовка интерфейсов и адресации
Предположим, у нас есть:
Основной канал (WAN1): Интерфейс ether1, подключен к провайдеру. IP-адрес получаем по DHCP или статический. Шлюз провайдера, например, 10.0.0.1.
Резервный канал (WAN2_LTE): Интерфейс usb1 (LTE-модем). IP-адрес и шлюз также получаем автоматически.
Настройте оба канала так, чтобы они самостоятельно получали IP-адреса и шлюзы.
Для WAN1 (ether1): IP -> DHCP Client.
Добавьте клиента на интерфейс ether1. Убедитесь, что в настройках клиента стоит галочка Add Default Route. Эту галочку позже снимем, но пока пусть будет.
Для WAN2_LTE (usb1): IP -> DHCP Client.
Добавьте клиента на интерфейс usb1. Галочку Add Default Route оставьте снятой.
Проверьте, что оба канала работают.
В IP -> Routes вы должны видеть два маршрута по умолчанию
(с префиксом 0.0.0.0/0). Один от основного провайдера,
второй (если появился) – от LTE.
Пока что трафик идет через тот, у которого ниже Distance (обычно 1).
Шаг 2: Создание статических маршрутов с проверкой доступности
Сначала удалите автоматически созданные маршруты по умолчанию, чтобы они нам не мешали.
Отключите добавление маршрута в DHCP-клиенте:
Зайдите в IP -> DHCP Client.
Дважды щелкните на клиенте для ether1 и снимите галочку Add Default Route. Нажмите OK. Автоматический маршрут исчезнет.
Убедитесь, что у клиента для usb1 эта галочка тоже снята.
Создайте статический маршрут для ОСНОВНОГО канала:
Идите в IP -> Routes и нажмите Add (+).
Вкладка General:
Dst. Address: 0.0.0.0/0 (все сети, т.е. маршрут по умолчанию).
Gateway: укажите IP-адрес шлюза основного провайдера
(например, 10.0.0.1). Важно: указывайте статический IP шлюза, а не динамический, типа 10.0.0.0.
Distance: оставьте 1 (высокий приоритет).
Поставьте галочку Check Gateway и выберите ping. Это ключевой момент! Роутер будет проверять доступность этого шлюза.
Вкладка Advanced:
Можно настроить интервал проверки (Interval) и таймаут (Timeout). Стандартные значения (10с и 1с) обычно подходят.
Нажмите OK.
Создайте статический маршрут для РЕЗЕРВНОГО канала:
Снова нажмите Add (+).
Вкладка General:
Dst. Address: 0.0.0.0/0.
Gateway: укажите IP-адрес шлюза LTE-модема (его можно посмотреть в статусе DHCP-клиента для usb1).
Distance: установите больше, чем у основного, например, 5 (низкий приоритет). Этот маршрут будет активен, только если маршрут с distance=1 отключится.
Галочку Check Gateway НЕ ставим. Резервный канал должен быть всегда включен, а переключение управляется состоянием основного.
Нажмите OK.
Что получилось: Сейчас активен маршрут через основной канал (у него Distance=1, он выше в списке и имеет статус active). Маршрут через LTE имеет статус inactive (запасной).
Шаг 3: Настройка правил NAT для обоих каналов
Нужно создать два правила NAT: одно для основного интерфейса, второе для резервного.
Зайдите в IP -> Firewall -> NAT.
Правило для основного канала (WAN1):
У вас уже должно быть правило action=masquerade для интерфейса ether1 (из базовой настройки). Убедитесь, что оно там есть.
Добавьте правило для резервного канала (WAN2_LTE):
Нажмите Add (+).
Вкладка General:
Chain: srcnat
Out. Interface: выберите ваш LTE-интерфейс (usb1).
Вкладка Action:
Action: masquerade
Нажмите OK.
Теперь исходящий трафик будет правильно подменять IP-адрес независимо от того, через какой канал он уходит.
Шаг 4: (ОПЦИОНАЛЬНО, но рекомендуется) Настройка Netwatch для надежного отслеживания
Способ с Check Gateway прост, но не всегда надежен (провайдер может пропускать ping, но не пропускать реальный трафик). Более надежный способ – использовать утилиту Netwatch для отслеживания доступности удаленного хоста (например, публичного DNS-сервера).
Зайдите в Tools -> Netwatch.
Нажмите Add (+).
Вкладка General:
Host: укажите IP-адрес надежного удаленного ресурса, например, DNS-сервер 8.8.8.8.
Timeout: 1s (время ожидания ответа).
Interval: 10s (как часто проверять).
Up Script: здесь напишите команду, которая выполнится, когда хост станет доступен. Например, чтобы включить основной маршрут:
bash
/ip route enable [find dst-address=0.0.0.0/0 distance=1]
Down Script: команда, которая выполнится, когда хост станет недоступен. Например, чтобы отключить основной маршрут:
bash
/ip route disable [find dst-address=0.0.0.0/0 distance=1]
Нажмите OK.
Что происходит: Netwatch каждые 10 секунд пингует 8.8.8.8 через основной канал. Если ответа нет, он выполняет скрипт Down Script, который отключает основной маршрут. Роутер автоматически переключается на резервный маршрут с distance=5. Когда связь восстанавливается, выполняется Up Script, который включает основной маршрут обратно, и трафик возвращается на него.
Чек-лист настройки Failover
Физическое подключение: Оба канала (основной и LTE) подключены и настроены (получают IP-адреса).
Очистка маршрутов: В DHCP-клиентах сняты галочки Add Default Route. Старые маршруты 0.0.0.0/0 удалены.
Статический маршрут (Основной): Создан маршрут 0.0.0.0/0 через шлюз основного провайдера с Distance=1 и включенной опцией Check Gateway.
Статический маршрут (Резервный): Создан маршрут 0.0.0.0/0 через шлюз LTE с Distance=5 (или выше) без Check Gateway.
NAT для обоих каналов: В разделе Firewall/NAT есть два правила masquerade – для основного и резервного WAN-интерфейсов.
(Рекомендуется) Netwatch: Настроено отслеживание удаленного хоста (8.8.8.8) со скриптами на включение/отключение основного маршрута.
Проверка работы:
Убедитесь, что весь трафик идет через основной канал
(статус маршрута active).
Сымитируйте аварию:
Вытащите кабель из основного WAN-порта (ether1).
Наблюдайте:
В течение 10-30 секунд в IP -> Routes статус основного маршрута должен смениться на inactive
(или он станет серым, если используете Netwatch),
а резервный маршрут станет active.
Пинг с локального компьютера должен продолжать работать.
Верните канал на место:
Через 10-30 секунд после восстановления связи роутер должен
автоматически вернуть трафик на основной канал.
Эта схема обеспечивает автоматическое и достаточно быстрое переключение между каналами без вмешательства администратора.