Пример. Шейпер и адрес-листы на подсеть для Mikrotik-Simple

Skip to end of metadata
Go to start of metadata

RouterOS позволяет устанавливать настройки шейпера и адрес-листров на целые подсети. Это может пригодиться в случае если Вы отдали подсеть абоненту, например юридическому лицу, и условия тарификации должны распространяться сразу на всю сеть.
Для реализации Вам потребуется модифицировать стандартную схему:

  1. По статье Тюнинг стандартной схемы создайте файл session в папке ubin OSS директории Вашего NAS и запишите в него листинг скрипта приведённый ниже.
  2. Добавьте абоненту учетную запись, указав в поле "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}K/${burst_threshold}K burst-time=${burst_time}s/${burst_time}s
        fi
}
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.