Настройка гостевой HotSpot авторизации на MikroTik через звонок, смс, ваучеры и ЕСИА (госуслуги) в соответствии с законами РФ.
Вводные данные
В РФ есть законы (97-ФЗ от 05.10.2014 года, ПП № 758 от 31 июля 2014 г., № 801 от 12 августа 2014 г.), которые обязывают проводить идентификацию пользователей на общественных сетях.
Будем использовать готовое решение по авторизации, которое внедрим в гостевой Vlan. Его в дальнейшем можно подать как в CAPsMAN так и в локальную сеть.

Регистрация сервиса
Знакомимся с описание сервиса и тарифами (10 дней дают бесплатно) — https://global-hotspot.ru/ и проходим регистрацию https://areg.global-hotspot.ru/
Запрашиваем в чате тестовый период.
Получение конфигурации
На сайте нужно собрать конфигурацию под свою версию RouterOS, которую так же придется подправить. В примере используется последняя версия на момент написания статьи — Router OS 7.18.1 Stable
Все шаги настройки на сайте показаны в документации
Выбор шаблона

Внешний вид

Профиль

Места




Всю конфигурацию заливать не нужно, т.к. у нас Vlan для дальнейшего использования
/system identity set name=[/interface ethernet get 0 mac-address]
/interface set ether1 name="ether1-uplink";
/ip dhcp-client add interface=ether1-uplink disabled=no comment="default configuration";
/ip neighbor discovery set [find name="ether1-uplink"] discover=no
/ip dns set allow-remote-requests=yes
/interface bridge add name=bridge-local disabled=no auto-mac=yes protocol-mode=rstp;
/ip address add address=192.168.88.1/24 interface=bridge-local comment="default configuration";
/ip pool add name="default-dhcp" ranges=192.168.88.10-192.168.88.254;
/ip dhcp-server add name=default address-pool="default-dhcp" interface=bridge-local lease-time=10m disabled=no;
/ip dhcp-server network add address=192.168.88.0/24 gateway=192.168.88.1 comment="default configuration";
/interface bridge add name="HS_bridge" disabled=no auto-mac=yes protocol-mode=rstp
/ip address add address=10.50.50.1/24 interface=HS_bridge comment="CaptivePortalV8 network" network=10.50.50.0
/ip pool add name=hs-pool-3 ranges=10.50.50.2-10.50.50.254
/ip dhcp-server add address-pool=hs-pool-3 disabled=no interface=HS_bridge lease-time=2h name=dhcp1
/ip dhcp-server network add address=10.50.50.0/24 comment="hotspot network" gateway=10.50.50.1
/ip firewall nat add chain=srcnat out-interface=ether1-uplink action=masquerade comment="default configuration"
/interface bridge port add bridge=HS_bridge interface=wlan1
/interface bridge port add bridge=HS_bridge interface=wlan2
/interface wireless set wlan1 mode=ap-bridge ssid=CaptivePortalV8 default-forwarding=no disabled=no band=2ghz-b/g/n
/interface wireless set wlan2 mode=ap-bridge ssid=CaptivePortalV8 default-forwarding=no disabled=no band=5ghz-a/n/ac
/ip firewall nat add action=masquerade chain=srcnat comment="masquerade hotspot network" src-address=10.50.50.0/24
/radius add service=hotspot address=109.68.214.124 secret=captive_v8_radpass timeout=3000ms require-message-auth=no
/radius add service=hotspot address=62.113.98.21 secret=captive_v8_radpass timeout=3000ms require-message-auth=no
/ip hotspot profile add name=glhsprof hotspot-address=10.50.50.1 use-radius=yes login-by=http-pap
/ip hotspot profile set glhsprof radius-location-name=a703d562
/ip hotspot add address-pool=hs-pool-3 disabled=no interface=HS_bridge name=glhotspot profile=glhsprof idle-timeout=5m
/ip hotspot user profile set numbers=default keepalive-timeout=4d idle-timeout=none
/ip hotspot user profile set numbers=default address-pool=hs-pool-3
/ip hotspot user add name=admin
/ip hotspot walled-garden ip add dst-address=185.104.114.124/32
/ip hotspot walled-garden ip add dst-address=185.119.59.183/32
/ip hotspot walled-garden ip add dst-address=185.146.168.160/32
/ip hotspot walled-garden ip add dst-address=185.189.14.125/32
/ip hotspot walled-garden ip add dst-address=188.127.225.157/32
/ip hotspot walled-garden ip add dst-address=188.225.18.2/32
/ip hotspot walled-garden ip add dst-address=188.225.32.45/32
/ip hotspot walled-garden ip add dst-address=188.225.73.64/32
/ip hotspot walled-garden ip add dst-address=31.129.99.151/32
/ip hotspot walled-garden ip add dst-address=45.67.56.15/32
/ip hotspot walled-garden ip add dst-address=5.101.126.175/32
/ip hotspot walled-garden ip add dst-address=83.220.174.225/32
/ip hotspot walled-garden ip add dst-address=85.30.240.5/32
/ip hotspot walled-garden ip add dst-address=87.236.23.242/32
/ip hotspot walled-garden ip add dst-address=91.210.171.35/32
/ip hotspot walled-garden ip add dst-address=91.230.211.75/32
/ip hotspot walled-garden ip add dst-address=95.213.176.3/32
/ip hotspot walled-garden add dst-host=*.global-hotspot.ru
/ip hotspot walled-garden add dst-host=v8.global-hotspot.ru
/ip hotspot walled-garden add dst-host=*.glhs.ru
/system scheduler add interval=1m name=monv8_up on-event=":local resoult (\"mon_up\?type=routeros&uuid=f78942648087dff5544d4ef03c023c47&plid=a703d5629169f3af3a3907e63895c4d9&mac_e0=\".[/interface ethernet get 0 mac-address].\"&identity=\".[/system identity get name].\"&curtime=\".[/system clock get time].\"&uptime=\".[/system resource get uptime].\"&cpu_load=\".[/system resource get cpu-load].\"&board_name=\".[/system resource get board-name].\"&free_memory=\".[/system resource get free-memory]);local bEncoded;for i from=0 to=([:len \$resoult] - 1) do={:local char [:pick \$resoult \$i];if (\$char = \" \") do={ :set \$char \"_\"};set bEncoded (\$bEncoded . \$char) }; /tool fetch keep-result=no mode=http address=mik.hm.v8.global-hotspot.ru host=mik.hm.v8.global-hotspot.ru src-path= \$bEncoded" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=jan/01/1970 start-time=01:00:00
:if ([:len [/file find name=flash]] > 0) do={ \
/ip hotspot profile set html-directory=/hotspot; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/login/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/flash/hotspot/login.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/alogin/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/flash/hotspot/alogin.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/rlogin/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/flash/hotspot/rlogin.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/redirect/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/flash/hotspot/redirect.html mode=https; \
} \
else={\
/ip hotspot profile set html-directory=/hotspot; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/login/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/hotspot/login.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/alogin/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/hotspot/alogin.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/rlogin/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/hotspot/rlogin.html mode=https; \
/tool fetch url=https://a.glhs.ru/files/f78942648087dff5544d4ef03c023c47/mikrotik/pl/a703d5629169f3af3a3907e63895c4d9/redirect/5/fe5616f33d14b3843708c59ddf4a8b88 dst-path=/hotspot/redirect.html mode=https; \
}
Итоговая конфигурация
/ip hotspot profile
add hotspot-address=192.168.254.1 html-directory=flash/hotspot login-by=http-pap name=glhsprof radius-location-name=a703d562 use-radius=yes
/ip hotspot
add address-pool=DHCP-GUEST disabled=no interface=vlan300 name=glhotspot profile=glhsprof
/ip hotspot user profile
set [ find default=yes ] address-pool=DHCP-GUEST keepalive-timeout=4d
/ip hotspot user
add name=admin
/ip hotspot walled-garden
add comment="place hotspot rules here" disabled=yes
add dst-host=*.global-hotspot.ru
add dst-host=v8.global-hotspot.ru
add dst-host=*.glhs.ru
/ip hotspot walled-garden ip
add action=accept disabled=no dst-address=185.104.114.124
add action=accept disabled=no dst-address=185.119.59.183
add action=accept disabled=no dst-address=185.146.168.160
add action=accept disabled=no dst-address=185.189.14.125
add action=accept disabled=no dst-address=188.127.225.157
add action=accept disabled=no dst-address=188.225.18.2
add action=accept disabled=no dst-address=188.225.32.45
add action=accept disabled=no dst-address=188.225.73.64
add action=accept disabled=no dst-address=31.129.99.151
add action=accept disabled=no dst-address=45.67.56.15
add action=accept disabled=no dst-address=5.101.126.175
add action=accept disabled=no dst-address=83.220.174.225
add action=accept disabled=no dst-address=85.30.240.5
add action=accept disabled=no dst-address=87.236.23.242
add action=accept disabled=no dst-address=91.210.171.35
add action=accept disabled=no dst-address=91.230.211.75
add action=accept disabled=no dst-address=95.213.176.3
/ip address
add address=192.168.254.1/24 interface=vlan300 network=192.168.254.0
/ip firewall nat
add action=passthrough chain=unused-hs-chain comment="place hotspot rules here" disabled=yes
add action=masquerade chain=srcnat comment="masquerade hotspot network" disabled=yes out-interface-list=WAN src-address=192.168.254.0/24
/radius
add address=109.68.214.124 require-message-auth=no secret=captive_v8_radpass service=hotspot timeout=3s
add address=62.113.98.21 require-message-auth=no secret=captive_v8_radpass service=hotspot timeout=3s
Остальные настройки
В кабинете можно менять дизайн страницы, способы авторизации, ограничивать скорость, настраивать рекламу.
Итог
Система годится для любых предприятий, которые предоставляют гостевой WiFi и хотят соблюдать закон.