O firmware é a parte fácil de copiar, e não faz sentido cobrar por ela. Se o seu roteador roda OpenWrt, estes guias levam do zero ao nó funcionando: rede de visitantes isolada, portal cativo e liberação por tempo pago. Comprar o aparelho pronto poupa trabalho — não desbloqueia nada.
Qualquer roteador com OpenWrt 23 ou mais novo, 128 MB de RAM e suporte a VLAN serve. O que não é negociável são três coisas:
Roteador doméstico de operadora quase nunca atende. Se o seu não tiver imagem de OpenWrt, é mais barato comprar um usado compatível do que insistir.
O SSID de visitantes precisa viver numa VLAN própria, sem rota para a sua rede local. Sem isso, quem paga um passe enxerga a sua impressora, o seu NAS e o computador da sala.
uci set network.visitantes=interface uci set network.visitantes.proto='static' uci set network.visitantes.ipaddr='10.77.0.1' uci set network.visitantes.netmask='255.255.255.0' uci set wireless.aether=wifi-iface uci set wireless.aether.network='visitantes' uci set wireless.aether.mode='ap' uci set wireless.aether.ssid='AETher' uci set wireless.aether.encryption='none' uci set wireless.aether.isolate='1' # visitantes não se enxergam uci commit && wifi reload
Rede aberta é intencional: o visitante precisa entrar antes de pagar. A proteção não vem da senha, vem do isolamento e do firewall.
A regra é bloquear por padrão e abrir só para quem tem sessão válida. O
timeout do próprio conjunto derruba a sessão no fim — sem cron, e um
reboot do serviço não deixa ninguém liberado para sempre.
nft add table inet aether
nft add set inet aether allowed '{ type ether_addr; flags timeout; }'
nft add chain inet aether fwd \\
'{ type filter hook forward priority 0; policy drop; }'
# quem está no conjunto passa
nft add rule inet aether fwd ether saddr @allowed accept
# o resto vai para o portal
nft add rule inet aether fwd tcp dport { 80, 443 } redirect to :8080
Aqui mora o ponto mais frágil de qualquer portal cativo: um dispositivo sem sessão não tem internet, mas precisa alcançar o portal e a rede de pagamento mesmo assim. A lista de liberados precisa incluir:
Essa lista é chata de manter e quebra em silêncio quando um provedor muda de domínio. Vale revisar sempre que alguém relatar que "o pagamento não abre".
Quando o visitante volta do pagamento com um token, o roteador consulta o portal e libera pelo tempo restante. O token é assinado: editar o vencimento à mão invalida a assinatura.
#!/bin/sh
# aether-node.sh MAC TOKEN
PORTAL="https://aethernetwork.online"
RESP=$(curl -fsS "$PORTAL/api/session?token=$2") || exit 1
[ "$(echo "$RESP" | jq -r .valid)" = "true" ] || exit 1
RESTA=$(echo "$RESP" | jq -r .secondsLeft)
nft add element inet aether allowed "{ $1 timeout ${RESTA}s }"
Precisa de curl e jq. Nos dois casos,
opkg install resolve.
O nó não guarda chave privada nenhuma. Você informa apenas o endereço público da sua carteira Solana, e os pagamentos caem direto lá — o portal só observa a blockchain para saber que chegou.
Consequência prática: um nó roubado não é uma carteira roubada. O pior que alguém faz com o aparelho é parar de vender acesso.
Mesmo firmware, mesmas regras, sem a tarde de configuração — e com o rádio corporativo, que é a parte que um roteador doméstico não entrega.
Ver o equipamento