ECMP и резервирование (скрипт)

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
Cyr
Сообщения: 8
Зарегистрирован: 09 сен 2017, 14:11
Откуда: Пенза

Использую ECMP балансировку двух провайдеров pppoe:

Код: Выделить всё

/ip route add check-gateway=ping comment=ECMP distance=1 gateway=pppoe-domru,pppoe-rtk

Если один pppoe канал падает, ECMP автоматом переключает на рабочий маршрут.
Но иногда pppoe соединение установлено, а интернета нет. ECMP такое не замечает.
Для решения данной проблемы написал скрипт, который изменяет маршрут по умолчанию,
если нет интернета:

Код: Выделить всё

#проверяем, подняты ли pppoe
:local DOMRUrun [/interface pppoe-client get pppoe-domru running]
:local RTKrun [/interface pppoe-client get pppoe-rtk running]
#выполняется, только если оба pppoe канала подняты, иначе ECMP само справляется
if ($DOMRUrun=true && $RTKrun=true) do={
#пингуем ya.ru через каждое pppoe соединение
:local pingresRTK [/ping 87.250.250.242 count=3 interface=pppoe-rtk];
:local pingresDOMRU [/ping 87.250.250.242 count=3 interface=pppoe-domru];
#какой должен быть gateway
:local gateway "pppoe-domru;pppoe-rtk"
:if ($pingresDOMRU>0 && $pingresRTK=0) do={
  :set $gateway "pppoe-domru"
} else={
  :if ($pingresDOMRU=0 && $pingresRTK>0) do={
    :set $gateway "pppoe-rtk" }
}
#проверяем текущий gateway
:local currentgateway [/ip route get [find comment="ECMP"] gateway]
:if ($currentgateway!=$gateway) do={
 #устанавливаем необходимый gateway
 /ip route set gateway=$gateway [find comment="ECMP"];
 :log info "gateway is changing: $gateway";
 }
}

Запускается через scheduler каждые 10 минут.


Ответить