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

    Мониторинг пропускной способности Mikrotik для DHCP-клиентов

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Мониторинг пропускной способности Mikrotik для DHCP-клиентов, RouterOS
     
    radon238
    Guest
    #1
    0
    02.11.2020 20:26:00
    Существует множество сторонних инструментов для мониторинга трафика, которые требуют установки приложения на ПК, которое собирает информацию с роутера Mikrotik. Для домашнего использования я не хотел использовать такие инструменты, которые должны работать постоянно, поэтому написал этот скрипт, чтобы Mikrotik показывал использование интернета в удобной форме. Это не управление трафиком (которое можно сделать через очереди), а просто отображение использования. Что-то в вашей домашней сети поглощает весь трафик (или лимит данных — да, не у всех безлимитный интернет), и вам нужен быстрый способ узнать, какой DHCP-клиент виноват.

    Цель:
    - Отдельные счетчики для загрузки и отдачи.
    - Счетчики для каждого DHCP-клиента (адрес, назначенный Mikrotik), создаются автоматически.
    - Легко сортируемый список с отображением наибольшей загрузки, отдачи и скорости.
    - Сброс счетчиков в полночь.
    - Запись в лог с общим использованием интернета за день.

    Среда:
    Ether1 подключен к интернету.
    Ether2–5 — локальная сеть (bridge), с активным DHCP-сервером, который выдает IP-адреса на bridge1 (ether2–ether5).

    Скрипты используют функцию IP Firewall Mangle passthrough.

    Чтобы посмотреть использование, просто зайдите в winbox, выберите меню IP → Firewall и вкладку Mangle. Рекомендую убрать ненужные колонки и добавить следующие: Src. Address, Dst Address, Bytes, Packets, Rate и PacketRate. Кликните по заголовку Bytes, чтобы увидеть главных "потребителей" сверху.

    Конфигурация:
    Сначала добавьте 2 простых правила IP Firewall Mangle, которые будут отслеживать общий интернет-трафик.

    /ip firewall mangle
    add action=passthrough chain=forward comment="Download Global Counter" in-interface=ether1
    add action=passthrough chain=forward comment="Upload Global Counter" out-interface=ether1

    Добавьте следующий код в скрипт DHCP Server Lease. Для этого отредактируйте DHCP-сервер, перейдите на вкладку Script и вставьте туда код:

    local hostname [/ip dhcp-server lease get [find where active-mac-address=$leaseActMAC && active-address=$leaseActIP] host-name]

    :if ($leaseBound = "1") do={
       /ip firewall mangle add action=passthrough chain=forward dst-address=$leaseActIP in-interface=ether1 comment=("Download " . $hostname)
       /ip firewall mangle add action=passthrough chain=forward src-address=$leaseActIP out-interface=ether1 comment=("Upload " . $hostname)
       /log info ("DHCP Script Mangle Rules Added for HostName " . $hostname . " IP " . $leaseActIP)
    } else={
       # удаляем старую запись Download для этого IP
       :foreach a in=[/ip firewall mangle find dst-address=$leaseActIP] do={
           /ip firewall mangle remove $a
       }
       # удаляем старую запись Upload для этого IP
       :foreach a in=[/ip firewall mangle find src-address=$leaseActIP] do={
           /ip firewall mangle remove $a
       }
       /log info ("DHCP Script Mangle Rules Removed for IP " . $leaseActIP)
    }

    Далее создайте скрипт, который будет запускаться в полночь:

    /system script
    add dont-require-permissions=yes name=ResetMangleCounters owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/log info (\"Bytes Downloaded Today \" . [/ip firewall mangle get [find where comment=\"Download Global Counter\"] bytes])\n/log info (\"Bytes Uploaded Today \" . [/ip firewall mangle get [find where comment=\"Upload Global Counter\"] bytes])\n\n/ip firewall mangle reset-counters-all\n\n/log info \"IP Firewall Mangle Counters Reset by Script\""

    /system scheduler
    add interval=1d name=ResetMangleCounters on-event=ResetMangleCounters policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=nov/01/2020 start-time=00:00:00

    Скрипт в более читабельном формате:

    /log info ("Bytes Downloaded Today " . [/ip firewall mangle get [find where comment="Download Global Counter"] bytes])
    /log info ("Bytes Uploaded Today " . [/ip firewall mangle get [find where comment="Upload Global Counter"] bytes])

    /ip firewall mangle reset-counters-all

    /log info "IP Firewall Mangle Counters Reset by Script"

    * Если у вас есть другие кастомные правила MANGLE, вам нужно будет подстроить условия для оператора find в скриптах.

    Для первого теста удалите все записи DHCP Server lease и дождитесь, пока устройства начнут получать новые адреса.

    Следите за логом, чтобы проверить выполнение скриптов.

    Тестировано на RouterOS 6.47.

    Буду рад любым предложениям по улучшению или замечаниям по логике.
     
     
     
    zespri
    Guest
    #2
    0
    29.01.2023 03:06:00
    Трудно что-то найти... Ты можешь привести примеры, о которых знаешь?
     
     
     
    Jotne
    Guest
    #3
    0
    29.01.2023 09:55:00
    Смотрите мой проект здесь: http://forum.mikrotik.com/t/tool-using-splunk-to-analyse-mikrotik-logs-4-0-graphing-everything/153043/1  
    Используйте Splunk для записи и мониторинга ваших роутеров MikroTik. Смотрите ссылку ниже.  
    //data-discourse.cdn.mikrotik.com/original/2X/4/442e459c5ced45cb70e8a05e77e07cea6fee4928.gif  
    MikroTik->Splunk
     
     
     
    tomislav91
    Guest
    #4
    0
    29.01.2023 14:04:00
    Может, что-то вроде этого? :local mangleRules [/ip firewall mangle find];

    :foreach rule in=$mangleRules do={
     :local comment [/ip firewall mangle get $rule comment];
     :if ( ("Download" = [:pick $comment 0 7]) ||
            ("Upload" = [:pick $comment 0 6]) ) do={
       /ip firewall mangle remove $rule
     }
    }

    /ip firewall mangle reset-counters-all

    Этот скрипт пройдет по всем правилам mangle, проверит, начинается ли комментарий с «Download» или «Upload», и удалит такие правила. В конце он сбросит счетчики для всех правил mangle.
     
     
     
    oxigeno20
    Guest
    #5
    0
    01.02.2023 12:51:00
    Отличное решение, но было бы проще, если бы вы перевели аренды в статические и использовали нативные настройки скорости для этих аренды. Это создаст динамическую очередь с пропускной способностью, которая будет активироваться при подключении пользователя и автоматически удаляться при отключении. Единственная проблема — все пользователи получат одинаковую скорость. Я использую этот способ, чтобы создать несколько DHCP-серверов, работающих в разных VLAN, и выделять больше или меньше пропускной способности в зависимости от сети. С наилучшими пожеланиями.
     
     
     
    jult
    Guest
    #6
    0
    14.01.2024 12:34:00
    Два момента по этому поводу: оно работает только через winbox/webUI самого устройства. Я бы предпочёл видеть эти статистики удалённо, например, как в https://github.com/Nixellion/MikrotikTrafficMonitor. Мне бы хотелось, чтобы считались ВСЕ LAN-IP (или устройства с привязанным по MAC-адресу текущим IP), а не только по DHCP-аренде, ведь не все используют микротик WAN-LAN роутер как DHCP-сервер.

    Есть ли где-то простой linux-UI или инструмент, который просто показывает байты/LAN-IP за выбранный период: 24 часа, сегодня, неделя, месяц, предыдущий/следующий и так далее, и отображает это на debian-сервере с nginx в локальной сети? Я поражён, что такого нет у такого бренда, как mikrotik, который не только поддерживает netflow/IPFIX, но и Accounting, Kid Control и SNMP.

    Я уже давно пытаюсь найти что-то подобное, но все варианты где-то не дотягивают по базовым функциям, либо слишком сложные (как ntopng/nprobe) для этой задачи, либо их основная функция — совсем про другое (мониторинг/анализ логов, например LibreNMS, Graylog, Prometheus, Zabbix и прочие). Ещё есть множество идей с Grafana + Elasticsearch, часто завязанных на Docker (вздох), но я так и не встретил ни одного, кто делал бы именно такую простую диаграмму.

    Ничего суперсложного в графике нет, но на самом деле он не обязателен. Нам нужны простые таблицы по временным интервалам, чтобы сразу понять, какое устройство — виновник, и по нему можно было выставлять счёт, ругать или копать глубже, например, по приложениям.
     
     
     
    CraigeryTheKid
    Guest
    #7
    0
    12.06.2024 22:09:00
    Я наткнулся на эту тему и подумал, что она идеально подойдёт для моей простой задачи — быстро проверить использование клиентов. Как и описано, мне не нужно и не хочется использовать софт для этого, проходные счётчики вполне устраивают. Но, судя по всему, я что-то делаю не так, потому что счётчик не считает, даже Глобальный счётчик не работает.

    Признаю, я не использую Mikrotik как DHCP-сервер (этим занимается pihole), но Mikrotik всё равно в режиме роутера. Модем AT&T (в режиме обхода) подключён к ether1.

    Поскольку даже Глобальный счётчик не работает, нет смысла обсуждать отдельные IP-адреса. Хотя я использовал для каждого клиента статический IP, пропуская скрипт распределения адресов.

    Что интересно — фейковое правило работает: mangle, passthrough, forward, [без дополнительных параметров] — при тесте скачивания 1 ГБ счётчик показал правильные данные.

    Но если добавить ether1: mangle, passthrough, forward, In Interface=ether1 — ничего не работает.

    Я понимаю, что не использую Mikrotik как DHCP, но он у меня всё же единственный роутер, и именно к ether1 подключена линия AT&T. Почему тогда не работает Глобальный счётчик загрузки?

    P.S. Теперь я ещё больше запутался. Оказывается, “фейковое правило” (которое ТОЧНО считает трафик) на самом деле, видимо, просто очень условное. Я создал новое правило, скопировав базовое фейковое, и оно тоже не считает трафик правильно.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры