Passo 1


Checar se o equipamento possui os recursos necessários.


Basicamente o equipamento tem que permitir, ou em modo standalone ou em controladora, a configuração de três ativos dentro dele:


Hotspot com Captive portal externo: Deixar o usuário apontar um url externo na autenticação, por ex: https://luisagner.mambowifi.com


Radius client: Deixar o usuário apontar Radius externo, ou seja deixar colocar o IP de Radius da empresa, junto com a secret, tanto no authentication, tanto no accounting, então além de deixar apontar o nosso IP e secret, o equipamento precisa deixar apontar que vamos usar authentication e accounting, geralmente são assinalados com as portas 1812 e 1813.


Walled Garden: Deixar o usuário apontar os dominios e ips que são isolados, ou seja, quais dominios ou ips o usuário pode acessar antes de se autenticar, isso é meio lógico, pois ele precisa ser autorizado acessar a plataforma e os ativos em volta dela para poder se autenticar.


Mais infos nesse post:  https://suporte.mambowifi.com/support/solutions/articles/16000069493-requisitos-necess%C3%A1rios-para-integrar-um-equipamento-ao-wspot


Passo 2

Checar se o equipamento envia todas as informações que a Mambo precisa.


Esse passo serve para ver quais os parâmetros que a AP ou a controladora envia para o servidor de hotspot, esse passo é somente executado se o passo 1 estiver tudo ok

Para saber os parâmetros que o equipamento envia:


Aponte dentro da AP ou controladora o URL: https://mambowifi.com/temp/homologacao.php

Ao acessar a rede, teremos uma tela parecida com a abaixo. 

Precisamos por padrão dos itens que estão representados pelos parâmetros conforme abaixo.

  • Mac do dispositivo do usuário - client_mac
  • Mac do Access Point - ap_mac
  • Endereço do NAS - switch_url


obs: o nome dos parâmetros pode mudar de fabricante para fabricante, o que o analista precisar fazer é analisar se chegou o mac do Access point, endereço do NAS e o mac do dispositivo.



Passo 3


Criar um arquivo PHP, JS etc para que o servidor envia a autenticação para a AP.


Sem dúvidas a parte mais chata de se fazer, nesse passo, você tem que pegar os parâmetros que a AP envia, criar um formulário de autenticação e postar de volta para a AP a autenticação do usuário, para auxiliar você nessa etapa, voce pode:


- Ler a documentação da fabricante

- Configurar um captive portal interno e analisar o código fonte da página

- Acessar plataforma de outras empresas de hotspot e pegar os parâmetros via captura HAR

- Verificar se algum outro arquivo de outro fabricante funciona.

- Pedir ajuda aos devs



Aqui vai alguns arquivos que você pode se espelhar:


https://mambowifi.com/temp/teltonika/teltonika.php

https://mambowifi.com/temp/omada-tplink.html

https://mambowifi.com/temp/intelbras.php


OBS: esses arquivos estão hospedados no FTP do site da Mambo, caso não tenha acesso, fale com alguém do time de tecnologia ou até de operações que eles podem te ajudar, esse mesmo servidor hospeda os scripts de Mikrotik e pfsense.


NESSA PARTE, CHAMAR O THIAGO CASO PRECISE DOS DEVS.


Passo 4


Autenticar usuário com Radius local e o arquivo criado


Para fazer a homologação de um equipamento, você precisa subir um freeradius na sua estrutura, ou em alguma nuvem, eu uso a digitalocean, mas você pode usar um virtualbox se a AP estiver na sua estrutura ou acessando sua rede.


Para instalar o freeradius, você deve escolher uma distribuição linux que mais te agrada, no meu caso é o Centos, então ai vai um manual para o mesmo: https://www.programmersought.com/article/45982287961/


Dica: estude linux......


Como sou bonzinho, segue o link para uma maquina pronta para virtual box:

https://drive.google.com/file/d/1804RuW35eYuBoyG1Xnz-rlYygx-Kt324/view?usp=sharing


usuário: root

senha: 1234


Após fazer a instalação, aponte o servidor Radius no equipamento ou controladora a ser homologada, precisamos que ela autentique o usuário


Também aponte o arquivo PHP, JS etc que você criou para ser usado como formulário.


Se você conseguir autenticar o usuário usando esses dois ativos, vamos para o passo 5.


Abaixo há uma imagem que ilustra o passo a passo de um acesso e autenticação em um hotspot

 

Configure o radius para aplicar limite de banda e limite de tempo na conexão.

 

Se você conseguir autenticar o usuário usando esses dois ativos, vamos para o passo 5.

 

ATENÇÃO: faça a autenticação utilizando um usuário no formato #123#h2h2dnc8s7s. A aplicação Mambo utiliza esse formato e já tivemos problemas com alguns fabricantes por causa do #

Recomendo que crie o usuário usando Daloradius


Passo 5


Capturar pacotes de Radius.


Achou que acabou? Precisamos que seja capturado os pacotes que o Radius recebe do equipamento, isso porque precisamos que ele envie os seguintes pacotes:


- Access-Request

- Accountig Request , sendo esse os pacotes de START, interim update e STOP


EX:


2) Received Access-Request Id 109 from 34.66.162.71:60682 to 137.184.216.242:1812 length 464

(2)   User-Name = "teste"

(2)   User-Password = "teste"

(2)   NAS-IP-Address = 192.168.15.7

(2)   Service-Type = Login-User

(2)   Framed-IP-Address = 192.168.15.119

(2)   WISPr-Logoff-URL = "https://ruckus.cloud/g/guest/api/tenant/642be567287d489bb0ef4275d0ce9b6a/external"

(2)   Ruckus-VLAN-ID = 1

(2)   Ruckus-SSID = "radius"

(2)   Ruckus-Wlan-Name = "26deca717fd0404c84cbecef2c263ec4"

(2)   Ruckus-Zone-Name = "6f812f12be7440e59290f0eced45c471"

(2)   Attr-26.25053.138 = 0x5265646d694e6f7465372d5265646d694e6f7465

(2)   Attr-26.25053.139 = 0x416e64726f6964

(2)   Attr-26.25053.140 = 0x416e64726f6964

(2)   Attr-26.25053.156 = 0x536d61727470686f6e6573

(2)   Called-Station-Id = "EC-8C-A2-3B-B3-B0:radius"

(2)   Calling-Station-Id = "20-34-FB-9C-6E-60"

(2)   NAS-Identifier = "EC-8C-A2-3B-B3-B0"

(2)   NAS-Port-Type = Wireless-802.11

(2)   Framed-Interface-Id = adb7:9f9f:2fdf:e34e

(2)   Framed-IPv6-Prefix = 2804:431:cfcc:1fd6::/64

(2)   Event-Timestamp = "May 27 2022 01:28:25 UTC"

(2)   Message-Authenticator = 0xd2e608261a8e97f5e0a39dc66d81e8dd

(2)   Proxy-State = 0x323430




(6) Received Accounting-Request Id 32 from 34.66.162.72:33290 to 137.184.216.242:1813 length 303

(6)   Acct-Session-Id = "6290290F-3BB3B000"

(6)   Framed-IP-Address = 192.168.15.119

(6)   Framed-Interface-Id = adb7:9f9f:2fdf:e34e

(6)   Framed-IPv6-Prefix = 2804:431:cfcc:1fd6::/64

(6)   Acct-Multi-Session-Id = "ec8ca27bb3bc2034fb9c6e606290290f0004"

(6)   Acct-Link-Count = 1

(6)   Acct-Status-Type = Start

(6)   Acct-Authentic = RADIUS

(6)   User-Name = "teste"

(6)   NAS-IP-Address = 192.168.15.7

(6)   NAS-Identifier = "EC-8C-A2-3B-B3-B0"

(6)   NAS-Port = 1

(6)   Called-Station-Id = "EC-8C-A2-3B-B3-B0:radius"

(6)   Calling-Station-Id = "20-34-FB-9C-6E-60"

(6)   NAS-Port-Type = Wireless-802.11

(6)   Connect-Info = "CONNECT 802.11a/n/ac"

(6)   Event-Timestamp = "May 27 2022 01:28:25 UTC"

(6)   Ruckus-SSID = "radius"

(6)   Ruckus-BSSID = 0xec8ca27bb3bc

(6)   Ruckus-VLAN-ID = 1

(6)   Ruckus-SCG-CBlade-IP = 574792264

(6)   Proxy-State = 0x33


(10) Received Accounting-Request Id 175 from 34.66.162.72:33290 to 137.184.216.242:1813 length 345

(10)   Acct-Session-Id = "6290290F-3BB3B000"

(10)   Framed-IP-Address = 192.168.15.119

(10)   Framed-Interface-Id = adb7:9f9f:2fdf:e34e

(10)   Framed-IPv6-Prefix = 2804:431:cfcc:1fd6::/64

(10)   Acct-Multi-Session-Id = "ec8ca27bb3bc2034fb9c6e606290290f0004"

(10)   Acct-Link-Count = 1

(10)   Acct-Status-Type = Interim-Update

(10)   Acct-Authentic = RADIUS

(10)   User-Name = "teste"

(10)   NAS-IP-Address = 192.168.15.7

(10)   NAS-Identifier = "EC-8C-A2-3B-B3-B0"

(10)   NAS-Port = 1

(10)   Called-Station-Id = "EC-8C-A2-3B-B3-B0:radius"

(10)   Calling-Station-Id = "20-34-FB-9C-6E-60"

(10)   NAS-Port-Type = Wireless-802.11

(10)   Connect-Info = "CONNECT 802.11a/n/ac"

(10)   Event-Timestamp = "May 27 2022 01:38:25 UTC"

(10)   Ruckus-SSID = "radius"

(10)   Ruckus-BSSID = 0xec8ca27bb3bc

(10)   Ruckus-VLAN-ID = 1

(10)   Ruckus-SCG-CBlade-IP = 574792264

(10)   Acct-Input-Packets = 19404

(10)   Acct-Output-Packets = 74914

(10)   Acct-Input-Octets = 1282588

(10)   Acct-Output-Octets = 107616623

(10)   Ruckus-Sta-RSSI = 61

(10)   Acct-Session-Time = 600

(10)   Proxy-State = 0x34

(10) # Executing section preacct from file /etc/raddb/sites-enabled/default



(14) Received Accounting-Request Id 56 from 34.66.162.72:33290 to 137.184.216.242:1813 length 351

(14)   Acct-Session-Id = "6290290F-3BB3B000"

(14)   Framed-IP-Address = 192.168.15.119

(14)   Framed-Interface-Id = adb7:9f9f:2fdf:e34e

(14)   Framed-IPv6-Prefix = 2804:431:cfcc:1fd6::/64

(14)   Acct-Multi-Session-Id = "ec8ca27bb3bc2034fb9c6e606290290f0004"

(14)   Acct-Link-Count = 1

(14)   Acct-Status-Type = Stop

(14)   Acct-Authentic = RADIUS

(14)   User-Name = "teste"

(14)   NAS-IP-Address = 192.168.15.7

(14)   NAS-Identifier = "EC-8C-A2-3B-B3-B0"

(14)   NAS-Port = 1

(14)   Called-Station-Id = "EC-8C-A2-3B-B3-B0:radius"

(14)   Calling-Station-Id = "20-34-FB-9C-6E-60"

(14)   NAS-Port-Type = Wireless-802.11

(14)   Connect-Info = "CONNECT 802.11a/n/ac"

(14)   Event-Timestamp = "May 27 2022 01:39:08 UTC"

(14)   Ruckus-SSID = "radius"

(14)   Ruckus-BSSID = 0xec8ca27bb3bc

(14)   Ruckus-VLAN-ID = 1

(14)   Ruckus-SCG-CBlade-IP = 574792264

(14)   Acct-Input-Packets = 19441

(14)   Acct-Output-Packets = 75007

(14)   Acct-Input-Octets = 1288044

(14)   Acct-Output-Octets = 107629608

(14)   Ruckus-Sta-RSSI = 67

(14)   Acct-Session-Time = 643

(14)   Acct-Terminate-Cause = Lost-Carrier

(14)   Proxy-State = 0x35


Para capturar esses pacotes no freeradius, você deve entrar o mesmo em modo debug, o comando no linux é radiusd -X


ATENÇÃO: Neste ponto temos que confirmar se o equipamento está enviando

  • Os seguintes atributos no pacote de authentication para o radius:

    • User-Name 

    • Session-Timeout

    • WISPr-Bandwidth-Max-Down

    • WISPr-Bandwidth-Max-Up

  • Os seguintes atributos no pacote de accounting para o radius:

    •    Acct-Session-Id

    •    Framed-IP-Address

    •    Acct-Status-Type

    •    User-Name

    •    Called-Station-Id

    •    Calling-Station-Id

    •    Acct-Input-Packets

    •    Acct-Output-Packets

    •    Acct-Input-Octets

    •    Acct-Output-Octets

  • Se o Called-Station-Id é possui o mesmo valor do ap_mac recebido no passo 2

  • Se o Calling-Station-Id é possui o mesmo valor do client_mac recebido no passo 2

  • Se esse equipamento funciona como router ou bridge

    • Isso é uma nomenclatura antiga do Mambo e a regra é:

      • Se o Acct-Output-Octets representa o download e o Acct-Input-Octets representa o upload feito pelo dispositivo conectado, esse equipamento será configurado como Router

      • Se o Acct-Output-Octets representa o upload e o Acct-Input-Octets representa o download feito pelo dispositivo conectado, esse equipamento será configurado como Bridge

 


Passo 6


Passar para os devs... a melhor parte, basicamente você pega todos os dados, todos os arquivos, relatório de tudo, compacta dentro de um zip contexto no titulo o equipamento e homologação e abre um support request no Jira para os devs.


Passo 7


Crie um manual com o passo a passo para configurar o equipamento com a Mambo WiFi


Você deve acessar a base de conhecimento, criar um arquivo com riqueza de detalhes de como configurar o equipamento, dando dicas, alertas etc para que o usuário consiga fazer a instalação sempre, de preferência, sozinho.


Após o mesmo ser feito, comunique o tipo de desenvolvimento para inserir o manual na aba configurar equipamento, dentro do portal.


OBS: As informações de IP de radius, secret de radius e dominio dos clientes não deve ser mencionada no manual, e sim uma informação de que esses dados, você encontra dentro do portal, se tiver alguma dúvida, veja algum manual da base para se espelhar.