Всем доброго времени суток.
Возникла необходимость сделать на Микротике следующее:
Есть клиенты для Вайфая, надо их отключать и блокировать через 10 минут, что бы не смогли снова подключиться.
После копания в интернете нашёл следующий наборчик.
Для реализации сценария, где клиенту выдаётся IP-адрес один раз, затем он блокируется и отключается от Wi-Fi, можно использовать скрипт MikroTik. Такой подход полезен для ограничения доступа к Wi-Fi после первого подключения.
Алгоритм:
При подключении клиента через DHCP ему выдаётся IP-адрес.
После выдачи IP-адреса клиент:
Добавляется в список блокировки (firewall address-list).
Отключается от Wi-Fi (удаляется из регистра таблицы Wi-Fi).
В результате клиент больше не может подключаться к Wi-Fi.
Скрипт для DHCP Lease Script
Этот скрипт добавляется в Lease Script DHCP-сервера.
Скрипт:
:local leaseBound $leaseBound
:local macAddress $leaseActMAC
:local ipAddress $leaseActIP
:local leaseComment [/ip dhcp-server lease get [find where mac-address=$macAddress] comment]
# Если аренда активна (клиент подключился к сети)
:if ($leaseBound = "true") do={
# Если это первый раз (нет комментария у аренды)
:if ($leaseComment = "") do={
:log info ("Выдача IP-адреса $ipAddress для клиента: $macAddress")
# Помечаем, что IP выдан
/ip dhcp-server lease set [find where mac-address=$macAddress] comment="Issued"
# Добавляем клиента в список блокировки
/ip firewall address-list add list=BlockedClients address=$ipAddress comment="Blocked $macAddress"
# Отключаем клиента от Wi-Fi
:log warning ("Клиент $macAddress (IP $ipAddress) добавлен в блокировку и будет отключён от Wi-Fi")
/interface wireless access-list add mac-address=$macAddress authentication=no comment="Blocked $macAddress"
/interface wireless registration-table remove [find mac-address=$macAddress]
} else={
:log info ("Клиент $macAddress с IP $ipAddress уже получил адрес ранее и заблокирован")
}
} else={
:log info ("Аренда для клиента $macAddress с IP $ipAddress завершена")
}
Объяснение:
$leaseBound: Проверяет, активна ли аренда (true), то есть клиент подключился к DHCP.
$leaseActMAC: MAC-адрес клиента.
$leaseActIP: IP-адрес, выданный клиенту.
Комментарий: Используется для проверки, выдавался ли адрес раньше.
Список блокировки: Клиент добавляется в BlockedClients для дальнейшей блокировки в Firewall.
Отключение от Wi-Fi:
Добавляем MAC-адрес клиента в wireless access-list с запретом на аутентификацию.
Удаляем клиента из таблицы wireless registration-table, чтобы он немедленно отключился.
Настройка блокировки в Firewall
После добавления клиента в BlockedClients, необходимо настроить правило в Firewall, чтобы блокировать весь трафик от заблокированных клиентов.
Пример правила:
/ip firewall filter add chain=forward src-address-list=BlockedClients action=drop comment="Блокировка клиентов после выдачи IP"
Настройка Wi-Fi
Для корректной работы отключения от Wi-Fi убедитесь, что:
Ваше Wi-Fi-устройство настроено через /interface wireless.
Используется режим управления доступом через access-list (это позволяет запрещать аутентификацию отдельных клиентов).
Дополнительно
Автоматическое удаление из блокировки
Если вы хотите, чтобы клиент автоматически разблокировался через определённое время, можно добавить timeout для записи в список BlockedClients и в wireless access-list. Например:
/ip firewall address-list add list=BlockedClients address=$ipAddress timeout=1d comment="Blocked $macAddress"
/interface wireless access-list add mac-address=$macAddress authentication=no comment="Blocked $macAddress" timeout=1d
Это удалит блокировку через 1 день.
Проверка логов
Вы можете отслеживать все действия скрипта в разделе Log MikroTik. Скрипт выводит сообщения о выдаче IP, добавлении в блокировку и отключении от Wi-Fi.
***
Но при добавлении "access-list" в wireless ругается на timeout (я и сам не смог найти этого)
Проще говоря не хочет вся эта конструкция не хочет работать.
Может у кого-то возникнет желание (не безвозмездное) глянуть и поправить.
Дополнение: пробовал и на шестёрке, и на семёрке.
Нужна помощь со скриптом.
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 9
- Зарегистрирован: 20 авг 2017, 10:32
MIKROTIK hAP lite classic RB941-2nD (был)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
-
- Сообщения: 1939
- Зарегистрирован: 09 июл 2014, 12:33
У wireless access-list нет таймаута. Поэтому и не добавляется.
И не понятна логика.
IP выдается из DHCP. После отключения заблокированного клиента аренда освобождается, а адрес на сутки попадает в заблокированный адрес лист.
Но этот адрес может быть выдан следующему клиенту, раз он в DHCP свободен. И не получится у этого клиента никуда подключиться.
И не понятна логика.
IP выдается из DHCP. После отключения заблокированного клиента аренда освобождается, а адрес на сутки попадает в заблокированный адрес лист.
Но этот адрес может быть выдан следующему клиенту, раз он в DHCP свободен. И не получится у этого клиента никуда подключиться.
-
- Сообщения: 9
- Зарегистрирован: 20 авг 2017, 10:32
Подскажите как правильно сделать?Erik_U писал(а): ↑09 янв 2025, 05:45 У wireless access-list нет таймаута. Поэтому и не добавляется.
И не понятна логика.
IP выдается из DHCP. После отключения заблокированного клиента аренда освобождается, а адрес на сутки попадает в заблокированный адрес лист.
Но этот адрес может быть выдан следующему клиенту, раз он в DHCP свободен. И не получится у этого клиента никуда подключиться.
MIKROTIK hAP lite classic RB941-2nD (был)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
- Virtue
- Сообщения: 146
- Зарегистрирован: 07 мар 2014, 10:17
-
- Сообщения: 1939
- Зарегистрирован: 09 июл 2014, 12:33
Точно не знаю. Скорее всего, для таких (или похожих) задач придумали хотспот.
Вот описание, например.
https://www.lanmart.ru/blogs/mikrotik-hotspot
Переходим на вкладку Server Profiles и заходим в свойства hsprof1, где снимаем галочку с пункта Cookie и устанавливаем у Trial. Обратите внимание, внизу в пункте Trial Uptime Limit указано время, в течении которого клиент может работать, по истечении будет заблокирован на 1 день - это указано в пункте Trial Uptime Reset.
-
- Сообщения: 9
- Зарегистрирован: 20 авг 2017, 10:32
Спасибо огромное, а ведь это гораздо более простой и надёжный вариант. Буду вечером пробовать.Erik_U писал(а): ↑09 янв 2025, 13:05Точно не знаю. Скорее всего, для таких (или похожих) задач придумали хотспот.
Вот описание, например.
https://www.lanmart.ru/blogs/mikrotik-hotspotПереходим на вкладку Server Profiles и заходим в свойства hsprof1, где снимаем галочку с пункта Cookie и устанавливаем у Trial. Обратите внимание, внизу в пункте Trial Uptime Limit указано время, в течении которого клиент может работать, по истечении будет заблокирован на 1 день - это указано в пункте Trial Uptime Reset.
MIKROTIK hAP lite classic RB941-2nD (был)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
-
- Сообщения: 9
- Зарегистрирован: 20 авг 2017, 10:32
Ещё раз спасибо, всё заработало как я и хотел.Erik_U писал(а): ↑09 янв 2025, 13:05
Вот описание, например.
https://www.lanmart.ru/blogs/mikrotik-hotspotПереходим на вкладку Server Profiles и заходим в свойства hsprof1, где снимаем галочку с пункта Cookie и устанавливаем у Trial. Обратите внимание, внизу в пункте Trial Uptime Limit указано время, в течении которого клиент может работать, по истечении будет заблокирован на 1 день - это указано в пункте Trial Uptime Reset.
MIKROTIK hAP lite classic RB941-2nD (был)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)
MIKROTIK hAP ac2 RBD52G-5HacD2HnD-TC (был)
MIKROTIK hAP ax² (C52IG-5HAXD2HAXD-TC)