Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • 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
    RouterSCRIPTS — коллекция скриптов для устройств RouterBOARD

    RouterSCRIPTS — коллекция скриптов для устройств RouterBOARD

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    RouterSCRIPTS — коллекция скриптов для устройств RouterBOARD, RouterOS
     
    Frostbyte
    Guest
    #1
    0
    02.01.2019 14:53:00
    Привет и с Новым годом! Мои старые скрипты и планировщики были полны жестко прописанных значений, работали только с двумя шлюзами, не использовали функции и были достаточно непоследовательными. Почти два года я всё откладывал, пока не получил новые «игрушки», и наконец нашёл время полностью переписать скрипты, которыми пользуюсь каждый день. Они тут: https://github.com/FrostbyteGR/RouterSCRIPTS Советую, если собираетесь их использовать, обязательно почитайте раздел README — это сэкономит вам кучу времени и нервов в дальнейшем.
     
     
     
    paulavalencia
    Guest
    #2
    0
    25.06.2019 15:38:00
    Привет, frostbyte! Не знаю, стоит ли вообще здесь писать, так как нет других ответов, но в GitHub сказано, что нужно, так что вот я и пишу. У меня постоянно выдают ошибки, что мои переменные пустые или содержат недопустимые значения во всех модулях. Я даже тестировал с теми же значениями, что и в твоем примере, меняя только IP-адрес в WANGateways, но ничего не получается. В основном хочу проверить твой скрипт для failover взамен другого, который у меня есть, но и DNS-скрипт мне тоже понравился, и я хотел бы его настроить. Пожалуйста, если можешь помочь с этой проблемой. Я использую версию 6.44.3, если это важно. Заранее спасибо!
     
     
     
    tedd77
    Guest
    #3
    0
    02.10.2019 00:01:00
    Я сталкиваюсь с той же проблемой, что и @paulavalencia. Кто-нибудь может помочь?
     
     
     
    Frostbyte
    Guest
    #4
    0
    02.10.2019 15:00:00
    Здравствуйте, извините за поздний ответ, из-за довольно плотного ежедневного графика это сообщение у меня немного ускользнуло из виду. Такая проблема возникает, когда конфигурационный файл сохранён с использованием UNIX-формата окончания строк (\n) вместо Windows-формата (\r\n). Я выпустил обновление (для функции парсера), которое корректно распознаёт и подстраивает последовательность окончания строк, что устраняет проблему. Спасибо, что сообщили об этом, и за ваше терпение.
     
     
     
    Tecleo
    Guest
    #5
    0
    31.10.2019 10:05:00
    Привет, помогите, пожалуйста. Независимо от используемых значений я получаю сообщение: "Provision][Error]: Конфигурация шлюзов для XXXXXXXXX не имеет соответствующего маршрута по умолчанию. [Provision][Error]: Конфигурация шлюзов для XXXXXXXX не имеет соответствующего маршрута по умолчанию. [Provision][Error]: Конфигурация шлюзов некорректна, пожалуйста, проверьте файл конфигурации и попробуйте снова. ****** Вывод скрипта ******** [admin@MikroTik] > /import RouterSCRIPTS_Installer.rsc [RouterSCRIPTS][Info]: Установка завершена. Предполагая, что вы прочитали прилагаемый файл readme, теперь можете удалить ненужные модули, а затем запустить: $provision auto Скрипт загружен и успешно выполнен [admin@MikroTik] > $provision auto [Provision][Info]: Настройка всех доступных модулей. [Provision][Info]: Настройка шлюзов. [Provision][Error]: Конфигурация шлюзов для Vodafone не имеет соответствующего маршрута по умолчанию. [Provision][Error]: Конфигурация шлюзов для Verizon не имеет соответствующего маршрута по умолчанию. [Provision][Error]: Конфигурация шлюзов некорректна, проверьте файл конфигурации и попробуйте снова. [Provision][Info]: Настройка failover. [Provision][Error]: Модуль failover зависит от модуля выбора шлюза, пожалуйста, настройте его и попробуйте снова. [Provision][Info]: Настройка dyndns. [Provision][Info]: Настройка resolver. [Provision][Info]: Настройка livestream. [Provision][Error]: Завершено с ошибками. [admin@MikroTik] >
     
     
     
    Frostbyte
    Guest
    #6
    0
    15.11.2019 13:32:00
    Скрипт настройки жалуется, потому что вы не указали соответствующие маршруты для соединений, которые задали в вашем cfg-файле. Из README файла:

    WANGatewayPrefix:  
    > Префикс комментария, который используется для обозначения маршрутов по умолчанию в таблице маршрутизации.

    Значение, которое следует за этой переменной конфигурации, должно присутствовать как комментарий (лично я предпочитаю ставить его в начале, но это не критично) в маршрутах 0.0.0.0 каждого шлюза, указанного в cfg-файле. Соответствующие маршруты сопоставляются и обозначаются по их комментариям и полям gateway. Если комментарий отсутствует, скрипт не сможет определить, какие маршруты использовать для своих функций.

    Пример (используя значения из readme):

    cfg-файл:  
    WANGateways=> 192.168.1.1  
    >,> 192.168.2.1  
    WANGatewayPrefix=> Default route

    Это потребует, чтобы у вас были два таких маршрута:  
    /ip route add comment=“> Default route > blah blah” distance=> 1 > gateway=> 192.168.1.1  
    /ip route add comment=“> Default route > blah blah” distance=> 2 > gateway=> 192.168.2.1

    Что касается distance:  
    Допустимый диапазон — от 1 до 2, потому что в cfg-файле объявлены два шлюза. Если бы вы указали три шлюза, то диапазон был бы от 1 до 3 и так далее.
     
     
     
    Nic8756
    Guest
    #7
    0
    22.04.2020 16:50:00
    Привет, Frostbyte, спасибо за скрипт! Очень интересно. Я провожу кое-какие эксперименты, но столкнулся с проблемой — не могу заставить его работать. Как скрипт Failover может проверить доступность WAN-цели через разные вторичные шлюзы, если текущий маршрут по умолчанию на Mikrotik настроен на активный шлюз? То есть, если я пытаюсь пинговать WAN-цель (например, 8.8.8.8) с интерфейса второго шлюза, ответ — таймаут ICMP, хотя у второго шлюза есть полноценное интернет-соединение. ICMP-запрос не выходит через интерфейс второго шлюза, поэтому скрипт считает, что у второго шлюза нет подключения к WAN. Нужно ли с NAT что-то делать? Сейчас я использую src NAT (маскарадинг) на обоих интерфейсах шлюзов. У меня RouterBOARD с двумя интернет-подключениями от разных провайдеров. Можешь помочь? Большое спасибо, с наилучшими пожеланиями!
     
     
     
    Frostbyte
    Guest
    #8
    0
    25.04.2020 17:18:00
    ping count=<# of Attempts> interface= Жирная часть красным выделена, потому что именно она заставляет ping отправляться с нужного WAN-интерфейса, независимо от того, какой шлюз сейчас активен. Чтобы лучше понять, в чём проблема, нужна дополнительная информация: Содержимое файла *.cfg, которым вы пытаетесь настроить устройство. Вывод следующих команд (в терминале) с устройства: /ip address print detail /ip route print detail $provision auto $failover check
     
     
     
    Nic8756
    Guest
    #9
    0
    29.04.2020 14:29:00
    Дорогой Frostbyte, спасибо за ответ. Я не до конца уверен в назначении опции «interface=» команды ping. По моему мнению, эта опция используется для рекурсивного определения IP-адреса, связанного с указанным интерфейсом, и затем создаёт ICMP-пакет с исходящим IP-адресом этого интерфейса. Однако это не значит, что пинг действительно пойдёт с этого интерфейса, потому что если адрес назначения не в локальной сети, роутер всё равно смотрит на текущий основной шлюз, чтобы решить, куда отправлять пакет и через какой интерфейс. Но я не эксперт по Mikrotik, так что могу ошибаться. Всё это к тому, что в моей небольшой лабораторной сети ваш скрипт, похоже, не способен пинговать целевой хост по второму пути, чтобы проверить связность, и поэтому не переключается на второго провайдера при сбое первого. Не могли бы вы помочь? Большое спасибо! Прикладываю вывод ваших команд, а также команды ping. [admin@MikroTik] > /ip address print detail Флаги: X - отключён, I - некорректный, D - динамический 0 ;;; defconf address=192.168.80.1/24 сеть=192.168.80.0 интерфейс=bridge actual-interface=bridge 1 address=192.168.10.71/24 сеть=192.168.10.0 интерфейс=ether1 actual-interface=ether1 2 address=192.168.88.2/24 сеть=192.168.88.0 интерфейс=ether5 actual-interface=ether5 [admin@MikroTik] > /ip route print detail Флаги: X - отключён, A - активен, D - динамический, C - подключён, S - статический, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - недоступен, P - запрещён 0 A S ;;; основная маршрутизация dst-address=0.0.0.0/0 шлюз=192.168.10.1 статус-шлюза=192.168.10.1 доступен через ether1 distance=1 scope=30 target-scope=10 1 S ;;; основная маршрутизация dst-address=0.0.0.0/0 шлюз=192.168.88.1 статус-шлюза=192.168.88.1 доступен через ether5 check-gateway=ping distance=4 scope=30 target-scope=10 2 ADC dst-address=192.168.10.0/24 pref-src=192.168.10.71 шлюз=ether1 статус-шлюза=ether1 доступен distance=0 scope=10 3 ADC dst-address=192.168.80.0/24 pref-src=192.168.80.1 шлюз=bridge статус-шлюза=bridge доступен distance=0 scope=10 4 ADC dst-address=192.168.88.0/24 pref-src=192.168.88.2 шлюз=ether5 статус-шлюза=ether5 доступен distance=0 scope=10 [admin@MikroTik] > $provision auto [Provision][Info]: Выполняется Provisioning для всех доступных модулей. [Provision][Info]: Выполняется Provisioning шлюзов. [Provision][Info]: Выполняется Provisioning отказоустойчивости. [admin@MikroTik] > $failover check SEQ HOST SIZE TTL TIME STATUS 0 8.8.8.8 56 57 12ms отправлено=1 получено=1 потеря пакетов=0% min-rtt=12ms avg-rtt=12ms max-rtt=12ms SEQ HOST SIZE TTL TIME STATUS 0 8.8.8.8 таймаут отправлено=1 получено=0 потеря пакетов=100% [admin@MikroTik] > ping 8.8.8.8 interface=ether5 SEQ HOST SIZE TTL TIME STATUS 0 8.8.8.8 таймаут 2 8.8.8.8 таймаут 3 8.8.8.8 таймаут 4 8.8.8.8 таймаут 5 8.8.8.8 таймаут
     
     
     
    Frostbyte
    Guest
    #10
    0
    29.04.2020 17:34:00
    Согласно документации, параметр «interface» накладывает ограничение «какой интерфейс использовать» на команду, поэтому ping принудительно выходит через указанный интерфейс. Поскольку существует маршрут (0.0.0.0/0) до вашего целевого адреса (8.8.8.8), где шлюз (192.168.88.1) принадлежит той же подсети (192.168.88.0/24), в которой участвует ваш интерфейс (ether5), ping должен пройти, иначе — не должен. Когда ваша настройка заработает, вы сами сможете это проверить (фактически отключая соединения). Это немного странно. На первый взгляд, в том, что ожидают скрипты, нет никаких ошибок. (То есть, по крайней мере для скриптов конфигурация должна быть корректной). Однако я заметил две тревожные вещи: команда provision не закончилась сообщением об успехе или ошибке. (Если вы не обрезали это специально, что-то могло пойти не так, и это нам нужно будет выяснить.) Если предположить, что настройки интерфейса, адреса, маршрута и фаервола (так как вы упоминали NAT) сделаны правильно, вы должны иметь возможность выполнить ping последней командой. Что-то определенно происходит с общей конфигурацией устройства. В рамках небольшого эксперимента попробуйте отключить маршрут #0 (dst-address=0.0.0.0/0 gateway=192.168.10.1) и запустите ping на 8.8.8.8 без параметра interface. Удастся?
     
     
     
    Nic8756
    Guest
    #11
    0
    02.05.2020 20:16:00
    Привет, Frostbyte, спасибо ещё раз за твою помощь и объяснения. Как только смогу, сделаю несколько тестов и дам тебе знать.
     
     
     
    Frostbyte
    Guest
    #12
    0
    15.05.2020 07:12:00
    Прошло почти две недели с вашего последнего ответа, вам всё ещё нужна помощь?
     
     
     
    luddite
    Guest
    #13
    0
    03.06.2020 08:59:00
    Просто хочу поблагодарить за эту потрясающую работу, здесь много всего, да и в твоих ответах людям тоже — видно, что стараешься помочь сообществу. Надеюсь использовать и изучить эти скрипты.
     
     
     
    norenberg
    Guest
    #14
    0
    17.08.2020 10:03:00
    Спасибо, что собрали это! Я пытаюсь заставить это работать, но у меня проблема: у меня всего один физический интерфейс, а в вашем скрипте, похоже, используются два интерфейса для работы, через ping с указанием исходного интерфейса, правильно? Есть ли способ сделать так, чтобы это работало только с одним интерфейсом? Спасибо!
     
     
     
    Frostbyte
    Guest
    #15
    0
    17.08.2020 16:17:00
    Ответ №1: Если у вас только один интернет-шлюз/подключение, то нет. Если только вы не собираетесь провести тест "proof of concept", который можно сделать, используя/настраивая несколько устройств/виртуальных машин MikroTik. Технически вам нужно как минимум два разных интернет-шлюза/подключения, чтобы обеспечить нормальный отказоустойчивый режим. Иного смысла в этом нет, уверен, вы понимаете почему. Кроме того, алгоритм настройки явно запрещает дублирование значений в WANNames и WANGateways, так что обойти это, введя одинаковую информацию дважды в конфигурационном файле, не получится.

    Ответ №2: Если у вас два или больше разных интернет-шлюза/подключения, но доступных через один и тот же интерфейс или в одной подсети, вам всё равно придётся разделить их на разные подсети и интерфейсы (мосты и VLAN тоже допустимы). Такое ограничение связано с тем, что иначе нечётко различать доступные шлюзы при проверке каждого из них на доступ в интернет – скрипты будут путаться. Согласно документации на github: можно иметь только один шлюз на подсеть. Несколько шлюзов через один мост или основной интерфейс не поддерживаются.

    Отказ от ответственности: Если вы хотите использовать функцию балансировки модуля шлюза, предположим, что помимо наличия двух разных интернет-шлюзов/подключений вы хорошо разбираетесь в настройке PCC Load Balancing, чтобы достичь желаемого результата. Потому что вся эта опция всего лишь включает или выключает (с учётом сбоев в интернете) правила mangle с соответствующим префиксом комментария (заданным в конфигурационном файле).
     
     
     
    norenberg
    Guest
    #16
    0
    17.08.2020 23:37:00
    Спасибо за ответ. Извини, забыл упомянуть: да, у меня на одном интерфейсе два разных шлюза в двух разных подсетях. Я немного экспериментировал с VLAN, но это было давно, и у меня не получилось настроить правильно. Сейчас у меня схема такая: GW1 — без тегов, без VLAN — RouterBoardETH1, GW2. В таком случае надо заставить RB помечать входящие пакеты тегом и затем снимать его обратно при передаче на несколько мостов внутри того же eth1… или что-то в этом роде. С VLAN я немного подтупливаю, и мне кажется, что для моей задачи это слишком сложно, поэтому думаю просто сделать рекурсивный маршрут без скрипта. Хотя мне очень нравится возможность переключения в твоём скрипте.
     
     
     
    Frostbyte
    Guest
    #17
    0
    18.08.2020 00:46:00
    В такой ситуации, если использование скриптов — это желаемая цель, есть два варианта на рассмотрение:  
    Подключить GW1 и GW2 к двум разным физическим портам устройства RouterBoard.  
    Пропускать GW1 и GW2 как тегированные VLAN через один физический порт устройства RouterBoard.  

    На данный момент я совершенно не в курсе вашей точной физической схемы и почему вы просто не подключаете CPE1 к одному физическому порту RouterBoard, а CPE2 — к другому. Это, кажется, самый простой способ как с физической, так и с конфигурационной точки зрения (просто не забывайте: разные подсети, разные интерфейсы).  

    Теперь, если есть какая-то сложность или особенность, о которой я не знаю (а скорее всего, не знаю), давайте исходить из схемы, которую вы нарисовали выше. Я бы не считал вариант №2 избыточным (потому что в этом случае у вас будет один кабель, и занятый один физический порт RouterBoard, а не два). Правда, нужно будет убедиться, что суммарная пропускная способность GW1 и GW2 не превышает скорость порта RouterBoard, к которому вы подключаетесь (чтобы избежать потенциального узкого места).  

    Если вы решите подключать GW1 и GW2 как тегированные VLAN через один и тот же физический порт RouterBoard, то дальше всё просто:  
    Вы создаёте два VLAN, каждый со своим VLAN ID (тем самым, с которым вы тегировали их на другой стороне), и указываете физический порт, через который они проходят, в качестве интерфейса (в вашем случае RouterBoardETH1).  
    Далее заходите в IP > Address и назначаете соответствующие адреса и маски подсетей для каждого созданного VLAN (не забывайте, что подсети должны быть разными).  
    В конце заходите в IP > Route и создаёте два маршрута (обязательно внимательно посмотрите документацию на github, так как параметры distance и содержимое комментариев в этом шаге важны).
     
     
     
    norenberg
    Guest
    #18
    0
    19.08.2020 12:19:00
    Спасибо за ответ. На данный момент я вообще не знаю, как именно у тебя физически всё настроено и почему ты просто не подключаешь CPE1 к одному физическому порту устройства RouterBoard, а CPE2 — к другому. Это, по идее, самый простой способ и с точки зрения физики, и с точки зрения настройки (просто не забудь: разные подсети, разные интерфейсы).  

    Это два WAN-шлюза, которые физически находятся в разных концах города. Ссылка, по которой оба доступны через Layer3, приходит по P2P через один кабель на eth1. Нет смысла снова делить его на два кабеля. Сейчас это временное решение, пока у меня нет возможности подключить два физических канала к RB.  

    Ты создаёшь два VLAN, каждый с соответствующим VLAN ID (тот, что ты на другом конце пометил тегом), и назначаешь физический порт, через который они проходят, как интерфейс (у тебя это RouterBoardETH1). Затем заходишь в IP > Address и назначаешь каждому VLAN соответствующий адрес и маску (не забудь — разные подсети). В конце заходишь в IP > Route и создаёшь два маршрута (обязательно внимательно изучи документацию на github, там важны расстояния и комментарии к этому шагу).  

    Сейчас я не могу пометить теги на другом конце, но скоро смогу. Поскольку это 3011UIAS, он должен нормально справляться с трафиком. Попробую так сделать снова, пока что рекурсивный failover работает. Спасибо!
     
     
     
    CraigZA
    Guest
    #19
    0
    14.09.2020 12:18:00
    У меня такая же проблема, как у предыдущего пользователя. Два WAN-интерфейса, команда $failover check зависает при попытке пропинговать внешний IP:

    [admin@xxxxx] > $failover status
    [Failover][Info]: Статус Failover: Активен.
    [Failover][Info]: ether1: В сети (работает минимум 00:01:15)
    [Failover][Info]: ether2: Вне сети (простоял минимум 00:01:15)

    [admin@xxxxx] > $failover status
    [Failover][Info]: Статус Failover: Активен.
    [Failover][Info]: ether1: В сети (работает минимум 00:01:15)
    [Failover][Info]: ether2: Вне сети (простоял минимум 00:01:15)

    [admin@xxxxx] > $failover check
     SEQ HOST                                     SIZE TTL TIME  STATUS  
       0 9.9.9.9                                    56  56 22ms  
       sent=1 received=1 packet-loss=0% min-rtt=22ms avg-rtt=22ms max-rtt=22ms  

     SEQ HOST                                     SIZE TTL TIME  STATUS  
       0 9.9.9.9                                                 timeout  
       sent=1 received=0 packet-loss=100%  

    У меня два маршрута по умолчанию с расстояниями 1 и 2 соответственно. NAT настроен для обоих выходов в интернет. Конфигурация прошла успешно, без ошибок (я удалил модули DynDNS, ResolveFQDN и Livestream). Есть идеи, как это исправить? Спасибо!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры