Введение
Оговорюсь сразу, на многих ресурсах есть множество инструкций по настройке failover, от простейших настроек до сложных скриптов. Моя же статья подойдёт не всем, тут есть два необходимых условия:
- Интернет от провайдера приходит по двум PPPoE туннелям
- Провайдер должен отдавать DHCP на основном приходящем интерфейсе
Вводные данные
Инициализировать PPPoE соединения у нас будет роутер MikroTik hAP AC Lite. Перед роутером у нас стоят — GePON ONT Eltex NTE RG-1402G (основной канал) и Ubiquity Litebeam M5-23 (резервный канал, радио). Все устройства подключения к сети провайдера настроены в режиме моста (bridge).
Настройка PPPoE-client
Создаём PPPoE клиент основного канала.
/interface pppoe-client add name=«Opta» interface=[имя интерфейса основного канала] user="[ваше имя пользователя]" password="[ваш пароль]" add-default-route=yes use-peer-dns=yes disabled=no default-route-distance=0
Создаём PPPoE клиент резервного канала.
/interface pppoe-client add name=«Radio» interface=[имя интерфейса резервного канала] user="[ваше имя пользователя]" password="[ваш пароль]" add-default-route=yes use-peer-dns=yes disabled=no default-route-distance=1
Создаём DHCP клиент основного канала.
/ip dhcp-client
add interface=[имя интерфейса основного канала] use-peer-dns=yes add-default-route=yes disabled=no default-route-distance=2
Метрика интерфейсов подобрана специально таким образом, что при активном состоянии основного канала трафик будет идти только через него.
Настройка правил файрвола и статических маршрутов для проверки активности соединения
Создаём статический маршрут. Таким образом у нас будет идти проверка состояния канала. Наверняка провайдер не будет пускать в интернет через DHCP client, в основном DHCP клиент у PPPoE провайдеров используется для внутренних ресурсов(телевидение, личный кабинет). В качестве адреса для проверки состояния можно использовать один из этих ресурсов или же какой-то из BRAS, если правилами файрвола со стороны провайдера не запрещен пинг до него. Также стоит учитывать, что если у провайдера начнутся проблемы с ресурсом, произойдет переключение канала.
/ip route add [адрес, по которому будет вестись проверка состояния] [шлюз, в нашем случае мы указываем шлюз DHCP клиента] distance=2
Запрещаем подключение до проверочного ресурса через PPPoE туннель.
/ip firewall filter add chain=output action=drop dst-address=[адрес, по которому будет вестись проверка состояния] out-interface=Opta
Запрещаем подключение до проверочного ресурса через PPPoE туннель.
/ip firewall filter add chain=output action=drop dst-address=[адрес, по которому будет вестись проверка состояния] out-interface=Radio
Правило NAT позволяющее нам получать доступ к ресурсу из локальной сети.
/ip firewall nat add chain=srcnat action=masquerade out-interface=[имя интерфейса, на котором у нас DHCP клиент]
Настройка failover с помощью netwatch
Добавляем правило netwatch. Interval = время опроса хоста в секундах. Timeout = время ожидания отклика хоста. Down-script = скрипт, который, выполняется при отсутствии отклика от хоста, в нашем случае это отключение основного PPPoE клиента. Up-script = скрипт выполняющийся при появлении отклика до хоста.
/tool netwatch add host=[адрес ресурса для проверки] interval=00:00:05 timeout=1 down-script="/interface pppoe-client disable 0" up-script="/interface pppoe-client enable 0"
Таким образом netwatch производит пинг до указанного хоста, в случае отсутствия отклика выключается основной PPPoE клиент. По скольку резервный канал у нас поднят трафик начинает идти через него. После восстановления основного канала включается основной PPPoE клиент, по скольку метрика у него ниже, трафик автоматически начинает идти через него.
Заключение и примечания
- Описанный мной способ подходит под Dual Access c DHCP, в принципе существуют провайдеры, которые выдают PPPoE + Static IP, указанный способ подходит, только соответственно настройки вторичного подключения надо указывать в IP -> Addresses.
- Также способ подходит и для VPN подключений (PPtP и L2tP), в правилах соответственно необходимо PPPoE client заменить на другой тип подключения.
- Если оба канала приходят от одного провайдера, то при работе на резервном канале не будет доступа на ресурс для проверки. Исправить это можно запретом только ICMP трафика до ресурса с туннелей.
- Интервалы для опроса в netwatch можно менять с учетом требований. Еще одно важное отличие, при настройки с консоли параметр «timeout» имеет единицу измерения равную секунде. При настройке с помощью winbox или web — милисекунда.
Автор: Пупсень и Вупсень