Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим |
просмотр истории страницы
RouterOS позволяет устанавливать настройки шейпера и адрес-листров на целые подсети. Это может пригодиться в случае если Вы отдали подсеть абоненту, например юридическому лицу, и условия тарификации должны распространяться сразу на всю сеть.
Для реализации Вам потребуется модифицировать стандартную схему:
- По статье Тюнинг стандартной схемы создайте файл session в папке ubin OSS директории Вашего NAS и запишите в него листинг скрипта приведённый ниже.
- Добавьте абоненту учетную запись, указав в поле "IPv4" адрес сети, а в поле "Маска" её префикс. На вкладке "Дополнительно" в поле "Строка дополнительных параметров активации скрипта управления" сохраните значение "issubnet".
ubin/session
#!/bin/bash . $(dirname $BASH_SOURCE)/../bin/session user_add(){ if [ "$auth_type" == "1" ]; then while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_auth; do :; done if [ ${user_activate_string} == "issubnet" ]; then send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_auth_list address=$ip/${mask} comment=${ip}_crb_auth else send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_auth_list address=$ip comment=${ip}_crb_auth fi fi } user_drop(){ if [ ${user_activate_string} == "issubnet" ]; then send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_blocked_list address=$ip/${mask} comment=${ip}_crb_blocked else send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_blocked_list address=$ip comment=${ip}_crb_blocked fi } user_redirect(){ if [ ${user_activate_string} == "issubnet" ]; then send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_negbal_list address=$ip/${mask} comment=${ip}_crb_negbal else send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_negbal_list address=$ip comment=${ip}_crb_negbal fi } user_rate_set(){ # Сначала удалим из старого сервиса, потом добавим в новый while send_mikrotik_cmd -s "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple remove numbers=crb_${ip}; do :; done if [ ${user_activate_string} != "issubnet" ]; then mask=32 fi if [[ -z ${burst_in} || -z ${burst_out} || -z ${burst_threshold} || -z ${burst_time} ]]; then send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple add name=crb_${ip} target=${ip}/${mask} parent=none priority=8/8 queue=default-small/default-small limit-at=0/0 max-limit=${ceil_out}K/${ceil_in}K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s else send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple add name=crb_${ip} target=${ip}/${mask} parent=none priority=8/8 queue=default-small/default-small limit-at=0/0 max-limit=${ceil_out}K/${ceil_in}K burst-limit=${burst_in}K/${burst_out}K burst-threshold=${burst_threshold}/${burst_threshold} burst-time=${burst_time}s/${burst_time}s fi }