Como configurar Roaming de clientes wifi forma funcional no openwrt!
Primeiro o que é roaming?
resposta simples e curta: a migração SEM PERDA DE CONEXÃO pelo dispositivo cliente entre raidos diferentes sobre o mesmo SSID
resposta longa: um blackholl das bermudas maquiavélico complicado para um c#####ho de configurar
Pré-requisitos para fazer a magia negra funcionar:
Ter um AP com suporte nativo(no nosso caso utilizando openwrt a gente da um jeito com instalação de um pacote)
Ter mais de 1 radio WIFI transmitindo o SSID da sua rede
Mesmo SSID da rede em configurado em todos os rádios
Mesma senha do SSID configurado em todos os rádios
Mesma criptografia(WPA2 OU WPA3) do SSID configurado em todos os rádios
obtendo os pré-requisitos a cima vc esta elegível para fazer a magia negra
obs. vc pode misturar multi vendor na mesma rede e fazer funcionar do mesmo jeito, des de que todos os aparelhos utilizados passem pelo check list acima, tipo ter uma aparelho openwrt com tudo e um tplink com FW original suporte ao 802.11kvr ativo.
SIM, a tplink colocou os protocolos padronizados 802.11k e 802.11v sendo possiveis de ativação apenas se ativar a função mesh, para "ludibriar" o leigo, a achar que a função só funciona entre aparelhos da mesma marca.
Vou utilizar como exemplo meu aparelhos Xiaomi Redmi Router AX6000
Primeiro passo para configurar o openwrt para funcionar:
OBRIGATORIAMENTE ter instalado o pacote wpad-mbedtls no aparelho, o FW padrão baixado do site do openwrt vem com o pacote base wpad-basic-mbedtls.
recomendação de como instalar o pacote completo: entre no openwrt firmware seletor, localize o seu aparelho, solicite um FW personalizado com o pacote completo; é possível fazer a reinstalação do pacote completo em aparelhos que já estão rodando openwrt, mas é extremamente problemático a instalação, pois interfere diretamente com o pacote hostapd, o mais fácil é tirar um BK do openwrt, solicitar o FW com o wpad-mbedtls completo flashar o novo FW e voltar o arquivo de BK com as configs.
Recomendação, nesta tela de pedido de FW personalizado, inclua o pacote luci-app-dawn
este pacote é um script descentralizado, que faz com que o proprio openwrt force a aparelhos burros(que não suportam 802.11kvr), a fazer o roaming de forma obrigatória, literalmente desconectando o mesmo do AP com sinal ruim quando após calculo de 3 ticks entre os APs com openwrt definir que o cliente burro esta com sinal melhor de outro AP mais próximo a ele.
Segundo configure o SSID de suas redes da seguinte forma:
Terceiro:
Repita as configurações do passo anterior em CADA SSID que vc tenha em sua rede.
Se tiver 5 AP trasmitindo sua rede wifi em radio 2.4GHz, configure em cada um deles a mesma config
Se tiver 8 AP trasmitindo sua rede wifi em radio 5GHz, configure em cada um deles a mesma config
Se tiver AP trasmitindo sua rede wifi em radio 6GHz(wifi 6E e wifi 7 no caso), configure em cada um deles a mesma config
Se tiver o mesmo AP, SIM! o mesmo ap! pq eles vem com radios 2.4GHz, 5GHz e 6GHz individualizados! configure o SSID da mesma forma em cada um deles.
Quarto:
Aproveito a magia negra de transitar dentro de sua wifi entre multiplos radios dentro da sua rede sem tomar drop de pacotes, quando ocorrer roaming e sempre ter o melhor aparelho com a melhor taxa de desempenho no link wifi servindo seu dispositivo!
O como dispositivo cliente trata neste caso, no meu S20fe com modo desenvolvedor do andriod ativado e opção de exibir mais detalhes sobre rede wifi;
é possível ver que o S20fe já tem previamente a informação de quais rádios ele pode migrar, que tipo de rede(se é rede 2.4GHz, 5GHz, wifi6[no meu caso todos meu aps aqui agora são wifi6, mas se tiver aps wifi4 wifi5 wifi 6e e wifi7 ele ira saber de forma antecipada), nível de sinal(rssi) para cada rede e o score de cada ssid transmitido por cada radio.
Para confirmar que o Roaming esta funcionando adequadamente, transite entre os APs e veja no System Log do openwrt se é apresentado o seguintes registros:
Código:
Tue Jun 25 15:44:40 2024 daemon.info hostapd: DU-5GHZ: STA 7c:8b:xxxxxxxxxx IEEE 802.11: authenticated
Tue Jun 25 15:44:40 2024 daemon.notice hostapd: DU-5GHZ: STA-OPMODE-N_SS-CHANGED 7c:8b:xxxxxxxxxx 1
Tue Jun 25 15:44:40 2024 daemon.info hostapd: DU-5GHZ: STA 7c:8b:xxxxxxxxxx IEEE 802.11: associated (aid 2)
Tue Jun 25 15:44:40 2024 daemon.notice hostapd: DU-5GHZ: AP-STA-CONNECTED 7c:8b:xxxxxxxxxx auth_alg=open
Tue Jun 25 15:44:40 2024 daemon.info hostapd: DU-5GHZ: STA 7c:8b:xxxxxxxxxx RADIUS: starting accounting session 89xxxxxxxxxxxxxxxxxxxxxxx
Tue Jun 25 15:44:40 2024 daemon.info hostapd: DU-5GHZ: STA 7c:8b:xxxxxxxxxx WPA: pairwise key handshake completed (RSN)
Tue Jun 25 15:44:40 2024 daemon.notice hostapd: DU-5GHZ: EAPOL-4WAY-HS-COMPLETED 7c:8b:xxxxxxxxxx
BONUS TIME!
NÃO É NECESSARIO a instalação do luci-app-dawn para utilização apenas dos protocolos nativos 802.11kvr, mas ao utilizar o DAWN é no MINIMO recomendo que vc tenha o 802.11r ativo em seus radios!
obs. o 802.11r já vem nativo com o pacote basico wpad-basic-mbedtls que vem preinstalado pelo openwrt.
o pacote extra que recomendei a instalação, o luci-app-dawn, ele é basicamente instalar e esquecer, não é necessario realizar configurações extras para que ele funcione.
a menos que vc queira escovar bit e ajustar o nivel da qualidade de sinal, forma de calculo, tempo do tick entre cada calculo, deixar o calculo mais agresivo ou relaxado.
caso queira seguir com a escovasão de bit, vc devera se conectar via ssh no openwrt e editar o seguinte arquivo de configuração: /etc/config/dawn
o como ajustar as configurações, recomendo dar uma lida no git do pacote no seguinte link: https://github.com/berlin-open-wireless-lab/DAWN/blob/master/CONFIGURE.md
para exemplo de configuração, esta é minha escovação de bit que fiz no dawn:
apos editar o arquivo de configurações, sempre executar o comando "/etc/init.d/dawn restart" no ssh ou realizar reboot completo do AP, para que elas sejam aplicadas.
Para conferir status do funcionamento do DAWN, e principalmente ter a informação mais util, a taxa de utilização sobre o ar no canal em que seu SSID esta sendo propagado, simplesmente entre no menu "DAWN" e depois "Network Overview"
Sera listado TODOS os SSID que são propagados pelo AP acessado, juntamente com dados propagados dos outros AP vizinhos da mesma rede que venham a trasmitir os mesmos SSID que o AP acessado.
Na print a baixo esta minha rede principal no momento, os aparelhos clientes são 1 Galaxy A30 e 2 Galaxy S20fe, cada um com sua cor.
a taxa exibida em "Utilization", é o calculo da utilização do ar em cada canal na minha localidade, o que isso quer dizer, que para variar os canais 11 e 1 da faixa 2.4GHz estão extremamente saturados, e é possivel prever que havera interferencias e perda de desempenho.
em "Access Point" é a lista de AP e cada RADIO que estão trasmitindo este SSID no momento
a outra tela que o pacote DAWN disponibiliza é a "Hearing Map", o que esta tela exibe?
Resposta: o resultado do SCORE do calculo realizado entre CADA cliente e possivel cliente na proximidade dos seus AP, e propagando a listagem para todos os AP dentro da mesma rede já fazerem previa utilização dos dados.
com este score o dawn pode forçar, vide o quam agresivo ele estiver configurado, a literalmente a desconectar forçadamente o cleinte do AP com pior score se for calculado um outro score melhor para o mesmo cliente e SSID
percebe-se que nas duas prints anteriores, foram listados diversos possíveis clientes, e efetivos clientes.
o como mencionei anteriormente, o dawn realiza o calculo de score de QUAL QUER dispositivo na próximo de seus AP, sempre para otimizar caso tal cliente se conecte na rede, já atuar imediatamente realocando ele forma forçada quando o cliente não suporta 802.11kvr nativamente.
Pessoal, estou com um problema estranho aqui e não consigo resolver de jeito nenhum, talvez vocês possam me ajudar.
Tenho um TrueNAS aqui em casa com JellyFin (porta 30013) e algumas medias que gostaria de compartilhar com um amigo, tudo configurado e funcionando perfeitamente na rede interna.
Porém, não consigo me conectar à porta 80 (externa) através do meu roteador, por algum motivo não consigo direcionar uma conexão que chega pela porta 80.
Meu router é um Xiaomi Redmi AX6000, abaixo a configuração de NAT que setei.
O que acho estranho é que consigo me conectar usando a porta externa 30013 ou 28525 (usei esse numero apenas para teste), se eu entrar por "IPEXTERNO:30013" ele redireciona certinho para a porta interna 30013, porém se a conexão externa chegar pela porta 80 o router não direciona para 192.168.31.217:30017, acaba em timeout.
Alguem já teve um problema parecido com esse ?
Agradeço qqer ajuda.
EDIT: outra coisa que pode ajudar a entender o q está acontecendo, pela rede interna eu consigo utilizar "IPEXTERNO:80" que o redirecionamento funciona.
EDIT2: meu modem VIVO está em modo bridge, o AX6000 está com acesso externo direto.
Pessoal, estou com um problema estranho aqui e não consigo resolver de jeito nenhum, talvez vocês possam me ajudar.
Tenho um TrueNAS aqui em casa com JellyFin (porta 30013) e algumas medias que gostaria de compartilhar com um amigo, tudo configurado e funcionando perfeitamente na rede interna.
Porém, não consigo me conectar à porta 80 (externa) através do meu roteador, por algum motivo não consigo direcionar uma conexão que chega pela porta 80.
Meu router é um Xiaomi Redmi AX6000, abaixo a configuração de NAT que setei.
O que acho estranho é que consigo me conectar usando a porta externa 30013 ou 28525 (usei esse numero apenas para teste), se eu entrar por "IPEXTERNO:30013" ele redireciona certinho para a porta interna 30013, porém se a conexão externa chegar pela porta 80 o router não direciona para 192.168.31.217:30017, acaba em timeout.
Alguem já teve um problema parecido com esse ?
Agradeço qqer ajuda.
EDIT: outra coisa que pode ajudar a entender o q está acontecendo, pela rede interna eu consigo utilizar "IPEXTERNO:80" que o redirecionamento funciona.
EDIT2: meu modem VIVO está em modo bridge, o AX6000 está com acesso externo direto.
A maioria das operadoras bloqueia a porta 80, então o problema não é na sua config e sim no bloqueio.
Funciona qdo vc usa na rede interna pq não sai pra operadora, vai somente até o modem. Qdo a conexão passa pela operadora ela filtra.
Pode tentar usar uma porta mais alta, tipo 8080, para fazer o redirecionamento.
A maioria das operadoras bloqueia a porta 80, então o problema não é na sua config e sim no bloqueio.
Funciona qdo vc usa na rede interna pq não sai pra operadora, vai somente até o modem. Qdo a conexão passa pela operadora ela filtra.
Pode tentar usar uma porta mais alta, tipo 8080, para fazer o redirecionamento.
Entendi, minha ideia seria não precisar ficar colocando porta para acessar, utilizando outras portas ele conecta normalmente, mas com as portas 80 e 8080 não funciona de jeito nenhum.
Sabe se tem alguma forma de liberar isso na operadora?
Entendi, minha ideia seria não precisar ficar colocando porta para acessar, utilizando outras portas ele conecta normalmente, mas com as portas 80 e 8080 não funciona de jeito nenhum.
Sabe se tem alguma forma de liberar isso na operadora?
Para planos residenciais acho que não tem como.
Acho que só é liberado em planos empresariais.
Nunca cheguei a usar, mas alguns serviços DDNS fazem redirecionamento de porta. Então poderia abrir uma porta alta e ao acessar pelo host configurado no DDNS ele redireciona para a porta alta configurada no seu router. No NOIP é chamado de Web Redirect.
Para planos residenciais acho que não tem como.
Acho que só é liberado em planos empresariais.
Nunca cheguei a usar, mas alguns serviços DDNS fazem redirecionamento de porta. Então poderia abrir uma porta alta e ao acessar pelo host configurado no DDNS ele redireciona para a porta alta configurada no seu router. No NOIP é chamado de Web Redirect.
Estou usando GoDaddy, com um domínio que comprei, vou ver se tem essa opção.
De qqer forma, eu pretendia jogar o JellyFin no cloudflare, para aumentar a segurança, imagino que consiga fazer isso por dentro do cloudflare.
Alguém usa cloudflare para isso? Será se o gargalo de velocidade inviabiliza o uso de VPN ? (Já que o sistema eh basicamente para transmissão de vídeo)
EDIT: Consegui redirecionar pelo GoDaddy, como o @LuisM sugeriu, vlww pela ajuda.
A maioria das operadoras bloqueia a porta 80, então o problema não é na sua config e sim no bloqueio.
Funciona qdo vc usa na rede interna pq não sai pra operadora, vai somente até o modem. Qdo a conexão passa pela operadora ela filtra.
Pode tentar usar uma porta mais alta, tipo 8080, para fazer o redirecionamento.