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

    Ошибка при попытке очистить подключения брандмауэра

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Ошибка при попытке очистить подключения брандмауэра, RouterOS
     
    thedoble
    Guest
    #1
    0
    06.04.2016 23:39:00
    Всем привет! Я написал скрипт для очистки соединений в файрволе. Он работает нормально, но иногда выдаёт ошибку: no such item (4). Думаю, это связано с тем, как RouterOS обрабатывает список соединений. Вот сам скрипт:

    :local ConnectionList [/ip firewall connection find]
    :foreach Connection in=[$ConnectionList] do={/ip firewall connection remove $Connection}

    Похоже, что между тем, как мы сохраняем соединения в массив и пытаемся их удалить, какое-то соединение закрывается, и команда remove пытается удалить уже несуществующее соединение, из-за чего и выскакивает ошибка. Я пробовал добавить условие on-error={…}, но никак не получилось — постоянно синтаксические ошибки.

    Кто-нибудь может подсказать, как можно либо предотвратить эту ошибку, либо корректно её обработать? Спасибо!
     
     
     
    rextended
    Guest
    #2
    0
    29.11.2022 18:25:00
    vklpt, пожалуйста, поищи на форуме. Это старая и широко известная проблема, которая уже решена более удобным способом. http://forum.mikrotik.com/t/script-to-clean-firewall-connections-after-public-ip-changes/135275/5
     
     
     
    vklpt
    Guest
    #3
    0
    29.11.2022 18:28:00
    Я не вижу никакого преимущества в двойном поиске.
     
     
     
    eworm
    Guest
    #4
    0
    30.11.2022 11:28:00
    Конечно, могут возникать проблемы с таймингом при большом количестве соединений в таблице. Но если просто нужно сбросить некоторые SIP-соединения (полагаю, это был кейс первоначального автора), то это всё ещё может сработать как надо при правильной фильтрации: /ip/firewall/connection/remove [find where protocol=udp dst-address~":5060\$"]. Используйте цикл, если не сработает.
     
     
     
    vklpt
    Guest
    #5
    0
    01.12.2022 08:13:00
    Так почему же я не использую своё собственное решение?
     
     
     
    eworm
    Guest
    #6
    0
    29.11.2022 15:51:00
    Зачем ты пытаешься делать это в цикле? Это отлично сработает и так: /ip/firewall/connection/remove [ find ];
     
     
     
    vklpt
    Guest
    #7
    0
    29.11.2022 16:35:00
    eworm, пожалуйста, прочитай первый пост. Это давняя и хорошо известная проблема.
     
     
     
    vklpt
    Guest
    #8
    0
    29.11.2022 14:00:00
    Это работает: # 2022.11.29  
    # Только UDP  
    local funDebug do={  
       if (true) do={ log info ("    KILL_CONNECTIONS: " . $1) }  
    }  
    $funDebug ("start")  
    /ip firewall connection  
    :local arrConnections [find protocol=udp];
    :local numErr 0;  
    :foreach conn in=$arrConnections do={  
     :do {  
       remove $conn  
     } on-error={  
       # $funDebug ("error on $conn")  
       :set numErr ($numErr + 1)  
     }  
    };  
    $funDebug ("count: " . [:len $arrConnections] . ", errors: " . $numErr)
    $funDebug ("finish")  

    Удобно тестировать с торрентом, потому что он создаёт много соединений.
     
     
     
    rextended
    Guest
    #9
    0
    01.12.2022 17:25:00
    Я не вижу никакой пользы в вашем собственном решении, особенно от человека, который не умеет читать и понимать. А конструкция «if (true) do={» никак не впечатляет — словно куски кода разбросаны где попало... и уж совсем ужасно выглядят «resume-next» — такие вещи обычно ничего хорошего не предвещают.
     
     
     
    vklpt
    Guest
    #10
    0
    01.12.2022 17:59:00
    Восхитительная аргументация от автора «лучшего» решения, которое даже нормально не работает (да и не должно) лол:
     
     
     
    rextended
    Guest
    #11
    0
    01.12.2022 18:26:00
    Лучше приводить аргументы, чем писать наугад. Всё равно вставь это в winbox, у меня никаких ошибок не возникает:
    /ip fire conn
    :foreach idc in=[find where timeout>60 and (!(dst-address~":8291\$"))] do={
       remove [find where .id=$idc]
    }
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры