Многие спрашивали, как формировать трафик в зависимости от объема, который пользователь уже скачал. Вот небольшой скрипт, который это делает:
: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:
: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:
