Средствами RouterOS можно реализовать разную скорость на локальную и внешнюю сеть для абонентов. Для этого нужно настроить маркировку трафика и модифицировать скрипт session.
1.Маркировка трафика:
Настраиваем маркировку трафика на микротик. Пакеты из адрес листа local_net получают метку local. Пакеты из transborder_net метку transborder.
/ip firewall mangle add action=mark-packet chain=prerouting dst-address-list=local_net new-packet-mark=local passthrough=yes add action=mark-packet chain=prerouting new-packet-mark=local passthrough=yes src-address-list=local_net add action=mark-packet chain=prerouting dst-address-list=transborder_net new-packet-mark=transborder passthrough=yes add action=mark-packet chain=prerouting new-packet-mark=transborder passthrough=yes src-address-list=transborder_net
2. Адрес листы:
Заполним адрес листы тестовыми данными. Допустим 10.20.30.40 адрес локального сервера, 8.8.8.8 адрес внешнего.
/ip firewall address-list add address=10.20.30.40 list=local add address=8.8.8.8 list=transborder
3.Настройка шейпера:
Меняем функцию user_rate_set в скрипте session. В примере добавляются две очереди. Пакеты попадают в них ip адресу хоста - target, а также по метке пакета - packet-marks. Обратите внимание: в правиле transborder скорость берётся из переменных $
и $
. Подробнее об переменных в статье.
user_rate_set(){
while send_mikrotik_cmd -s "$nas_ip" "$
" "$
" /queue simple remove numbers=crb_$
-local; do :; done
while send_mikrotik_cmd -s "$nas_ip" "$
" "$
" /queue simple remove numbers=crb_$
-transborder; do :; done
send_mikrotik_cmd "$nas_ip" "$
" "$
" /queue simple add name=crb_$
_local target=$
/$
packet-marks=local parent=none priority=8/8 queue=default-small/default-small max-limit=$
K/$
K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
send_mikrotik_cmd "$nas_ip" "$
" "$
" /queue simple add name=crb_$
_transborder target=$
/$
packet-marks=transborder priority=8/8 queue=default-small/default-small max-limit=$
K/$
K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
}