Как организовать автоматическое переключение интернета на резервный канал на примере Mikrotik?
Дано
- 2 провода с интерннетом от инетрнет-провайдера
- Роутер Микротик
Задача
Автоматическое переключение между поставщиками при проблемах со связью
Решение
Принцип работы.
Мониторинг основного канала передачи данных происходит раз в минуту.
В случае падения основного канала (недоступен заданный узел по ip адресу) включается резервный канал.
Когда основной канал становится доступным, происходит обратное переключение.
Подготовка.
На микротике два интерфейса ethernet должны быть подключены к провайдерам (любым сетям с доступом в интернет).
Не имеет значения, к каким портам они подключены.
Требуется выяснить у провайдера настройки для подключения - ip адрес шлюза, маска сети и выделенный ip адрес для роутера, и настроить адреса для соответствующих интерфейсов.
Адреса могут быть динамические.
Получить из кабинета партнера mobileproxy данные и заменить следующие переменные вашими значениями:
{server_id}
{API_TOKEN}
Для примера адреса 192.168.77.1 (провайдер в рамках настройки mikrotik назван "inet1") и 192.168.88.1 (название провайдера "inet2").
inet1 - основной канал, inet2 - резервный канал, который будет включаться только при отсутствии доступа к "высокодоступному" узлу в сети Интернет
В приведенном ниже коде заменить адреса на ваши.
Через web или Winbox создаем скрипт, /system script.
Название скрипта - mobileproxy-send-current-ip
Код скрипта:
---
# mobileproxy.space
# mikrotik send server current ip:local ServerID {server_id}
:local MobileproxyAPItoken {API_TOKEN}
:local ServerLocalIP {192.168.77.2}
:global CurrentIP
:local ServerComment ""/tool fetch url="https://mobileproxy.space/api.html?command=edit_servers&server_id=$ServerID&server_local_ip=$ServerLocalIP&server_static_ip=$CurrentIP&server_comment=$ServerComment" http-header-field="Authorization: Bearer $MobileproxyAPItoken"
---
Далее создаем netwatch, /tool netwatch
down-script="/ip route set [find comment=\"inet1\"] disabled=yes\r\
\n/ip route set [find comment=\"inet2\"] disabled=no" host=8.8.8.8\r\
\n/system script run mobileproxy-send-current-ip \
up-script="/ip route set [find comment=\"inet1\"] disabled=no\r\
\n/ip route set [find comment=\"inet2\"] disabled=yes"\r\
\n/system script run mobileproxy-send-current-ip
Далее создаем в таблице маршрутизации маршруты к двум шлюзам с обязательным указанием поля comment и указанным ниже содерджимым:
/ip route
comment=inet1 distance=1 gateway=192.168.77.1
comment=inet2 distance=2 gateway=192.168.88.1