Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Скрипт мониторинга IPSec

    Скрипт мониторинга IPSec

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт мониторинга IPSec, RouterOS
     
    martking
    Guest
    #1
    0
    12.03.2018 10:27:00
    Всем привет! Прошу прощения, если я изобрёл велосипед! Но я искал скрипт, который бы мониторил IPSec-туннель и, если не мог достучаться до конечной точки, принудительно перезапускал туннель. К сожалению, я не нашёл готового скрипта, который делал бы именно то, что мне нужно, поэтому позаимствовал куски кода у разных людей из других скриптов и попробовал написать сам. Ниже то, что у меня получилось. Конструктивная критика приветствуется, но помните — это первый скрипт, который я когда-либо писал.

    {  
    :log info “IPSec Watchdog Started”  
    Хост, который хотите пинговать######  
    :local HOST “Введите IP здесь”  
    Расположение хоста########  
    :local LOCATION “Название локации”  
    Интерфейс до удалённой сети#######  
    :local GW “интерфейс с маршрутом до хоста”  
    Таймаут пинга — увеличьте или уменьшите по необходимости  
    :local TIMEOUT “100ms”  
    Количество попыток  
    :local COUNT “10”  
    Если меньше 8 успешных ответов — перезапуск IPSec#####  
    :local LESSTHAN “8”  
    #################################  
    #НЕ МЕНЯЙТЕ КОД НИЖЕ###################################  
    :log info “Ищу $HOST в $LOCATION”  
    :log info “Маршрут до IPSec-конечной точки в $LOCATION проходит через $GW”  
    :if ([/ping interface=$GW $HOST interval=$TIMEOUT count=$COUNT]<$LESSTHAN) do={
    log error “$HOST в $LOCATION недоступен. Туннель до $LOCATION упал. Принудительный перезапуск IPSec”;  
    /ip ipsec installed-sa flush  
    } else {  
    :log warning “IPSec-туннель до $LOCATION в порядке. Делать ничего не нужно”  
    }  
    }
     
     
     
    VeeDub
    Guest
    #2
    0
    13.09.2018 04:05:00
    @martking Твой скрипт очень полезный, спасибо, что поделился. @panisk0 Netwatch не работает на IPsec VPN — по крайней мере, у меня так — нужно иметь возможность указать интерфейс, а с Netwatch это нельзя сделать.
     
     
     
    matho
    Guest
    #3
    0
    20.09.2018 07:32:00
    Спасибо, это именно то, что мне было нужно, и на текущей версии работает — модель: RouterBOARD M33G — прошивка: 6.43.1
     
     
     
    martking
    Guest
    #4
    0
    19.02.2019 15:47:00
    Рад, что скрипт оказался вам обоим полезен. Ещё одна хорошая сторона скрипта в том, что он привлекает интересный трафик для запуска и поддержания туннелей.
     
     
     
    panisk0
    Guest
    #5
    0
    02.04.2018 21:27:00
    исследуй это: /tool netwatch /p
     
     
     
    juliokato
    Guest
    #6
    0
    03.04.2018 14:07:00
    У меня есть вот такой скрипт, я понимаю, что его можно улучшить, но для меня он работает.

    /system script add name=ping-ipsec owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source="{
    :if ([/ping 10.1.1.1 src-address=172.16.1.1 count=5] = 0) do={
    :log warning \"VPN DOWN\";
    /ip ipsec peer disable 0;
    /ip ipsec remote-peers kill-connections;
    /ip ipsec installed-sa flush;
    :delay 200;
    /ip ipsec peer enable 0;
    /ip cloud force-update;
    :delay 15;
    /ping 10.1.1.1 src-address=172.16.1.1 count=5;
    } else={
    :log warning \"VPN UP\";
    /ip cloud force-update;
    }
    }"

    /system scheduler add interval=10m name=schedule1 on-event=ping-ipsec policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=sep/27/2015 start-time=12:50:36
     
     
     
    nichky
    Guest
    #7
    0
    19.02.2019 21:36:00
    Просто мне хотелось бы подробнее понять, что именно делает этот скрипт. Как вы упомянули, «если не удастся достичь конечной точки, туннель будет принудительно перезапущен». Вопрос в том, что конкретно будет перезапущено? Ведь в IPsec есть функция DPD, которая означает: «Когда интервал DPD достигает максимального количества сбоев, она удаляет SAs для этого хоста и пытается установить новое SA».
     
     
     
    yushko
    Guest
    #8
    0
    07.02.2023 14:51:00
    Используя NordVPN на своем роутере Mikrotik, я столкнулся с той же проблемой — IPsec-туннель иногда подвисает. Спасибо всем, кто публиковал скрипты в этой теме, это был отличный старт, который помог мне начать изучать скриптовый язык Mikrotik. Я добавил немного динамики в своей версии скрипта, возможно, это кому-то тоже пригодится:

    #get IPsec src-address из политик IPsec:  
    :local IPsecSrcIP [/ip/ipsec/policy get [find where tunnel=yes] src-address]

    #убираем маску подсети:  
    :set IPsecSrcIP [:pick $IPsecSrcIP 0 [:find $IPsecSrcIP "/"]]

    #:log info "Проверка IPSec туннеля: пингуем 8.8.8.8 через $IPsecSrcIP"  
    if ([/ping 8.8.8.8 src-address=$IPsecSrcIP count=5] = 0) do={
       :log warning "Проверка IPSec туннеля: пинг до 8.8.8.8 через $IPsecSrcIP не прошел. VPN упал, убиваем соединения"  
       :local enabledpeers [/ip/ipsec/peer find where disabled=no]
       :foreach k,v in=$enabledpeers do={  
           /ip/ipsec/peer disable $v  
       }  
       /ip/ipsec/active-peers/ kill-connections  
       /ip/ipsec/installed-sa/ flush  
       :foreach k,v in=$enabledpeers do={  
           /ip/ipsec/peer enable $v  
       }  
    } else={  
       #:log info "Проверка IPSec туннеля: пинг прошел успешно"  
    }
     
     
     
    jerryroy1
    Guest
    #9
    0
    23.03.2023 21:13:00
    Кто-нибудь может показать, как изменить скрипт, чтобы использовать IP-адрес интерфейса LAN исходного устройства?
     
     
     
    jerryroy1
    Guest
    #10
    0
    23.03.2023 22:24:00
    Я использовал следующий скрипт. Хочу указать исходящий интерфейс из своей локальной сети (LAN). Но постоянно появляется ошибка invalid value for argument src-address: invalid value for argument ip-src-address invalid value for argument ip6-src-address

    #get IPsec src-address из IPsec политик:
    :local IPsecSrcIP [/ip ipsec policy get [find where tunnel=yes] src-address]
    #удаляю маску подсети:
    :set value=IPsecSrcIP [:pick $IPsecSrcIP 0 [:find $IPsecSrcIP "/"]]

    :log info "Проверка IPSec туннеля: Пингуем 192.168.100.1 через $IPsecSrcIP"
    if ([/ping 192.168.100.1 src-address=$IPsecSrcIP count=5]=0) do={
       :log warning "Проверка IPSec туннеля: Пинг до 192.168.100.1 через $IPsecSrcIP не прошёл. VPN упал, убиваем подключения"
       :local enabledpeers [ip ipsec peer find where disabled=no]
       :foreach k,v in=$enabledpeers do={
           ip ipsec peer disable $v
       }
       ip ipsec active-peers kill-connections
       ip ipsec installed-sa flush
       :foreach k,v in=$enabledpeers do={
           ip ipsec peer enable $v
       }
    } else={
       #:log info "Проверка IPSec туннеля: Пинг успешен"
    }
     
     
     
    rextended
    Guest
    #11
    0
    24.03.2023 12:32:00
    Во-первых, исправь все ошибки, которые ты внес в скрипт, например, пробел здесь: “tunnel =yes”. Во-вторых, скрипт версии 7, а ты пытаешься использовать его на версии 6.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры