Начиная с версии 1.6.2470 система WNAM устойчиво поддерживает переход сессии подключения абонента в браузер Safari на устройствах под управлением iOS.

Общий подход

В современных гостевых беспроводных сетях первоначальное подключение абонента к беспроводной сети производится им самим в ручном режиме. Абонент должен самостоятельно включить режим поиска доступных беспроводных сетей и в явном виде указать название сети (SSID), к которой необходимо выполнить подключение. Повторное автоматическое подключение к сети возможно, только если абонент указал в настройках своего смартфона опцию «подключаться к известным сетям автоматически» либо выбрал эту опцию для заданной сети.

При подключении к гостевой сети устройство абонента получает IP-адрес и автоматически проверяет доступность сети Интернет на этом подключении. Для этого ОС смартфона производит HTTP-запрос на веб-ресурс, расположенный в сети Интернет и ожидает получения ответа. Данная функция называется «Автовход» и может быть настроена вручную. Ресурс, на который производится запрос, зависит от модели смартфона, производителя, версии его ОС и т.п. Большинство устройств делают запросы на следующие адреса:

http://captive.apple.com/hotspot-detect.html
http://gstatic.com/generate_204

При наличии ожидаемого ответа от сервера устройство считает, что в данной беспроводной сети доступ в Интернет есть и завершает процедуру подключения. В противном случае устройство открывает специализированный веб-браузер, построенный на лимитированной по функциям версии Safari и Chrome соответственно. В этом браузере отображается полученный в ответе контент, в частности, при работе хотспота на сети - страница для аутентификации. Такой браузер, «мини браузер» или Captive Network Assistant (CNA) Browser, не имеет поддержки ряда функций JavaScript, а также удаляет все накопленные данные (например, историю запросов и Cookies) при закрытии.

Следует отметить, что, если гостевая беспроводная сеть защищена паролем (на ней установлено WPA2-Personal шифрование) или в настройках профиля сети отключена функция «Автовход», открытия мини-браузера обычно не происходит.

Закрытие мини-браузера абонентом до завершения процесса авторизации приводит к прекращению процедуры входа в сеть в ручном режиме и предложению подключиться к другой сети либо считать доступ в интернет работающим.

На большинстве Android-устройств после появления Интернета по завершении процесса авторизации приводит к автоматическому закрытию мини-браузера. Это свойство ОС Android, и невозможно перевести сессию в обычный браузер (если об этом специально не позаботился разработчик конкретного телефона), не показав ошибку сертификата.

На всех iOS устройствах мини-браузер отображает кнопку "Готово" по завершении процесса авторизации, её нажатие сворачивает мини-браузер, таким образом, не давая возможности абоненту взаимодействовать с тем сайтом, на который произошел переход в нём. Помимо этого, поскольку мини-браузер не хранит cookies, не будет работать функция "запоминание" предыдущей сессии абонента, необходимая для минимизации эффекта смены МАС-адреса устройством.

Настройка

Для того, чтобы обеспечить выход в обычный браузер Safari, потребуется выполнить ряд действий.

1. Настроить nginx таким образом, чтобы портал авторизации системы WNAM был доступен абонентам только через HTTPS-подключение. Для этого необходимо либо купить, либо выписать у Let's Encrypt (с автообновлением) SSL-сертификат, произвести настройку nginx, указать редирект на страницу авторизации по HTTPS (например, https://wifi.provider.ru/cp/mikrotik), разрешить HTTPS-трафик (dst port tcp:443) в настройках walled garden хотспота

2. Настроить  DHCP сервер так, чтобы он отдавал в качестве адреса DNS-сервера ваш собственный специально настроенный сервер, а не публично доступный сервер вроде 8.8.8.8.

3. Настроить используемый специальный для Wi-Fi абонентов DNS-сервер так, чтобы все запросы разрешения имен он пересылал вышестоящим серверам, а запросы разрешения единственного имени captive.apple.com он обрабатывал сам, причем преобразовывал имя в IP-адрес вашего сервера WNAM. Для этого придется создать фэйковую DNS-зону и прописать в ней адрес:

captive.apple.com IN A 192.168.1.100 # адрес вашего сервера WNAM

Также необходимо будет добавить в настройки хотспота, если его walled garden работает по DNS-именам, дополнительную разрешающую запись для имени captive.apple.com. В случае, если используется хотспот на основе маршрутизатора Mikrotik, не придется настраивать DNS-сервер, поскольку Mikrotik позволяет настроить статическую DNS-запись прямо у себя/

4. Настройка системы WNAM сводится к указанию "Страница выхода из CNA" в разделе "Конфигурация" → "Общие настройки".


Страница выбирается из "Конструктора страниц" раздел "Другое" (базовый шаблон типа cna_escape.html).

5a. Если используется работа портала системы WNAM на порту 443 (через защищенное HTTPS-подключение), то при входе в сеть (фактически, в редиректе абонента на хотспот Mikrotik в конце процесса) возникнет предупреждение Safari. Для того, чтобы предотвратить появление надписи о "небезопасном формуляре", в которых применяется запрос входа в сеть через абонента (посредством скрытой формы), а не через API, установить работу с хотспотом по протоколу HTTPS с доверенным сертификатом. Так, для Mikrotik необходимо установить сертификат и его закрытый ключ в хранилище сертификатов.

5b. Если произведена настройка портала системы WNAM для работы через незащищенное соединение (порт 80 или 8080), то "ошибки о небезопасном формуляре" от Safari возникать не будет.

В результате выполненных действий в логе системы WNAM появятся строки следующего вида:

19:41:26.460 DEBUG [c.netams.wnam.web.cna.CnaController:86] - Request /hotspot-detect.html from 10.130.129.98 attempt 0 total 6 UA='CaptiveNetworkSupport-390.60.1 wispr'
19:41:28.275 DEBUG [c.netams.wnam.web.cna.CnaController:86] - Request /hotspot-detect.html from 10.130.129.98 attempt 1 total 7 UA='Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
19:41:29.285 DEBUG [c.netams.wnam.web.cna.CnaController:86] - Request /hotspot-detect.html from 10.130.129.98 attempt 2 total 8 UA='CaptiveNetworkSupport-390.60.1 wispr'
19:41:34.951 DEBUG [c.n.w.s.vendors.MikrotikService:342] - CP mikrotik clicked: username=24:9E:CF:6C:3F:10, ip=10.130.129.98, dst='http://www.ru/', server_address=10.130.129.1:80, server_name='wnam1', location=1
19:41:34.987 DEBUG [com.netams.wnam.web.cp.PageGenerator:644] - processAuthRequest MIKROTIK: username=24:9E:CF:6C:3F:10, ip=10.130.129.98, server=10.130.129.1:80, site_id=1, dst='http://wnam.ru' adv curr/max=1/1
19:41:34.990 DEBUG [com.netams.wnam.web.cp.PageGenerator:1142] - captive portal redirected to SMS page, username=24:9E:CF:6C:3F:10, cust=24:9E:CF:6C:3F:10, form='5f21574af572b1641811b819'
19:41:39.551 DEBUG [c.n.w.web.cp.CaptivePortalController:904] - postSms: site_id=1, username=24:9E:CF:6C:3F:10, phone=79996662255, smscode=null, ci.key=14fdc823-51b4-4e2d-afd2-6484167a09f5
19:41:39.566 DEBUG [com.netams.wnam.web.cp.SmsHandler:84] - CP SMS phase 1: mac=24:9E:CF:6C:3F:10, ip=10.130.129.98, phone=79996662255, smscode=6489, lang=null, ci.lang=ru
19:41:39.567 DEBUG [c.n.w.services.sms.providers.TestSms:16] - Test provider SMS to: 79996662255, code: Код доступа в Интернет для устройства '24:9E:CF:6C:3F:10': 6489
19:41:42.411 DEBUG [c.n.w.web.cp.CaptivePortalController:904] - postSms: site_id=1, username=24:9E:CF:6C:3F:10, phone=79996662255, smscode=6489, ci.key=14fdc823-51b4-4e2d-afd2-6484167a09f5
19:41:42.417 DEBUG [c.n.w.web.cp.CaptivePortalController:1038] - postSmsPhase2 phone=79996662255, code=6489, r={ ip=10.130.129.98, mac=24:9E:CF:6C:3F:10, phone=79996662255, code=6489, attempts=0 }, r_ir=false, ap_m=SMS
19:41:42.420 DEBUG [c.n.w.web.cp.CaptivePortalController:1049] - CP SMS phase 2: mac=24:9E:CF:6C:3F:10, ip=10.130.129.98, phone=79996662255, smscode=6489 CORRECT in 2855 ms.
19:41:42.423 DEBUG [com.netams.wnam.web.cp.PageGenerator:387] - processRedirectRequestCi mac=24:9E:CF:6C:3F:10, method=FORM, formName=5f215761f572b1641811b82f, redirectUrl=http://wnam.ru, key=14fdc823-51b4-4e2d-afd2-6484167a09f5
19:41:44.244 DEBUG [c.n.w.web.cp.CaptivePortalController:2003] - webLoginCi: site_id=1, username=24:9E:CF:6C:3F:10, dst='http://wnam.ru', dst_extra='http://wnam.ru'
19:41:44.244 DEBUG [com.netams.wnam.web.cp.PageGenerator:771] - loginAtNasCi MIKROTIK mac=24:9E:CF:6C:3F:10, ip=10.130.129.98, server=10.130.129.1:80, dst='http://wnam.ru'
19:41:44.247 DEBUG [c.n.w.s.vendors.MikrotikService:288] - backToMikrotik login len=533, server='10.130.129.1:80', username=24:9E:CF:6C:3F:10, password=password, dst='http://wnam.ru'
19:41:46.788 DEBUG [c.n.wnam.services.WnamCmdService:1420] - AUTH for new session ID=80d00018-200801-6c3f20, request MAC=24:9E:CF:6C:3F:10, IP=10.130.129.98, cust_clientid=iAX, site_id=1
19:41:46.817 DEBUG [c.n.wnam.services.WnamCmdService:663] - ACCT Start existing session ID=80d00018-200801-6c3f20, MAC=24:9E:CF:6C:3F:10, IP=10.130.129.98, NAS_IP=172.16.130.10, site_id=1

Весь процесс подключения → идентификации → авторизации показан на видео.

cna_escape.mp4


  • No labels