Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • 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
    Проблема с переключением dual WAN на резервный канал — не возвращается обратно на основной.

    Проблема с переключением dual WAN на резервный канал — не возвращается обратно на основной.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Проблема с переключением dual WAN на резервный канал — не возвращается обратно на основной., RouterOS
     
    tricksol
    Guest
    #1
    0
    19.12.2015 14:53:00
    Фоновая информация: На удалённом объекте у меня есть два подключения. Подключение 1: AT&T Uverse DSL. Подключение 2: Verizon LTE через Cradlepoint в режиме моста. IP-адреса изменены из соображений конфиденциальности. Поскольку Uverse нельзя перевести в мостовой режим, пришлось настроить его с публичными статическими IP на LAN-стороне и включить каскадный маршрутизатор. Эта опция даёт нам наш /29, но при этом ломает проверку шлюза, потому что шлюз всегда "вверх", даже если провайдер отключился. LTE-шлюз находится далеко от устройства, поэтому он работает как надо, но я не хочу, чтобы он стал основным провайдером, если первичный работает. Я настроил правила mangle для маркировки трафика, чтобы он входил и выходил через одного и того же провайдера, и нашёл на вики скрипт для WAN failover, который вроде работает. Если я на первичном подключении, могу выбрать пинг и интерфейс — пинг нормальный, а если выбрать вторичный — пинг задерживается, как и должно быть на LTE. Скрипт запускается каждые 10 секунд, переключается на вторичный при отвале, но не переключается обратно на первичный после восстановления. После переключения не могу пинговать первичный интерфейс — пинги не восстанавливаются, скрипт не возвращает расстояние на шлюзах. Может, кто поможет исправить эту проблему?

    /ip firewall mangle  
    add action=mark-connection chain=input in-interface=ether1-WAN new-connection-mark=isp1-in  
    add action=mark-routing chain=output connection-mark=isp1-in new-routing-mark=isp1-out passthrough=no  
    add action=mark-connection chain=input in-interface=ether2-WAN new-connection-mark=isp2-in  
    add action=mark-routing chain=output connection-mark=isp2-in new-routing-mark=isp2-out passthrough=no

    /ip firewall nat  
    add action=masquerade chain=srcnat out-interface=ether1-WAN  
    add action=masquerade chain=srcnat out-interface=ether2-WAN

    /ip route  
    add distance=1 gateway=10.0.0.1 routing-mark=isp1-out  
    add distance=2 gateway=172.16.0.1 routing-mark=isp2-out  
    add distance=2 gateway=172.16.0.1  
    add distance=1 gateway=10.0.0.1

    /system scheduler  
    add interval=10s name=DualWanFailover on-event=DualWanFailover policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=nov/18/2015 start-time=21:51:02

    /system script  
    add name=DualWanFailover owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source=“# ---- --------------- header -------------------  
    # Скрипт от Tomas Kirnak, версия 1.0.7  
    # Если используете этот скрипт, или редактируете и  
    # используете повторно, пожалуйста, оставьте шапку без изменений.  
    #  
    # Подробности и информация на странице вики:
    # http://wiki.mikrotik.com/wiki/Failover_Scripting  
    # ------------------- header -------------------

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

    # Заполните имена WAN-интерфейсов  
    :local InterfaceISP1 ether1-WAN  
    :local InterfaceISP2 ether2-WAN

    # Заполните IP-шлюзы (или имена интерфейсов для PPP)  
    :local GatewayISP1 10.0.0.1  
    :local GatewayISP2 172.16.0.1

    # Заполните адрес для пинга – сейчас: resolver1.opendns.com  
    :local PingTarget 208.67.222.222

    # Сколько пинг-просадок допускается перед переключением  
    :local FailTreshold 20

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

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

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

    # Инициализируем счётчики, если скрипт запускается первый раз  
    :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 — увеличиваем дистанцию маршрутов."  
               :foreach i in=[/ip route find gateway=$GatewayISP1 && static] do={
                   /ip route set $i distance=([/ip route get $i distance] + $DistanceIncrease)
               }  
               :log warning "Увеличение дистанции маршрутов завершено."  
           }  
       }  
    }  
    :if ($PingResult = 1) do={  
       :if ($PingFailCountISP1 > 0) do={  
           :set PingFailCountISP1 ($PingFailCountISP1 - 1)  
     
           :if ($PingFailCountISP1 = ($FailTreshold -1)) do={  
               :log warning "ISP1 снова доступен на $PingTarget — возвращаем прежнюю дистанцию маршрутов."  
               :foreach i in=[/ip route find gateway=$GatewayISP1 && static] do={
                   /ip route set $i distance=([/ip route get $i distance] - $DistanceIncrease)
               }  
               :log warning "Восстановление дистанции маршрутов завершено."  
           }  
       }  
    }

    # Проверяем 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 — увеличиваем дистанцию маршрутов."  
               :foreach i in=[/ip route find gateway=$GatewayISP2 && static] do={
                   /ip route set $i distance=([/ip route get $i distance] + $DistanceIncrease)
               }  
               :log warning "Увеличение дистанции маршрутов завершено."  
           }  
       }  
    }  
    :if ($PingResult = 1) do={  
       :if ($PingFailCountISP2 > 0) do={  
           :set PingFailCountISP2 ($PingFailCountISP2 - 1)  
     
           :if ($PingFailCountISP2 = ($FailTreshold -1)) do={  
               :log warning "ISP2 снова доступен на $PingTarget — возвращаем прежнюю дистанцию маршрутов."  
               :foreach i in=[/ip route find gateway=$GatewayISP2 && static] do={
                   /ip route set $i distance=([/ip route get $i distance] - $DistanceIncrease)
               }  
               :log warning "Восстановление дистанции маршрутов завершено."  
           }  
       }  
    }”
     
     
     
    plisken
    Guest
    #2
    0
    08.01.2016 20:31:00
    На моём сайте вы найдёте конфигурацию отказоустойчивости и балансировки нагрузки. Посмотрите configuration5. Вы можете изменить IP-адреса и использовать этот код. Сделано для RB2011 UAS-RM и RB951G 2HnD http://www.wirelessinfo.be/index.php/mikrotik/pages/confige
     
     
     
    tricksol
    Guest
    #3
    0
    27.01.2016 16:26:00
    Мне всё ещё нужна эта команда, чтобы их переместить, или можно просто сбросить всё и использовать твой пример?
     
     
     
    tricksol
    Guest
    #4
    0
    27.01.2016 16:30:00
    Я не хочу балансировку нагрузки, только аварийное переключение, к вашему сведению.
     
     
     
    scampbell
    Guest
    #5
    0
    02.02.2016 22:51:00
    Отличный ответ dareru касается только аварийного переключения и будет хорошо работать. Если на вашем WAN используется динамический протокол, такой как DHCP или PPPoE, нужно убедиться, что для резервного WAN задан default-route-distance, отличный от 0, чтобы это работало.  

    Если вы хотите иметь возможность управлять роутером через любой из WAN по любой причине, тогда нужно, чтобы ваши правила mangle отмечали новые соединения с обоих WAN-интерфейсов, а затем добавляли маршрутизирующую метку в цепочки output, чтобы ответный пакет выходил через правильный WAN. Это позволит отправлять весь исходящий трафик через WAN1 и подключаться к роутеру из интернета через любой из WAN.  

    /ip route add gateway=1.1.1.1 distance=1 check-gateway=ping  
    /ip route add gateway=2.2.2.2 distance=30 check-gateway=ping  
    /ip route add gateway=1.1.1.1 routing-mark=wan1  
    /ip route add gateway=2.2.2.2 routing-mark=wan2  
    /ip firewall mangle add chain=prerouting in-interface=wan1 connection-state=new action=mark-connection new-connection-mark=wan1  
    /ip firewall mangle add chain=prerouting in-interface=wan2 connection-state=new action=mark-connection new-connection-mark=wan2  
    /ip firewall mangle add chain=output connection-mark=wan1 action=mark-routing new-routing-mark=wan1  
    /ip firewall mangle add chain=output connection-mark=wan2 action=mark-routing new-routing-mark=wan2  

    И если нужно для входящих правил dst-nat...  

    /ip firewall mangle add chain=prerouting in-interface=bridge-lan connection-mark=wan1 action=mark-routing new-routing-mark=wan1  
    /ip firewall mangle add chain=prerouting in-interface=bridge-lan connection-mark=wan2 action=mark-routing new-routing-mark=wan2  

    Надеюсь, это поможет!
     
     
     
    tricksol
    Guest
    #6
    0
    03.02.2016 01:28:00
    Спасибо, попробую сегодня вечером.
     
     
     
    brwainer
    Guest
    #7
    0
    05.02.2016 02:52:00
    Проблема, которую я вижу в обоих этих ответах, в том, что в них используется «check-gateway = ping», а автор темы сказал, что Uverse (основной шлюз) всегда работает, потому что его нельзя перевести в режим моста.
     
     
     
    tricksol
    Guest
    #8
    0
    05.02.2016 03:01:00
    Спасибо, ты первый, кто это заметил… Проверка шлюза работает корректно в GNS3 с образами CHR, так что то, что они говорят, действительно работает. Если бы у меня был режим моста — всё было бы отлично. Просто хочу, чтобы кто-то объяснил, почему конфигурация может пинговать через оба интерфейса, когда стоят маршруты по умолчанию на 1 и 2, но когда 1 меняется на 3, пинг не отправляется через интерфейс. Если бы это срабатывало, система переключалась бы обратно, и всё было бы нормально.
     
     
     
    keithy
    Guest
    #9
    0
    05.02.2016 19:04:00
    Попробуй этот метод. Хорошо работает, когда не получается связать устройства http://blog.ispsupplies.com/mikrotik-automatic-failover-two-gateways/ Надеюсь, поможет!
     
     
     
    tricksol
    Guest
    #10
    0
    06.02.2016 04:59:00
    Ого, где ты пропадал… Я уж целый месяц с этим борюсь. Большое спасибо, что заглянул и помог с моей проблемой. Всё отлично работает, только что проверил в gns3 с образами CHR.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры