Mikrotik. Динамический шейпинг+ Блокировка ip прописанных вручную

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Galeoner
Сообщения: 10
Зарегистрирован: 11 июл 2012, 14:27

Хочу поделиться скриптом и одновременно услышать предложения/пожелания/упреки у более опытных товарищей с данного форума.
Ну по порядку:
В DHCP сервере прописываем скрипт который выполняет следующие функции
1) добавлять простую очередь в Queues с заранее заданым лимитом скорости для одного ip
3) добавлять пользователя в /ip firewall address-list с таймаутом равным DHCP lease time
2) Блокировать ip-адреса введенные на устройстве вручную.
Самое интересное что по логике данные пункты зависят друг от друга и друг-друга дополняют.
Например если пользователь пропишет вручную ip - то он обойдет queues и будет сидет на полную скорость канала. Соотвественно по данному скрипту он попадает в список заблокированных. Если он решить играть по правилам DHCP сервера - то получив ip от него автоматически удаляется из списка и становиться пользователем по правилам и получает доступ в инет на той скорости какую указал сисадмин. Если пользователь ушел из сети то список очередей и адрес-лист от него освобождается, тем самым не загружая процессор микротика
Подготовка
Есть bridge c именем Guests-bridge. Есть DHCP сервер с именем Guests-DHCP. Какой ip и диапазон - это на ваше усмотрение.
В firewall filter добавляем два правила

/ip firewall filter
add action=add-src-to-address-list address-list=StaticGuests address-list-timeout=10s chain=forward in-interface=Guests-bridge src-address-list=!Guests-DHCP
add action=drop chain=forward src-address-list=StaticGuests

здесь можно было обойтись одним правилом но я решил отделить котлеты от мух и выделить статические адреса отдельным листом а потом его забанить.
В очередях создаю simple queue c именем Guests-Queue. Это будет основная очередь к которой будут подвязываться другие queues. В ней можно указать общую максимальную скорость для Guests-bridge.
Далее скрипт добавляем в /ip dhcp-server в поле скрипта

:local queueName "$leaseServerName-$leaseActIP";
:local leaseSrvTime [/ip dhcp-server get [find where name=$leaseServerName] lease-time]
:if ($leaseBound = "1")
do={
/ip firewall address-list remove [find where address=$leaseActIP];
/queue simple add name=$queueName target=($leaseActIP . "/32") max-limit=5M/7M parent=Guests-Queue;
/ip firewall address-list add list=$leaseServerName address=$leaseActIP timeout=($leaseSrvTime + 12h);}
else={
/queue simple remove [find where target=($leaseActIP . "/32")];
/ip firewall address-list remove [find where address=$leaseActIP]; }

построчно
1) переменная для имени в очередях
2) переменная времени для timeout в адрес-листе. Берется от времени для DHCP-Lease
3) "если ip получен то..." поехали! По правилам ниже можно понять что сначала удаляется данный ip из списка. чтобы не задваивалось.
потом создается очередь
потом добавляется в список которому доступ есть)
4) далее идут комманды отмены если время жизни ip закончилось либо его удалили из списка dhcp-lease

Заранее рад если вам понравиться. Очень важны ваши комментарии! Косяки всегда есть) Для меня важно узнать где они если они есть)


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

эм. То есть вы хотел реализовать
1 Равномерное распределение канала между абонентами
2. Обезопасить себя от тарищей которые вручную приписывают адреса?


Есть интересная задача и бюджет? http://mikrotik.site
Galeoner
Сообщения: 10
Зарегистрирован: 11 июл 2012, 14:27

vqd писал(а):эм. То есть вы хотел реализовать
1 Равномерное распределение канала между абонентами
2. Обезопасить себя от тарищей которые вручную приписывают адреса?


только "не хотел" а реализовал)! на 5 объектах сейчас работает)))
Ну типа того) В данном случае одному ip - скорость 5M/7M. Если абонент ушел из сети - ушли и лишние правила и mikrotik не перегружен.


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

1. пункт решается с помощью PCQ очереди
2. ARP reply-only + галочка в DHCP Server Add ARP foe lesses

Собственно все.


Есть интересная задача и бюджет? http://mikrotik.site
Galeoner
Сообщения: 10
Зарегистрирован: 11 июл 2012, 14:27

vqd писал(а):1. пункт решается с помощью PCQ очереди
2. ARP reply-only + галочка в DHCP Server Add ARP foe lesses

Собственно все.


1. Если решать с помощью pcq - то нужно маркировать и кучка правил в мангле. Согласен! Pешение лучше чем simple queue но больно грузит mikrotik если абонетов например 100. С simple queues такой сильной нагрузки не будет. Пробовал опытным путем.
2. Здесь к сожалению как не бился с arp отделить нормально dhcp клиентов от статики так и не смог. Может подкинешь скрипт?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

1. не надо ничего маркировать. PCQ это тип очереди, его можно и в симпл для всех сети подсунуть
2. Просто те что статикой ручками в АРП таблицу добавляем и все. Суть такова - если нет МАК адреса в Арп таблице то болт. Если клиент по дхцп адрес получил то ДХЦП подавляет сам, если надо статику то выдаем клиенту статику и прописываем в АРП связку МАК + ИП + Интерфейс


Есть интересная задача и бюджет? http://mikrotik.site
Galeoner
Сообщения: 10
Зарегистрирован: 11 июл 2012, 14:27

vqd писал(а):1. не надо ничего маркировать. PCQ это тип очереди, его можно и в симпл для всех сети подсунуть
2. Просто те что статикой ручками в АРП таблицу добавляем и все. Суть такова - если нет МАК адреса в Арп таблице то болт. Если клиент по дхцп адрес получил то ДХЦП подавляет сам, если надо статику то выдаем клиенту статику и прописываем в АРП связку МАК + ИП + Интерфейс


1) с этим вопросом разобрался быстро и действительно интереснее работает. И раньше наталкивался на PCQ в различных статьях но как-то лень было читать статью размером с рулон туалетной бумаги 54 метра)))... вот почитал и даже для новичков кратко опубликую что-нить простое и короткое
2) Вот здесь интереснее. Можно вас попросить более подробно разложить данную методику? реально бьюсь с этим вопросом и никак не могу решить. Ставлю в DHCP галочку add arp for leases но как итог - прописываю ручками ип на клиенте - инет все равно пашет...


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Не стоять )))

Когда ДХЦП отдает адрес он сам добавляет МАК в АРП таблицу. Тобиш процесс автоматизирован. Если вы прописываете статику на клиенте то МАК вам в АРП таблицу нужно добавить руками. Это справедливо когда включен reply-only


Есть интересная задача и бюджет? http://mikrotik.site
Ответить