2026-09-16
Настройка Hotspot с Captive Portal на Mikrotik: гостевой Wi-Fi с авторизацией

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 — адреса, доступные ДО авторизации. Полезно для логотипа компании или формы отправки почты.


Проверка

  1. Подключитесь к GuestWiFi с телефона.
  2. Браузер должен перекинуть на страницу портала (кэшируйте и перезагрузите, если видите старые сайты).
  3. Нажмите «Подключиться» (или введите пароль) — интернет откроется.
  4. На роутере посмотрите активные сессии:
/ip hotspot active print
  1. Лимит скорости — запустите 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *