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.
