Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Начиная с версии 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.

В случае, если вы используете хотспот на основе маршрутизатора Микротик, вам не придется настраивать DNS-сервер, поскольку Микротик позволяет настроить статическую DNS-запись прямо у себя:

Image Added

Image Added


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

Image Added

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

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


В результате выполненных действий в логе 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

Весь процесс подключения-идентификации-авторизации показан на этом видео:

View file
namecna_escape.mp4
height250