Просмотр Исходного

Средствами RouterOS можно реализовать разную скорость на локальную и внешнюю сеть для абонентов. Для этого нужно настроить маркировку трафика и модифицировать скрипт [session|Пользовательская схема].

h6. 1.Маркировка трафика:

Настраиваем маркировку трафика на микротик. Пакеты из адрес листа *crb_local_net* получают метку *local*. Пакеты из *transborder_net* метку *transborder*.
{code}
/ip firewall mangle
add action=mark-packet chain=prerouting dst-address-list=crb_local_net new-packet-mark=local passthrough=yes
add action=mark-packet chain=prerouting new-packet-mark=local passthrough=yes src-address-list=crb_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
{code}

h6. 2. Адрес листы:

Заполним адрес листы тестовыми данными. Допустим 10.20.30.40 адрес локального сервера, 8.8.8.8 адрес внешнего.
{code}
/ip firewall address-list
add address=10.20.30.40 list=local
add address=8.8.8.8 list=transborder
{code}

h6. 3.Настройка шейпера:

Меняем функцию user_rate_set в скрипте [session|Пользовательская схема]. В примере добавляются две очереди. Пакеты попадают в них ip адресу хоста - target, а также по метке пакета - packet-marks. Обратите внимание: в правиле transborder скорость берётся из переменных rate_in и rate_out. Подробнее об переменных в [статье|Услуги. Трафик (интернет)].
{code}
user_rate_set(){

while send_mikrotik_cmd -s "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple remove numbers=crb_${ip}-local; do :; done
while send_mikrotik_cmd -s "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple remove numbers=crb_${ip}-transborder; do :; done

send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple add name=crb_${ip}_local target=${ip}/${mask} packet-marks=local parent=none priority=8/8 queue=default-small/default-small max-limit=${ceil_out}K/${ceil_in}K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /queue simple add name=crb_${ip}_transborder target=${ip}/${mask} packet-marks=transborder priority=8/8 queue=default-small/default-small max-limit=${rate_out}K/${rate_in}K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
}
{code}

h2. Безлимитный трафик на локальные ресурсы

В примере указанном выше для каждого абонента выделяется ограничение по скорости на пользование локальными ресурсами. Если требуется дать безлимитный доступ на локальную сеть нужно выполнить пункты *"1.Маркировка трафика"* и *"2. Адрес листы"*. Отличие в пункте:

h6. 3.Настройка шейпера:

В примере абоненты распологаются за интерфейсом *ether1*.
Создайте общую очередь для локального трафика. В неё будут попадать все пакеты промаркированные меткой *local* и идущие через интерфейс *ether1*. В примере указана скорость 1Gbit.
{code}
/queue simple add name=crb_NO_shape_local target=ether1 packet-marks=local parent=none priority=8/8 queue=default-small/default-small max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
{code}

Разместите очередь *crb_NO_shape_local* на позицию *0* в списке очередей. Так как при прохождении пакетов через очередь simple, проверяются услувия всех правил сверху вниз.
{code}
/queue simple move numbers=[find name="crb_NO_shape_local"] destination=0
{code}