1. Introdução
O Raspberry Pi pode ser utilizado para implementar um Access Point Wi-Fi, oferecendo conectividade sem fio para dispositivos móveis, computadores e equipamentos IoT.
Neste projeto, foi desenvolvido um Access Point utilizando um Raspberry Pi 3B, executando Debian GNU/Linux 13 (Trixie), com uma interface web administrativa desenvolvida em Node.js e Express.
O objetivo é demonstrar não apenas a configuração do Access Point, mas também a implementação de um servidor web capaz de administrar e monitorar os serviços responsáveis pela rede sem fio.
A solução utiliza ferramentas Linux amplamente conhecidas e tecnologias abertas.

2. Arquitetura do sistema
O Raspberry Pi utiliza duas interfaces de rede:
eth0: interface Ethernet conectada à rede externa.wlan0: interface Wi-Fi configurada como Access Point.
A interface Ethernet recebe seu endereço IP através de DHCP. A interface Wi-Fi utiliza um endereço IP fixo, formando uma sub-rede independente.
Parâmetros da rede
| Parâmetro | Configuração |
|---|---|
| Hardware | Raspberry Pi 3B |
| Sistema operacional | Debian GNU/Linux 13 |
| Kernel | Linux 6.18 |
| Node.js | 20.19.2 |
| Interface Ethernet | eth0 |
| Interface Wi-Fi | wlan0 |
| SSID | PI3B_AP |
| Endereço do AP | 192.168.71.1 |
| Prefixo de rede | /24 |
| Canal Wi-Fi | 1 |
| Segurança | WPA2-PSK |
| Servidor Web | Node.js / Express |
| Porta HTTP | 80 |
3. Serviços Linux utilizados
O funcionamento do Access Point depende de alguns serviços.
3.1 hostapd
O hostapd é responsável por configurar a interface Wi-Fi em modo Access Point e controlar a autenticação dos clientes.
Arquivo principal:
/etc/hostapd/hostapd.conf
Configuração utilizada no projeto:
country_code=BR
interface=wlan0
driver=nl80211
ssid=PI3B_AP
hw_mode=g
channel=1
ieee80211n=1
wmm_enabled=1
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=<SENHA_WIFI>Os parâmetros mais importantes são:
interface: interface Wi-Fi utilizada.ssid: nome da rede sem fio.hw_mode=g: operação na faixa de 2,4 GHz.channel=1: canal de operação.wpa=2: utilização de WPA2.wpa_key_mgmt=WPA-PSK: autenticação por chave pré-compartilhada.rsn_pairwise=CCMP: algoritmo de criptografia.wpa_passphrase: senha da rede.
3.2 systemd-networkd
O serviço systemd-networkd configura as interfaces Ethernet e Wi-Fi.
Configuração da Ethernet
Arquivo:
/etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
DHCP=yesEssa configuração permite que o Raspberry Pi receba automaticamente um endereço IP da rede externa.
Configuração da interface Wi-Fi
Arquivo:
/etc/systemd/network/20-wlan0.network
[Match]
Name=wlan0
[Network]
Address=192.168.71.1/24
ConfigureWithoutCarrier=yesO endereço 192.168.71.1 é o gateway da rede criada pelo Access Point.
3.3 dnsmasq
O dnsmasq fornece os serviços DHCP e DNS para os dispositivos conectados à rede Wi-Fi.
No projeto, o servidor web utiliza o arquivo específico:
/etc/dnsmasq.d/pi3b-ap.conf
O serviço dnsmasq permite que os dispositivos conectados recebam automaticamente:
- Endereço IP.
- Gateway padrão.
- Servidor DNS.
- Tempo de concessão DHCP.
O serviço dnsmasq é responsável por fornecer endereços IP automaticamente aos dispositivos conectados à rede Wi-Fi PI3B_AP.
Arquivo de configuração:
/etc/dnsmasq.d/pi3b-ap.conf
Configuração utilizada no Raspberry Pi:
# DHCP e DNS para o Access Point PI3B_AP
interface=wlan0
bind-interfaces
dhcp-range=192.168.71.100,192.168.71.200,255.255.255.0,12h
dhcp-option=3,192.168.71.1
dhcp-option=6,192.168.71.1
domain-needed
bogus-priv
dhcp-authoritativeExplicação dos parâmetros
| Parâmetro | Função |
|---|---|
interface=wlan0 | Ativa o serviço na interface Wi-Fi. |
bind-interfaces | Vincula o dnsmasq às interfaces configuradas. |
dhcp-range | Define a faixa de IPs distribuídos aos clientes. |
255.255.255.0 | Máscara de sub-rede dos clientes. |
12h | Tempo de concessão DHCP de 12 horas. |
dhcp-option=3 | Define o gateway padrão dos clientes. |
dhcp-option=6 | Define o servidor DNS informado aos clientes. |
domain-needed | Evita encaminhar consultas DNS sem domínio. |
bogus-priv | Evita encaminhamento de consultas reversas privadas indevidas. |
dhcp-authoritative | Indica que este servidor é autoritativo para a rede DHCP configurada. |
Funcionamento do DHCP
Quando um dispositivo se conecta ao Access Point, o dnsmasq pode fornecer um endereço IP dentro da faixa:
- Primeiro endereço:
192.168.71.100 - Último endereço:
192.168.71.200 - Gateway:
192.168.71.1 - DNS informado:
192.168.71.1 - Concessão: 12 horas
O Raspberry Pi atua, portanto, como gateway da rede Wi-Fi e fornece os parâmetros necessários para que os clientes possam se comunicar.
4. Roteamento e NAT
Para permitir que os dispositivos conectados ao Access Point acessem a rede externa através da interface Ethernet, é necessário habilitar o encaminhamento de pacotes IPv4.
O sistema apresenta:
/proc/sys/net/ipv4/ip_forward = 1O NAT utiliza uma cadeia dedicada denominada RASP_AP_NAT.
A regra observada no sistema é:
iptables -t nat -A RASP_AP_NAT \
-s 192.168.71.0/24 \
-o eth0 \
-j MASQUERADEA cadeia é vinculada à cadeia POSTROUTING:
iptables -t nat -A POSTROUTING \
-j RASP_AP_NATO MASQUERADE permite que os dispositivos da rede Wi-Fi utilizem o endereço IP da interface Ethernet nas conexões de saída.
As regras são persistidas utilizando o serviço netfilter-persistent.
5. Servidor Web de administração
O servidor web foi desenvolvido em Node.js utilizando Express.

Diretório do projeto:
/opt/rasp-ap-web
Estrutura dos arquivos:
/opt/rasp-ap-web/
│
├── server.js
├── package.json
├── package-lock.json
│
└── public/
├── index.html
├── style.css
└── app.js5.1 server.js
O arquivo server.js constitui o núcleo da aplicação.
Suas principais responsabilidades são:
- Inicializar o servidor Express.
- Implementar a autenticação administrativa.
- Ler arquivos de configuração do sistema.
- Consultar o estado dos serviços Linux.
- Identificar os dispositivos conectados.
- Validar os parâmetros da configuração Wi-Fi.
- Gravar novas configurações.
- Aplicar alterações na rede.
- Gerenciar as regras NAT.
A aplicação utiliza funções auxiliares para leitura e escrita de arquivos.
Exemplo:
function readFileSafe(file) {
try {
return fs.readFileSync(file, "utf8");
} catch (error) {
console.error("Erro lendo", file, error.message);
return "";
}
}A função permite ler arquivos de configuração e tratar erros de acesso.
5.2 Autenticação administrativa
O acesso à interface é protegido por autenticação HTTP Basic.
O servidor verifica o usuário e a senha recebidos no cabeçalho HTTP Authorization.
Somente após a autenticação o usuário pode acessar a API administrativa.
A autenticação Basic não criptografa as credenciais por si só. Para uso em redes não confiáveis, recomenda-se implementar HTTPS e utilizar uma senha administrativa forte, armazenada fora do código-fonte.
5.3 index.html
O arquivo public/index.html contém a estrutura da interface administrativa.
A página possui as seguintes seções:
- Status do Access Point.
- Dispositivos conectados.
- Configuração Wi-Fi.
- Configuração IP do Access Point.
- Servidor DHCP.
- Informações do sistema.
5.4 style.css
O arquivo public/style.css define a aparência da interface.
São utilizados estilos para:
- Cabeçalho.
- Cartões de status.
- Formulários.
- Tabelas.
- Mensagens de sucesso e erro.
- Layout responsivo.
5.5 app.js
O arquivo public/app.js implementa a lógica da interface no navegador.
Ele consulta a API do servidor, atualiza os indicadores de status e apresenta os dispositivos conectados.
Também controla os formulários de configuração da rede Wi-Fi.
O campo de senha Wi-Fi permite visualizar ou ocultar a senha através de um botão de olho.
6. API REST
A aplicação disponibiliza endpoints HTTP para consultar e modificar a configuração do Access Point.
GET /api/status
Consulta o estado operacional do sistema.
O endpoint retorna:
- Estado dos serviços hostapd, dnsmasq e systemd-networkd.
- Informações da interface wlan0.
- Canal Wi-Fi.
- Quantidade de clientes DHCP.
- Lista de dispositivos conectados.
- Data e hora da consulta.
Os dispositivos são identificados através do arquivo de concessões DHCP:
/var/lib/misc/dnsmasq.leases
GET /api/config
Retorna os parâmetros atuais da configuração da rede.
Entre os parâmetros disponibilizados estão:
- SSID.
- Senha Wi-Fi.
- Segurança.
- Canal.
- Endereço IP.
- Prefixo de rede.
- Faixa DHCP.
- Gateway.
Esse endpoint é protegido pela autenticação administrativa.
POST /api/config
Recebe uma nova configuração da rede.
Antes de gravar os arquivos, o servidor realiza validações dos parâmetros.
As configurações são aplicadas nos arquivos:
/etc/hostapd/hostapd.conf
/etc/systemd/network/20-wlan0.network
/etc/dnsmasq.d/pi3b-ap.confApós a gravação, o servidor reconfigura a interface wlan0, reinicia os serviços hostapd e dnsmasq e atualiza as regras NAT.
7. Inicialização automática do servidor web
O servidor administrativo é executado como um serviço systemd.
Arquivo:
/etc/systemd/system/rasp-ap-web.service
Configuração utilizada:
[Unit]
Description=Raspberry Pi AP Admin Web
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/rasp-ap-web
ExecStart=/usr/bin/node /opt/rasp-ap-web/server.js
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.targetO serviço é configurado para reiniciar automaticamente caso o processo termine.
O usuário root permite que a aplicação acesse e modifique os arquivos e serviços de rede do sistema. Para um ambiente de produção, recomenda-se avaliar a separação de privilégios.
8. Monitoramento dos dispositivos conectados
A interface web apresenta uma tabela com os clientes DHCP.
São exibidos:
- Nome do dispositivo.
- Endereço IP.
- Endereço MAC.
- Tempo restante da concessão DHCP.
Essas informações são obtidas a partir do arquivo de leases do dnsmasq.
É importante observar que uma concessão DHCP ativa indica um cliente registrado pelo servidor DHCP, mas não necessariamente confirma que o dispositivo está transmitindo dados naquele instante.
9. Operação e manutenção
Alguns comandos úteis para administrar o sistema são:
Consultar o estado do servidor web
sudo systemctl status rasp-ap-webReiniciar o servidor
sudo systemctl restart rasp-ap-webConsultar os logs
sudo journalctl -u rasp-ap-web -fConsultar o estado do hostapd
sudo systemctl status hostapdConsultar o estado do dnsmasq
sudo systemctl status dnsmasqConsultar os dispositivos conectados
sudo cat /var/lib/misc/dnsmasq.leasesConsultar a interface Wi-Fi
iw dev wlan0 info10. Conclusão
O projeto demonstra que o Raspberry Pi 3B pode ser utilizado como um Access Point Wi-Fi com administração centralizada através de uma interface web.
A integração entre hostapd, dnsmasq, systemd-networkd, iptables e Node.js permite construir uma solução flexível, didática e extensível.
Além de proporcionar conectividade Wi-Fi, a aplicação web facilita o monitoramento e a configuração dos parâmetros da rede.
A arquitetura apresentada pode servir como referência para projetos de redes embarcadas, sistemas IoT e ferramentas de gerenciamento de infraestrutura de rede.
O script configura
hostapd— Access Point Wi-Fi.dnsmasq— DHCP e DNS.systemd-networkd— interfaces Ethernet e Wi-Fi.NAT e encaminhamento IPv4.
Regras persistentes de firewall.
Serviço
rasp-ap-web.Painel web básico de status e clientes DHCP.
Backup das configurações anteriores.
Validação das senhas com exatamente 12 caracteres.
Senhas padrão
Wi-Fi:
wifiPASS1234Administrador Web:
AdminPASS123
Como executar
Copie o script para o Raspberry Pi e execute:
sudo bash instalar-rasp-ap.shO script solicita SSID, canal e senhas antes de iniciar.
Importante: esta versão cria um painel web básico para monitoramento. Ela não substitui ainda a interface administrativa completa que desenvolvemos anteriormente. Recomendo testar em uma instalação Debian 13 limpa ou fazer backup completo antes de executar, pois a configuração de rede pode afetar a conectividade atual.

Deixe um comentário