Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
     
    Eugene
    Guest
    #1
    0
    04.07.2004 14:28:00
    Многие спрашивали, как формировать трафик в зависимости от объема, который пользователь уже скачал. Вот небольшой скрипт, который это делает:
    :local sum;
    :local traf;
    :set sum 0
    /ip firewall rule forward {
    :foreach i in [find] do={:incr sum}
    :for i from=1 to=$sum do={
    :set traf [get [find comment=(“user” . $i)] bytes]
    :set traf ($traf/1073741824)
    :if ($traf>1) do={:log facility=System-Info message=(“user” . $i . " exceeded 1Gb limit!")}
    }
    }
    Комментарии:
    1) Создайте собственную цепочку для целей учета (просто не забудьте добавить переходы из цепочки forward). В конце этой цепочки добавьте правило return.
    2) Создайте пользовательское действие, когда пользователь достигнет лимита. По умолчанию скрипт пишет сообщение в логи (используйте команду /log print without-paging для просмотра логов).
    Оригинальный скрипт можно найти в документации MT: http://www.mikrotik.com/docs/ros/2.8/appex/scripting1.content#11.2.5.8
     
     
     
    fivenetwork
    Guest
    #2
    0
    08.07.2004 01:58:00
    Может ли этот скрипт работать с PPPoE? Как операционная система предоставляет ограничение трафика для пользователей HotSpot, можно ли адаптировать это подобным образом для пользователей PPPoE?
     
     
     
    tully
    Guest
    #3
    0
    08.07.2004 06:37:00
    С PPPoE, кажется, можно настроить это, основываясь на атрибуте Radius. Посмотри, какие атрибуты Radius поддерживаются для AAA, в разделе AAA в руководстве. Джон.
     
     
     
    Eugene
    Guest
    #4
    0
    08.07.2004 15:23:00
    Да, конечно, этот скрипт может работать с PPPoE. Просто настройте правильные правила брандмауэра, чтобы учитывать трафик для конкретного PPPoE-клиента.
     
     
     
    gianluca
    Guest
    #5
    0
    03.01.2005 19:25:00
    Юджин, не мог бы ты, пожалуйста, конкретизировать этот вопрос? У меня 50 клиентов с PPPoE. С 3 профилями (то есть, по 3 правила брандмауэра для каждого профиля ниже правила брандмауэра PPPoE). Где мне разместить правила для подсчета байтов? Похоже, что для присвоения идентификатора каждой из них, мне нужно основывать правило на IP-адресе клиента. Это значит, что мне нужно фиксировать IP-адрес клиента к его логину в pppoe secrets. Я правильно понимаю? Спасибо.
     
     
     
    gianluca
    Guest
    #6
    0
    03.01.2005 19:29:00
    Только ещё кое-что. Мои PPPoE-клиенты получают IP-адрес из пула.
     
     
     
    gianluca
    Guest
    #7
    0
    01.02.2005 17:45:00
    Может кто-нибудь подсказать, как проверить объём загруженного и выгруженного трафика для пользователей Radius и PPPoE?
     
     
     
    bjohns
    Guest
    #8
    0
    04.02.2005 03:12:00
    Насколько мне известно, пакеты 'Alive' отправляются обратно на Radius-сервер с обновлениями. Обычно они отправляются каждые 5 минут, но изменить это можно либо через MT Router, либо через Radius-сервер. В противном случае полные данные сессии будут отправлены с пакетом Stop. Сложность в том, чтобы обеспечить соблюдение квоты. Например, пользователь подключился, превысил свой лимит — как его отключить? Сейчас я просто отключаю и включаю PPPoE-сервис каждые 24 часа, что, мягко говоря, не очень. Хотелось бы знать более элегантное решение, которое будет влиять только на нужных пользователей.
     
     
     
    gianluca
    Guest
    #9
    0
    06.02.2005 12:34:00
    Спасибо за помощь. Насчёт применения правила, когда они достигают лимита, я, вероятно, запущу скрипт с правилом перенаправления, который сделает то, что вам нужно, то есть остановит p2p… или что-то ещё.
     
     
     
    nianderson
    Guest
    #10
    0
    14.02.2005 01:52:00
    Можешь, пожалуйста, немного подробнее рассказать об этом? Я пытаюсь настроить лимиты передачи данных, чтобы userx получал 1 ГБ передачи/месяц/неделю – что угодно. Если они превышают лимит, они будут ограничены до 64 К. Это моя первая работа с Mikrotik и т.д.… так что я все еще пытаюсь разобраться с файрволом и всем остальным… Спасибо.
     
     
     
    nianderson
    Guest
    #11
    0
    16.02.2005 03:37:00
    Подожди, давай посмотрим, правильно ли я тебя понимаю, или я вообще не на той дорожке. Сначала нужно добавить цепочку /ip firewall add name=accounting, а потом задать ей комментарий под названием userN. У меня сейчас 2 пользователя, поэтому /ip firewall rule accounting add comment=user2, добавить passthrough action к цепочке accounting. Затем /ip firewall rule accounting add action=passthrough, добавить правило jump в forward для accounting /ip firewall rule forward add jump-target=accounting, изменить ссылки forward на accounting в предоставленном скрипте и добавить: local sum; :local traf;
    :set sum 0
    /ip firewall rule accounting{
    :foreach i in [find] do={:incr sum}
    :for i from=1 to=$sum do={
    :set traf [get [find comment=("user" . $i)]
    bytes]
    :set traf ($traf/1073741824)
    :if ($traf>1) do={:log facility=System-Info message=("user" . $i .
    " exceeded 1Gb limit!")}
    }
    /ip firewall rule accounting return
    } Как это выглядит? Помощь очень приветствуется.
     
     
     
    Eugene
    Guest
    #12
    0
    16.02.2005 11:20:00
    Hey! 👋

    Just wanted to share a quick update on what I've been up to. Been diving deep into learning Rust, it's been quite the journey! 🦀 I'm really enjoying the focus on memory safety and the powerful features it offers.

    Here's a breakdown of what I've been working on:

    *   **Project 1: Command-Line Tool** - A simple utility for converting CSV files to JSON format. Learned a lot about argument parsing and file I/O.
    *   **Project 1.5: Command-Line Tool (continued)** - Added error handling and logging. Turns out, logging is super important! 😅
    *   **Project 2: Basic Web Server** - Getting familiar with the Tokio runtime and building a basic HTTP server. Still a lot to learn about asynchronous programming.
    *   **Experimenting with Cargo:** Exploring different Cargo features like workspaces and dependency management.

    Resources I've found helpful:

    *   The Rust Book: [https://doc.rust-lang.org/book/](<#0 >)
    *   Rust by Example: [https://doc.rust-lang.org/rust-by-example/](<#1 >)

    I've also been active on the Rust subreddit, r/rust. Sharing my progress and getting help when I'm stuck.

    It's been challenging, but also incredibly rewarding. Excited to see what I can build with Rust! 💪

    #rustlang #rust #programming #learning #coding #developer

    Привет! 👋

    Просто хотел поделиться кратким обновлением о том, чем занимаюсь. Погружаюсь в изучение Rust, это был довольно интересный путь! 🦀 Мне очень нравится акцент на безопасности памяти и мощные функции, которые он предлагает.

    Вот краткий обзор того, над чем работал:

    *   **Проект 1: Инструмент командной строки** — Простое утилита для преобразования CSV-файлов в формат JSON. Многому научился о разборе аргументов и работе с файлами.
    *   **Проект 1.5: Инструмент командной строки (продолжение)** — Добавил обработку ошибок и ведение журнала. Оказывается, ведение журнала очень важно! 😅
    *   **Проект 2: Базовый веб-сервер** — Знакомлюсь с Tokio runtime и создаю базовый HTTP-сервер. Ещё многому предстоит узнать об асинхронном программировании.
    *   **Экспериментирую с Cargo:** Изучаю различные функции Cargo, такие как workspaces и управление зависимостями.

    Полезные ресурсы:

    *   Книга Rust: [https://doc.rust-lang.org/book/](<#0 >)
    *   Rust by Example: [https://doc.rust-lang.org/rust-by-example/](<#1 >)

    Также активно участвую в сабреддите Rust, r/rust. Делюсь своим прогрессом и получаю помощь, когда застряну.

    Это было сложно, но и невероятно полезно. С нетерпением жду, что смогу построить с помощью Rust! 💪

    #rustlang #rust #программирование #обучение #кодирование #разработчик
     
     
     
    nianderson
    Guest
    #13
    0
    16.02.2005 17:45:00
    Когда я делаю /ip firewall rule accounting add action=passthrough comment=user1 dst-address=192.168.0.199/24, получаю ОШИБКУ: destination bad.
     
     
     
    cmit
    Guest
    #14
    0
    16.02.2005 19:39:00
    192.168.0.199/24 — это неверный формат. Если вы хотите указать отдельный хост, вам нужно использовать маску сети /32: 192.168.0.199/32. Если же вы имели в виду фильтрацию целой сети класса C, используйте сетевой адрес вместе с маской подсети /24: 192.168.0.0/24.
     
     
     
    nianderson
    Guest
    #15
    0
    16.02.2005 19:43:00
    Ах, спасибо, теперь вот как у меня всё настроено. Вывод цепочки пересылки [admin@MikroTik] system script> /ip firewall rule forward print
    Флаги: X - отключен, I - недействителен, D - динамический
    0   действие=переход переход-цель=accounting

    1   ;;; ограничить доступ для неавторизованных клиентов Hotspot
        входящий-интерфейс=ether2 действие=переход переход-цель=hotspot-temp

    2   ;;; учитывать трафик для авторизованных клиентов Hotspot
        действие=переход переход-цель=hotspot

    3   действие=принять  скрипт [admin@MikroTik] system script> /ip firewall rule accounting print
    Флаги: X - отключен, I - недействителен, D - динамический
    0   ;;; user1
        назначение-адрес=192.168.0.195/32 действие=passthrough

    1   действие=return  скрипт [admin@MikroTik] system script> print
    0 имя="account_user_traffic"
      source=":local sum; :local traf;\r\n:set sum 0\r\n/ip firewall rule
             accounting{\r\n:foreach i in [find] do={:incr sum}\r\n:for i from=1
             to=$sum do={\r\n:set traf [get [find comment=("user" . $i)]
             bytes]\r\n:set traf ($traf/1073741824)\r\n:if ($traf>1) do={:log
             facility=System-Info message=("user" . $i . " exceeded 1Gb
             limit!")}\r\n}\r\n}"
      владелец="admin" policy=ftp,reboot,read,write,policy,test
      last-started=feb/16/2005 13:58:27 run-count=5  получаю feb/16/2005 13:58:27 script error: no such chain когда пытаюсь запустить его.
     
     
     
    nianderson
    Guest
    #16
    0
    17.02.2005 04:04:00
    Понял, в чём дело, почему я не видел цепочку. НЕ ВВОДИ СЦЕПТ ЧЕРЕЗ WINBOX. Нашёл pico clone и ввёл его через CLI, скрипт начал работать, но теперь выдаёт ошибку в лог: script error: empty string value where some kind of specific value expected. Вот мой текущий скрипт: local sum; local traf; set sum 0 /ip firewall rule accounting { foreach i in [find] do={:incr sum} for i from=1 to=$sum do={ set traf [get [find comment=("user" . $i)] bytes] set traf ($raf/1073741824) if ($traf>1) do={:log facility=System-Info message=("Limit-exceeded")} } }
     
     
     
    Eugene
    Guest
    #17
    0
    17.02.2005 13:07:00
    Это твой скрипт: есть одна исправленная строка: :set traf ($traf/1073741824)
     
     
     
    Russ
    Guest
    #18
    0
    03.05.2005 00:41:00
    Пока все говорили о дросселировании, используя локальные учетные записи пользователей. Наша сеть находится в ситуации, когда пользователи аутентифицируются через PPPoE, и им назначается IP-адрес либо статически, либо из динамического пула роутеров, независимо от точки входа в сеть. Затем PPPoE-сервер общается с freeradius-сервером, чтобы получить соответствующие атрибуты (статический / динамический IP, любые очереди, которые необходимо применить, маршруты, которые нужно добавить и т.д.). PPPoE-сервер также настроен на отправку промежуточных отчетов об учете каждые 5 минут, чтобы сообщить radius-серверу, сколько данных использовал пользователь. Чтобы это работало с radius-сервером, потребуется либо скрипт, который будет запускаться на mikrotik PPPoE-сервере (где применяется очередь), чтобы проверять значение использования данных на radius-сервере и соответственно настраивать очередь, либо скрипт, который будет запускаться на radius-сервере и каким-то образом сообщать роутеру mikrotik об изменении очереди, если пользователь превысил свой лимит данных. Мы не можем проверить объем данных на локальной mikrotik-коробке, так как пользователи могут входить в сеть через разные точки входа через разные PPPoE-серверы. Роутер mikrotik также потеряет всю информацию об учете при перезагрузке. Я заметил в 2.9, что есть функция, где можно указать входящий raidus-сервер. У кого-нибудь есть информация о том, как это работает? Что это делает? Или, есть ли у кого-нибудь рабочее решение для этого?
     
     
     
    cmit
    Guest
    #19
    0
    03.05.2005 06:34:00
    Функция "radius incoming" позволяет RADIUS-серверу активно отключать PPP(oE) сессии без использования SSH-скриптов на самом RADIUS-сервере или чего-то подобного. Пример можно посмотреть здесь: http://forum.mikrotik.com/t/how-to-disconnect-user/1016/1.

    Что касается вашего вопроса об изменении очередей, думаю, единственный способ - это запустить скрипт на RADIUS-сервере, который подключается к нужному PPPoE-серверу (MikroTik) по SSH и затем переключает очереди для активного пользователя. Хотя, никогда этого не пробовал…
     
     
     
    marko1101
    Guest
    #20
    0
    07.08.2005 11:35:00
    Я пытаюсь остановить трафик и уведомить пользователя по почте. Мой скрипт:

    :local sum;
    :local traf;
    :set sum 0
    /ip firewall rule example {
    :foreach i in [find] do={:incr sum}
    :for i from=1 to=$sum do={
    :set traf [get [find comment=(“user” . $i)] bytes]
    :set traf ($traf/1073741824)
    :if ($traf>0) do={
    /ip firewall rule forward add src-address=1.1.1.1/32 action=reject
    /tool e-mail send to= example@example.com subject=“Limit-exceeded”}
    }
    }

    Но я запускаю этот скрипт из планировщика, интервал 5 секунд, и когда пользователь достигает лимита трафика, планировщик создаёт правило и отправляет письмо каждые 5 секунд, без остановки. Есть ли способ остановить планировщик, когда пользователь достигает лимита трафика, что-то вроде `/system scheduler disable 0`? И есть ли способ поместить правило `ip firewall forward rule` на, например, позицию 10, типа… `put-on=10` или `put-position=10`… Есть какие-нибудь идеи?
    Спасибо.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры