Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Скрипт резервного переключения не возвращается на eth1

    Скрипт резервного переключения не возвращается на eth1

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт резервного переключения не возвращается на eth1, RouterOS
     
    Pirlet
    Guest
    #1
    0
    21.03.2014 13:48:00
    Привет, я использовал скрипт failover с http://wiki.mikrotik.com/wiki/Failover_Scripting. Теперь у меня проблема: переключение на резервное соединение автоматически происходит на eth2 и обратно не возвращается. Моя конфигурация:

    # ------------------- header -------------------
    # Скрипт от Tomas Kirnak, версия 1.0.7
    # Если вы используете этот скрипт или редактируете и
    # повторно используете его, пожалуйста, сохраняйте этот заголовок.
    #
    # Для дополнительной информации и подробностей
    # об этом скрипте посетите страницу вики по адресу
    # http://wiki.mikrotik.com/wiki/Failover_Scripting
    # ------------------- header -------------------



    # ------------- начало редактирования -------------
    # Отредактируйте переменные ниже под свои нужды

    # Укажите имена WAN-интерфейсов
    :local InterfaceISP1 ether1
    :local InterfaceISP2 ether2

    # Укажите IP шлюзов (или имена интерфейсов в случае PPP)
    :local GatewayISP1 192.168.0.1
    :local GatewayISP2 192.168.1.1

    # Укажите хост для проверки пинга — сейчас: www.google.com
    :local PingTarget 173.194.113.55

    # Укажите, сколько неудачных пингов разрешено перед переключением
    :local FailTreshold 3

    # Определите увеличение distance маршрута при сбое
    :local DistanceIncrease 2

    # Редактирование скрипта ниже этого места может его сломать
    # -------------- конец редактирования --------------



    # Объявляем глобальные переменные
    :global PingFailCountISP1
    :global PingFailCountISP2

    # Инициализация переменных PingFailCount, если скрипт запускается впервые
    :if ([:typeof $PingFailCountISP1] = "nothing") do={:set PingFailCountISP1 0}
    :if ([:typeof $PingFailCountISP2] = "nothing") do={:set PingFailCountISP2 0}

    # Эта переменная будет хранить результаты одиночных попыток пинга
    :local PingResult



    # Проверяем ISP1
    :set PingResult [ping $PingTarget count=1 interface=$InterfaceISP1]
    :put $PingResult

    :if ($PingResult = 0) do={
    :if ($PingFailCountISP1 < ($FailTreshold+2)) do={
    :set PingFailCountISP1 ($PingFailCountISP1 + 1)

    :if ($PingFailCountISP1 = $FailTreshold) do={
    :log warning "С ISP1 проблема на пути к $PingTarget — увеличиваем distance маршрутов."
    :foreach i in=[/ip route find gateway=$GatewayISP1 && static] do=\
    {/ip route set $i distance=([/ip route get $i distance] + $DistanceIncrease)}
    :log warning "Увеличение distance маршрутов завершено."
    }
    }
    }
    :if ($PingResult = 1) do={
    :if ($PingFailCountISP1 > 0) do={
    :set PingFailCountISP1 ($PingFailCountISP1 - 1)

    :if ($PingFailCountISP1 = ($FailTreshold -1)) do={
    :log warning "ISP1 снова может достучаться до $PingTarget — возвращаем original distance маршрутов."
    :foreach i in=[/ip route find gateway=$GatewayISP1 && static] do=\
    {/ip route set $i distance=([/ip route get $i distance] - $DistanceIncrease)}
    :log warning "Возврат distance маршрутов завершён."
    }
    }
    }



    # Проверяем ISP2
    :set PingResult [ping $PingTarget count=1 interface=$InterfaceISP2]
    :put $PingResult

    :if ($PingResult = 0) do={
    :if ($PingFailCountISP2 < ($FailTreshold+2)) do={
    :set PingFailCountISP2 ($PingFailCountISP2 + 1)

    :if ($PingFailCountISP2 = $FailTreshold) do={
    :log warning "С ISP2 проблема на пути к $PingTarget — увеличиваем distance маршрутов."
    :foreach i in=[/ip route find gateway=$GatewayISP2 && static] do=\
    {/ip route set $i distance=([/ip route get $i distance] + $DistanceIncrease)}
    :log warning "Увеличение distance маршрутов завершено."
    }
    }
    }
    :if ($PingResult = 1) do={
    :if ($PingFailCountISP2 > 0) do={
    :set PingFailCountISP2 ($PingFailCountISP2 - 1)

    :if ($PingFailCountISP2 = ($FailTreshold -1)) do={
    :log warning "ISP2 снова может достучаться до $PingTarget — возвращаем original distance маршрутов."
    :foreach i in=[/ip route find gateway=$GatewayISP2 && static] do=\
    {/ip route set $i distance=([/ip route get $i distance] - $DistanceIncrease)}
    :log warning "Возврат distance маршрутов завершён."
    }
    }
    }
     
     
     
    VaxCavalera
    Guest
    #2
    0
    19.04.2014 16:29:00
    У меня была такая же проблема. Но у меня ещё была маскировка на оба Ethernet. Как ты это сделал?
     
     
     
    Antz
    Guest
    #3
    0
    18.11.2014 16:30:00
    У меня такая же проблема. Похоже, это происходит из-за того, что команда ping не может отправлять пакеты на IP-адреса через шлюз с маршрутом, у которого большее расстояние. То есть, как только увеличивается расстояние основного маршрута, оно уже никогда не уменьшается. Кто-нибудь знает подробности, как это заставить работать?
     
     
     
    jarda
    Guest
    #4
    0
    18.11.2014 17:23:00
    Зачем использовать такой огромный скрипт? Допустим, у вас есть два WAN-порта, оба с маскарадом. Для каждого порта у вас есть один маршрут по умолчанию: один с дистанцией 12, второй с дистанцией 13. Затем вы выбираете какой-то публичный IP, который хотите проверить через первый шлюз. Для него нужно задать статический маршрут с дистанцией 1. Также вы ставите на него статический маршрут-черную дыру с дистанцией 99. После этого настраиваете netwatch для проверки этого тестового IP. Если проверка не проходит, просто меняете дистанцию 12 у маршрута по умолчанию на 22 с помощью netwatch в состоянии «down»: /ip route set distance=22 [find distance=12]; Если тестовый IP становится доступен, меняете маршрут обратно с помощью того же netwatch в состоянии «up»: /ip route set distance=12 [find distance=22]; И всё. Аналогично можно сделать для второго маршрута или для любого количества WAN-портов, когда хотите организовать фейловер.
     
     
     
    enman
    Guest
    #5
    0
    19.11.2014 14:58:00
    Это могло бы сработать, но почему тогда не проходит ping через второй интерфейс, у которого метрика выше, чем у первого? У меня несколько Mikrotik, и только на одном всё работает. В первом случае интернет приходит по DHCP, во втором у провайдера PPPoE. Если на интерфейсах стоят статические адреса — это не работает. Почему?
     
     
     
    jarda
    Guest
    #6
    0
    19.11.2014 16:24:00
    Процедура маршрутизации всегда выбирает самый подходящий активный маршрут. Если подходит несколько маршрутов, побеждает тот, у которого меньшее расстояние.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры