Начиная с версии 1.4 система WNAM поддерживает взаимодействие с Wi-Fi точками доступа Rotek (http://www.rotek.ru). Поддержка данного оборудование функционально эквивалентна устройствам на базе CooveChilli, однако, настройка имеет ряд особенностей. Тестирование проводилось на точках доступа RT-BR24-WFN2E v2 с версией прошивки v7.54-5.43635.

Первоначальная настройка точки доступа (обновление прошивки, имя устройства, логин-пароль, IP-адресация, SSID и его безопасность) должны проводиться согласно инструкциям производителя. После этого необходимо настроить Wi-Fi сеть с гостевым порталом (режим Hotspot UAM). Для этого следует перейти в окно настройки SSID.

Затем выбрать для радио-сети режим безопасности "Hotspot (UAM)". Данный режим активирует сервис хотспота на точке.

Затем во вкладке "WIRELESS AP SETTINGS" необходимо указать IP-адрес сервера WNAM в качестве адреса RADIUS Primary server, а также Server secret (ключ). Эта точка доступа (хотспот) должны быть прописаны на сервере WNAM в конфигурации "freeradius" в файле /etc/freeradius/clients.conf.

 

Если требуется использование пересекающихся IP-адресных пространств на сетях клиентов (вероятнее всего, это так), до для разделения статистики по абонентам в системе WNAM между площадками необходимо указать идентификатор площадки во вкладке "WISPr" в параметре "Location Name".

Затем следует указать хотспоту необходимость использования внешнего (external) сервера управления и идентификации. Для этого в параметре "Login URL" необходимо указать ссылку на сервер WNAM в формате http://имясервера:порт/cp/rotek.

В окне настройки безопасности SSID в параметре "Security" следует выбрать значение "Open" (сеть без пароля) или любой другой предпочтительный вариант.

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

В списке разрешенных адресов - White list - (доступных абоненту до авторизации) необходимо разрешить доступ до сервера WNAM и до DNS-сервера по их IP-адресам.

На этом настройка точки доступа закончена. Не забудьте сохранить её конфигурацию, а для надежности - перезагрузить точку доступа и убедиться, что все введенные параметры сохранились.

Далее необходимо настроить сервер WNAM. В настройках "Конфигурация" → "Сервера доступа" необходимо создать новую запись соответствующего типа. В качестве IP-адреса следует указать адрес хотспота точки доступа. Логин и пароль - не используются в настоящий момент.

Затем следует создать запись о площадке (локации) оказания услуги. Следует обратить внимание на имя (номер площадки) - он должен совпасть с WISPr Location Name, а также на диапазон сети абонентов (192.168.5.0/24 в примере). Необходимо указать также разрешенный сервер доступа (только что настроенную запись). Для этого необходимо перейти в раздел "Конфигурация" → "Площадки" во вкладку  "Параметры" и указать соответствующие параметры.

После произведенных настроек необходимо выполнить попытку подключение к Wi-Fi сети абонентским устройством и пройти цикл авторизации. При этом интерфейс точки доступа должен отобразить статус подключения.

В дополнение к этому, интерфейс системы WNAM будет фиксировать состояние сессии подключения (раздел "Сессии").

Возможность "останова сессии" в настоящий момент не поддерживается!

В момент авторизации в лог-файле wnam.log будут присутствовать записи вида:

10:17:21.275 DEBUG [c.n.w.web.cp.CaptivePortalController:586] - CP Rotek redirect: cid=4C:57:CA:XX:XX:XX, ip=192.168.5.3, ap='ec:4c:4d:56:35:28', Rotek=192.168.5.66:3990
10:17:21.320 DEBUG [c.n.w.web.cp.CaptivePortalController:1929] - processAuthRequest ROTEK: username=4C:57:CA:XX:XX:XX, ip=192.168.5.3, server=192.168.5.66:3990, site_id=16, domain_id=b52e73ebe0e0ea9031343b07a6573c74, dst='http://provider.ru/'
10:17:21.320 DEBUG [c.n.w.web.cp.CaptivePortalController:2088] - processRedirectRequestCi mac=4C:57:CA:XX:XX:XX, method=FORM, formName=58ced8183b22c81878411fad, redirectUrl=http://provider.ru/, key=87b0afbd-2c66-4d75-9dad-88a43c2fe0dc
10:17:22.990 DEBUG [c.n.w.web.cp.CaptivePortalController:1793] - RedirectCi login: site_id=16, username=4C:57:CA:XX:XX:XX, dst='http://provider.ru/', dst_extra='null'
10:17:22.993 DEBUG [c.n.w.web.cp.CaptivePortalController:2491] - loginAtNasCi ROTEK mac=4C:57:CA:XX:XX:XX, ip=192.168.5.3, server=192.168.5.66:3990, dst='http://provider.ru/'
10:17:23.004 DEBUG [com.netams.wnam.web.cp.CoovaChilli:43] - backToRotek login len=509, server='192.168.5.66:3990', username=4C:57:CA:XX:XX:XX, enc_password=c54f0098978f98f4, dst='http://provider.ru/'
10:17:23.093 INFO [WnamRadius:594] - AUTH for new session ID=57739d0f00000001-2c0f4c, request MAC=4C:57:CA:XX:XX:XX, IP=192.168.5.3, cust_clientid=
10:17:23.109 INFO [WnamRadius:767] - ACCT Start new session ID=57739d0f00000001-2c0f4c, MAC=4C:57:CA:XX:XX:XX, IP=192.168.5.3, NAS=192.168.5.66

Если при подключении возникли проблемы в части RADIUS-взаимодействия, рекомендуется запустить freeradius в режиме отладки (freeradius -X). Корректная последовательность событий авторизации и аккаунтинга приведена ниже:

rad_recv: Access-Request packet from host 172.16.130.69 port 53106, id=59, length=273
ChilliSpot-Version = "1.3.0"
User-Name = "4C:57:CA:XX:XX:XX"
User-Password = "password"
Service-Type = Login-User
Acct-Session-Id = "57739d0f00000001"
Framed-IP-Address = 192.168.5.3
NAS-Port-Type = Wireless-802.11
NAS-Port = 1
NAS-Port-Id = "00000001"
Calling-Station-Id = "4C-57-CA-XX-XX-XX"
Called-Station-Id = "EC-4C-4D-56-35-28"
NAS-IP-Address = 192.168.5.66
NAS-Identifier = "rotek"
WISPr-Location-ID = "isocc=,cc=0,ac=0,network="
WISPr-Location-Name = "16"
WISPr-Logoff-URL = "http://192.168.5.66:3990/logoff"
Message-Authenticator = 0x214190c2a9c0eb3f33c8a0794f507179
# Executing section authorize from file /etc/freeradius/sites-enabled/default
+group authorize {
++[preprocess] = ok
[pap] WARNING! No "known good" password found for the user. Authentication may fail because of this.
++[pap] = noop
++[chap] = noop
rlm_perl: WNAM Q: AUTH Message-Authenticator=0x214190c2a9c0eb3f33c8a0794f507179 User-Password=password WISPr-Location-ID=isocc=,cc=0,ac=0,network= NAS-Port=1 Framed-IP-Address=192.168.5.3 ChilliSpot-Version=1.3.0 NAS-IP-Address=192.168.5.66 Calling-Station-Id=4C-57-CA-XX-XX-XX NAS-Identifier=rotek WISPr-Location-Name=16 User-Name=4C:57:CA:XX:XX:XX Acct-Session-Id=57739d0f00000001 Called-Station-Id=EC-4C-4D-56-35-28 NAS-Port-Type=Wireless-802.11 NAS-Port-Id=00000001 Service-Type=Login-User WISPr-Logoff-URL=http://192.168.5.66:3990/logoff
rlm_perl: RECV: IO::Socket::INET=GLOB(0x1c21918)
rlm_perl: WNAM A: OK Acct-Interim-Interval=300 Session-Timeout=600 WISPr-Bandwidth-Max-Down=5120000 WISPr-Bandwidth-Max-Up=1024000 (112)
rlm_perl: authorize reply: .OK.
rlm_perl: Added pair Message-Authenticator = 0x214190c2a9c0eb3f33c8a0794f507179
rlm_perl: Added pair User-Password = password
rlm_perl: Added pair WISPr-Location-ID = isocc=,cc=0,ac=0,network=
rlm_perl: Added pair NAS-Port = 1
rlm_perl: Added pair Framed-IP-Address = 192.168.5.3
rlm_perl: Added pair ChilliSpot-Version = 1.3.0
rlm_perl: Added pair NAS-IP-Address = 192.168.5.66
rlm_perl: Added pair Calling-Station-Id = 4C-57-CA-XX-XX-XX
rlm_perl: Added pair NAS-Identifier = rotek
rlm_perl: Added pair WISPr-Location-Name = 16
rlm_perl: Added pair User-Name = 4C:57:CA:XX:XX:XX
rlm_perl: Added pair Acct-Session-Id = 57739d0f00000001
rlm_perl: Added pair Called-Station-Id = EC-4C-4D-56-35-28
rlm_perl: Added pair NAS-Port-Type = Wireless-802.11
rlm_perl: Added pair NAS-Port-Id = 00000001
rlm_perl: Added pair Service-Type = Login-User
rlm_perl: Added pair WISPr-Logoff-URL = http://192.168.5.66:3990/logoff
rlm_perl: Added pair Session-Timeout = 600
rlm_perl: Added pair WISPr-Bandwidth-Max-Up = 1024000
rlm_perl: Added pair Acct-Interim-Interval = 300
rlm_perl: Added pair WISPr-Bandwidth-Max-Down = 5120000
rlm_perl: Added pair Cleartext-Password = password
rlm_perl: Added pair Auth-Type = PAP
++[perl] = ok
[auth_log] expand: %{Packet-Src-IP-Address} -> 172.16.130.69
[auth_log] expand: /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d -> /var/log/freeradius/radacct/172.16.130.69/auth-detail-20170602
[auth_log] /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d expands to /var/log/freeradius/radacct/172.16.130.69/auth-detail-20170602
[auth_log] expand: %t -> Fri Jun 2 10:17:30 2017
++[auth_log] = ok
+} # group authorize = ok
Found Auth-Type = PAP
# Executing group from file /etc/freeradius/sites-enabled/default
+group PAP {
[pap] login attempt with password "password"
[pap] Using clear text password "password"
[pap] User authenticated successfully
++[pap] = ok
+} # group PAP = ok
# Executing section post-auth from file /etc/freeradius/sites-enabled/default
+group post-auth {
[reply_log] expand: %{Packet-Src-IP-Address} -> 172.16.130.69
[reply_log] expand: /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/reply-detail-%Y%m%d -> /var/log/freeradius/radacct/172.16.130.69/reply-detail-20170602
[reply_log] /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/reply-detail-%Y%m%d expands to /var/log/freeradius/radacct/172.16.130.69/reply-detail-20170602
[reply_log] expand: %t -> Fri Jun 2 10:17:30 2017
++[reply_log] = ok
+} # group post-auth = ok
Sending Access-Accept of id 59 to 172.16.130.69 port 53106
Session-Timeout += 600
WISPr-Bandwidth-Max-Up += 1024000
Acct-Interim-Interval += 300
WISPr-Bandwidth-Max-Down += 5120000
Finished request 1.
Going to the next request
Waking up in 4.9 seconds.


rad_recv: Accounting-Request packet from host 172.16.130.69 port 39306, id=11, length=216
ChilliSpot-Version = "1.3.0"
ChilliSpot-Attr-10 = 0x00000002
Event-Timestamp = "июн 29 2016 13:04:08 MSK"
User-Name = "4C:57:CA:XX:XX:XX"
Acct-Status-Type = Start
Acct-Session-Id = "57739d0f00000001"
Framed-IP-Address = 192.168.5.3
NAS-Port-Type = Wireless-802.11
NAS-Port = 1
NAS-Port-Id = "00000001"
Calling-Station-Id = "4C-57-CA-XX-XX-XX"
Called-Station-Id = "EC-4C-4D-56-35-28"
NAS-IP-Address = 192.168.5.66
NAS-Identifier = "rotek"
WISPr-Location-ID = "isocc=,cc=0,ac=0,network="
WISPr-Location-Name = "16"
# Executing section preacct from file /etc/freeradius/sites-enabled/default
+group preacct {
++[preprocess] = ok
[acct_unique] Hashing 'NAS-Port = 1,NAS-Identifier = "rotek",NAS-IP-Address = 192.168.5.66,Acct-Session-Id = "57739d0f00000001",User-Name = "4C:57:CA:XX:XX:XX"'
[acct_unique] Acct-Unique-Session-ID = "9a52b5614889da5c".
++[acct_unique] = ok
+} # group preacct = ok
# Executing section accounting from file /etc/freeradius/sites-enabled/default
+group accounting {
[detail] expand: %{Packet-Src-IP-Address} -> 172.16.130.69
[detail] expand: /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d -> /var/log/freeradius/radacct/172.16.130.69/detail-20170602
[detail] /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d expands to /var/log/freeradius/radacct/172.16.130.69/detail-20170602
[detail] expand: %t -> Fri Jun 2 10:17:30 2017
++[detail] = ok
[radutmp] expand: /var/log/freeradius/radutmp -> /var/log/freeradius/radutmp
[radutmp] expand: %{User-Name} -> 4C:57:CA:XX:XX:XX
++[radutmp] = ok
rlm_perl: WNAM Q: ACCT WISPr-Location-ID=isocc=,cc=0,ac=0,network= NAS-Port=1 Acct-Status-Type=Start Framed-IP-Address=192.168.5.3 ChilliSpot-Version=1.3.0 NAS-IP-Address=192.168.5.66 Calling-Station-Id=4C-57-CA-XX-XX-XX NAS-Identifier=rotek Acct-Unique-Session-Id=9a52b5614889da5c ChilliSpot-Attr-10=0x00000002 WISPr-Location-Name=16 User-Name=4C:57:CA:XX:XX:XX Acct-Session-Id=57739d0f00000001 Called-Station-Id=EC-4C-4D-56-35-28 NAS-Port-Type=Wireless-802.11 NAS-Port-Id=00000001
rlm_perl: RECV: IO::Socket::INET=GLOB(0x1c21918)
rlm_perl: WNAM A: OK (2)
rlm_perl: Added pair WISPr-Location-ID = isocc=,cc=0,ac=0,network=
rlm_perl: Added pair NAS-Port = 1
rlm_perl: Added pair Acct-Status-Type = Start
rlm_perl: Added pair Framed-IP-Address = 192.168.5.3
rlm_perl: Added pair ChilliSpot-Version = 1.3.0
rlm_perl: Added pair NAS-IP-Address = 192.168.5.66
rlm_perl: Added pair Calling-Station-Id = 4C-57-CA-XX-XX-XX
rlm_perl: Added pair NAS-Identifier = rotek
rlm_perl: Added pair Acct-Unique-Session-Id = 9a52b5614889da5c
rlm_perl: Added pair ChilliSpot-Attr-10 = 0x00000002
rlm_perl: ERROR: Failed to create pair Event-Timestamp = и 29 2016 13:04:08 MSK
rlm_perl: Added pair WISPr-Location-Name = 16
rlm_perl: Added pair User-Name = 4C:57:CA:XX:XX:XX
rlm_perl: Added pair Acct-Session-Id = 57739d0f00000001
rlm_perl: Added pair Called-Station-Id = EC-4C-4D-56-35-28
rlm_perl: Added pair NAS-Port-Type = Wireless-802.11
rlm_perl: Added pair NAS-Port-Id = 00000001
++[perl] = ok
[attr_filter.accounting_response] expand: %{User-Name} -> 4C:57:CA:XX:XX:XX
attr_filter: Matched entry DEFAULT at line 12
++[attr_filter.accounting_response] = updated
+} # group accounting = updated
Sending Accounting-Response of id 11 to 172.16.130.69 port 39306
Finished request 2.
Cleaning up request 2 ID 11 with timestamp +63