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

    Как искать в большом списке адресов IP-файрвола?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Как искать в большом списке адресов IP-файрвола?, RouterOS
     
    Kelalatir
    Guest
    #1
    0
    24.03.2021 20:38:00
    Здравствуйте, в связи с новыми корпоративными политиками кибербезопасности, в моём списке IP Firewall Address более 50 000 записей. Многие из них — диапазоны адресов. Мне хотелось бы найти способ поиска в списке, чтобы понять, входит ли конкретный IP в какой-то из этих диапазонов. Я могу делать сравнение вручную, если сумею отфильтровать список до управляемого объёма. Я пытался использовать функцию фильтрации в winbox. При поиске по полю адреса с помощью "in" или "contains" результат появляется только при точном совпадении всего IP-адреса вместе с CIDR-подсетью. Есть ли способ сделать частичный поиск, например, по первым двум октетам? Если функция фильтрации не подходит, есть ли другой способ поиска на роутере? Возможно, что-то через CLI? Можно, конечно, экспортировать список и открыть в текстовом редакторе, но мне интересно, есть ли метод, который можно использовать прямо на роутере. Спасибо.
     
     
     
    OlofL
    Guest
    #2
    0
    03.03.2022 15:24:00
    Я просто хочу вклиниться в разговор: как это повлияло на производительность? Сколько ресурсов нужно для таких списков? Я хочу использовать примерно такие же числа в своих фаерволах. @Kelalatir
     
     
     
    Kelalatir
    Guest
    #3
    0
    03.06.2022 16:13:00
    @OlofL Я не заметил значительной нагрузки на ресурсы при использовании больших списков адресов. Это устройство — облачный роутер с архитектурой x86, 1 ГБ памяти и процессором 3.0 ГГц. Стандартная нагрузка на устройство — около 15% CPU и 950 МБ свободной памяти. При работе с таким большим списком адресов через winbox есть заметная задержка — заполнение занимает от 30 до 60 секунд. Чтобы управлять такими списками, нужно научиться искать и фильтровать в winbox, отсюда и мой первоначальный вопрос. Но в маршрутизации я не заметил никакой существенной задержки. На самом деле, сейчас я запускаю этот список минимум на трёх Mikrotik-роутерах без каких-либо проблем.
     
     
     
    msatter
    Guest
    #4
    0
    03.06.2022 16:30:00
    Отображаемый в Winbox список сделан только для вашего удобства. RouterOS, скорее всего, использует хэши для обработки трафика — это намного, намного быстрее. Поиск адреса занимает некоторое время, и именно поэтому лучше использовать foreach, чтобы сразу внести изменения при поиске. Это позволяет избежать второго обхода для внесения изменений. Такое решение работает на 100% быстрее. Foreach использует .id — это указатель на запись, с помощью которого можно мгновенно внести изменения.
     
     
     
    Scoox
    Guest
    #5
    0
    03.05.2024 21:01:00
    Если я ничего не путаю, то функция фильтра в WinBox сломана (у меня версия WinBox v6.49.13). У меня есть клиент с MAC ID 11:22:33:44:55:66; в разделе DHCP Server > Leases следующие фильтры показывают странные результаты:  
    [MAC Address] [In] [11:22:33:44] совпадает с “11:22:33:44:55:66”
    [MAC Address] [In] [33:44:55:66] не совпадает с “11:22:33:44:55:66”
     
     
     
    zodharry
    Guest
    #6
    0
    05.05.2024 10:04:00
    Поиск адреса занимает некоторое время. Так как это требует много времени, лучше использовать foreach, чтобы можно было вносить изменения прямо во время поиска. Так удастся избежать второго прохода для внесения изменений. Это на 100% быстрее.
     
     
     
    Scoox
    Guest
    #7
    0
    06.05.2024 14:31:00
    Я полный новичок, как мне использовать foreach, чтобы вывести список всех записей DHCP с MAC ID, содержащим «5D:44:1A»?
     
     
     
    sindy
    Guest
    #8
    0
    06.05.2024 17:36:00
    На самом деле это состоит из двух шагов — первый — получить такой список, а второй — вывести его с помощью foreach. Но второй шаг имеет смысл только если вы хотите что-то сделать с элементами, кроме простого вывода. Чтобы получить список, используйте команду /ip dhcp-server lease find где mac-address~“5D:44:1A”.

    Если нужно просто вывести эти аренды без цикла foreach, достаточно команды /ip dhcp-server lease print where mac-address~“5D:44:1A”.

    Чтобы использовать список, полученный первой командой, для чего-то ещё, примем вывод как пример, тогда можно использовать такой код:

    /ip dhcp-server lease {
       :foreach lease in=[find where mac-address~"5D:44:1A"] do={
           print where .id=$lease
       }
    }

    Однако это имеет смысл только для относительно коротких списков — как уже писали другие, для длинных списков лучше использовать необработанный (без фильтрации) список в цикле foreach и фильтровать по каждому элементу отдельно. Но особенно для вывода print не очень удобно использовать foreach.

    Вариант для длинных списков:

    /ip dhcp-server lease {
       :foreach lease in=[find] do={
           :if ([get $lease mac-address]~"5D:44:1A") do={print where .id=$lease}
       }
    }
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры