MikroTik RouterBoard RB260GS
Настройка Hotspot с Captive Portal на Mikrotik: гостевой Wi-Fi с авторизацией
Hotspot на RouterOS — встроенный captive portal: при подключении к Wi-Fi гостя «ловит» страница, где он должен ввести логин/пароль (или просто нажать «Подключиться»). Это штатный способ сделать гостевой интернет офиса ограниченным по времени и скорости. Разберём сценарий «гостевой Wi-Fi с бесплатной авторизацией и лимитом».
Схема
[Интернет] -- [Mikrotik: ether1-WAN] -- [bridge-local]
|-- гостевой SSID: GuestWiFi
|-- пользователи попадают на captive portal
- Hotspot работает на отдельном bridge (или VLAN) — гостевой сети
- Авторизация — через пользователя в
/ip hotspot user(бесплатно) или RADIUS (платно/с SMS)
Шаг 1. Создаём bridge для гостевой сети (отдельный от локальной)
Чтобы гости не «светили» локальную сеть, изолируем их:
/interface bridge add name=bridge-guest
/interface bridge port add bridge=bridge-guest interface=ether5
# VLAN на том же физическом порту - вариант с одним портом:
/interface vlan add name=vlan20 vlan-id=20 interface=ether1
/interface bridge port add bridge=bridge-guest interface=vlan20
Если SSID на самом роутере — добавьте и wifi-интерфейс:
/interface wireless set wifi1 mode=ap-bridge ssid=GuestWiFi
bridge=bridge-guest
security.authentication-mode=wpa2-psk
security.wpa2-pre-shared-key=GuestR0ut3r
security.encryption=aes-ccm
# RouterOS 7 (new wifi stack):
/interface wifi set 1 ssid=GuestWiFi configuration.mode=ap
configuration.security.authentication-types=wpa2-psk
configuration.security.passphrase=GuestR0ut3r security.minimum-vlan-tag=off
Шаг 2. IP-адрес и DHCP для гостевой сети
/ip address add address=192.168.20.1/24 interface=bridge-guest
/ip pool add name=guest-pool ranges=192.168.20.10-192.168.20.150
/ip dhcp-server add name=dhcp-guest interface=bridge-guest
address-pool=guest-pool lease-time=4h
/ip dhcp-server network add address=192.168.20.0/24
gateway=192.168.20.1 dns-server=8.8.8.8
Шаг 3. Включаем Hotspot на гостевой сети
/ip hotspot profile set default
name="guest"
hotspot-address=192.168.20.1
dns-name=guest.local
html-directory=hotspot
login-by=try-forever
idle-timeout=10m
keepalive-timeout=2m
/ip hotspot add
name=guest-hotspot
interface=bridge-guest
address-pool=guest-pool
profile=guest
Ключевые параметры:
— login-by=try-forever — кнопка [Подключиться] без логина/пароля (бесплатный гостевой доступ)
— login-by=cookie — запоминать устройство
— login-by=http-chap, login-by=username,password — по логину
— html-directory — каталог с HTML-страницами портала (стандартные идут в коробке)
После добавления hotspot RouterOS сам поднимет NDS-ответ для портала и перехватит HTTP-запросы.
Шаг 4. Пользователи и лимиты
Бесплатный доступ «в один клик» — уже настроен через try-forever.
Учёт по логину
/ip hotspot user add name=guest01 password=guest01 profile=fast
/ip hotspot user profile add name=fast
shared-users=1 keepalive-timeout=2m
session-timeout=0
idle-timeout=10m
rate-limit="10M/10M"
rate-limit="10M/10M"— ограничение upload/download для профиляsession-timeout— максимальное время сессии (0 = без лимита)shared-users— со скольких устройств одновременно можно заходить
Ручной доступ с кнопки
Для кнопки «Получить доступ» можно выдать случайный пароль:
# Сгенерировать логины и пароли блоками (в WebFig: IP > Hotspot > Users > Generate)
/ip hotspot user generate user-prefix=guest count=50
password-length=6 fixed-address=0
Шаг 5. Ограничение скорости через Queue (связка с DSCP-статьями)
Гостевой трафик выделяем в очередь, чтобы не забирать канал у офиса:
/queue simple add name="GuestDL" target=192.168.20.0/24
max-limit=10M/10M burst-limit=20M/20M burst-threshold=5M/5M burst-time=10s
Если гостям нужно дать приоритет голоса и т.п. — по DSCP-меткам, как в статье про Queue Tree: mangle + queue tree на packet-mark.
Шаг 6. Страница портала
Стандартные порталы лежат в /files после установки hotspot (hotspot/index.html, login.html, status.html). Можете загрузить свой HTML через /files или PowerShell:
scp mylogin.html bot@192.168.19.19:/hotspot/login.html
Основные файлы портала:
| Файл | Назначение |
|---|---|
login.html |
Форма входа |
status.html |
Статус подключения |
redirect.html |
После логина |
alive.html |
Индикатор активности |
errors.html |
Ошибки |
В формах используются переменные $(ip), $(link-status) — RouterOS подставляет значения.
Закрытый доступ (пароль от администратора)
Чтобы гости не ходили через портал без вашего ведома:
/ip hotspot profile set guest guest-zone-in-interface=bridge-local
И добавьте исключение для своих сайтов (например, админ нужно):
/ip hotspot walled-garden add dst-host=api.telegram.org
/ip hotspot walled-garden add dst-host=*.google.com
walled-garden — адреса, доступные ДО авторизации. Полезно для логотипа компании или формы отправки почты.
Проверка
- Подключитесь к
GuestWiFiс телефона. - Браузер должен перекинуть на страницу портала (кэшируйте и перезагрузите, если видите старые сайты).
- Нажмите «Подключиться» (или введите пароль) — интернет откроется.
- На роутере посмотрите активные сессии:
/ip hotspot active print
- Лимит скорости — запустите speedtest, очередь
GuestDLдолжна ограничить до 10 Мбит.
Тонкости и подводные камни
- HTTPS-сайты не перехватываются порталом — попадание на сайт с HSTS (например google.com) сразу уведёт в тупик. Нормальная практика: на портале открыть http://example.com или сделать autosignup + включить сглаживание.
- Блокировка GNU/Linux CLI — libreoffice и т.п. проводят тест на подключение через HTTP-запросы к
detectportal.firefox.comи т.п. Добавьте их в walled-garden, чтобы они корректно детектили доступ. - iPhone/iOS — проверка портала через
captive.apple.com. Если не добавить его в walled-garden — iOS может считать сеть «без интернета». - Способность
try-foreverподходит для малого офиса; для платного доступа ставьте RADIUS (следующая статья в цикле про FreeRADIUS). - Wi-Fi + hotspot на одном роутере — если гостевой Wi-Fi и сотрудники в одном bridge, hive не рассекретит пароль: WPA2-ключ общий. Отдельный bridge с отдельным SSID — правильно.
- FastTrack — если используется fasttrack, hotspot-трафик может «проскочить» без перехвата. Отключите fasttrack для трафика на bridge-guest через raw rule.
Шпаргалка
/interface bridge add name=bridge-guest
/ip address add address=192.168.20.1/24 interface=bridge-guest
/ip pool add name=guest-pool ranges=192.168.20.10-192.168.20.150
/ip dhcp-server add name=dhcp-guest interface=bridge-guest address-pool=guest-pool
/ip dhcp-server network add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=8.8.8.8
/ip hotspot profile set default name="guest" login-by=try-forever heartbeats=no
/ip hotspot add name=guest-hotspot interface=bridge-guest profile=guest
/ip hotspot user add name=guest01 password=guest01 profile=default
/ip hotspot user profile add name=fast rate-limit="10M/10M"
/queue simple add name="GuestDL" target=192.168.20.0/24 max-limit=10M/10M
Проверено на: RouterOS 7.14+.
Дата: Сентябрь 2026.