Existem muitos tutoriais por aí mostrando como configurar um AP Wifi usando Raspberry Pi 4, todos com configurações diferentes. Estou tentando fazer isso com minha configuração específica da seguinte maneira:
RPi4 atuando como Wifi AP. Ele é instalado com Kali para Raspberry . Ele possui uma
eth0
interface que se conecta à internet através do meu roteador Wifi doméstico (vamos chamar esse roteadorHomeWifi
). Este RPi4 tem umwlan0
que desejo usar como interface Wifi AP recebendo tráfego de rede local de outros dispositivos. Então, basicamente, este RPi4 fica entre o meuHomeWifi
e os dispositivos que desejo conectar à internet.Um laptop Debian está atrás do RPi4, querendo acessar a internet. Vamos chamar este dispositivo
TestDevice
Abaixo estão as várias configurações que defini no RPi4:
1 - Em /etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.220.1/24
2 - Em/etc/hostapd/hostapd.conf
:
interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=0
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=mypirouter
wpa_passphrase=password_for_mypirouter
3 - Em /etc/init.d/hostapd
:
DAEMON_CONF=/etc/hostapd/hostapd.conf
4 - Em/etc/dnsmasq.conf
:
resolve-file="/etc/resolv.dnsmasq"
server=1.1.1.1
interface=wlan0
bind-dynamic
dhcp-range=192.168.220.50,192.168.220.150,12h
dhc-option=option:router,192.168.1.1
log-queries
log-dhcp
5 - Em/etc/resolv.conf
nameserver 127.0.0.1
Uma observação aqui sobre por que faço isso: faço referência à NOTES
seção na página man dnsmasq
. Diz
...in order to configure dnsmasq to act as cache for the host on which it is running, put "nameserver 127.0.0.1" in /etc/resolv.conf....
6 pol./etc/resolv.dnsmasq
nameserver 1.1.1.1
nameserver 8.8.8.8
7 pol./proc/sys/net/ipv4/ip_forward
1
8 Em/etc/sysctl.conf
:
net.ipv4.ip_forward=1
9 - Abaixo estão as configurações para iptables
:
*nat
:PREROUTING ACCEPT [1:32]
:INPUT ACCEPT [1:32]
:OUTPUT ACCEPT [1:248]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [9023:800718]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8673:816768]
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
COMMIT
O resultado:
Depois de executar os seguintes serviços no RPi4:
sudo systemctl start hostapd
sudo systemctl start dnsmasq
Confirmo que ambos os serviços estão sendo executados no RPi4.
Então, no meu TestDevice
, eu me conecto ao SSID mypirouter
com sucesso. A execução ifconfig
mostra TestDevice
que foi alocado um IP de 192.168.220.141
, bem dentro do intervalo configurado acima.
Agora, quando experimentei ping www.google.com
, TestDevice
recebi o seguinte erro:
PING www.google.com 56(84) bytes of data
From TestDevice (192.168.220.141) icmp_seq=1 Destination Host Unreachable
From TestDevice (192.168.220.141) icmp_seq=2 Destination Host Unreachable
...
No entanto, se eu tentar fazer ping no RPi4 através de seu IP estático com
ping 192.168.220.1
Consigo receber uma resposta como esta:
PING 192.168.220.1 56(84) bytes of data
64 bytes from 192.168.220.1: icmp_seq=1 ttl=64 time=2.46 ms
64 bytes from 192.168.220.1: icmp_seq=2 ttl=64 time=2.84 ms
...
Neste ponto, minha suspeita é que algo está errado com o arquivo iptables
. Mas não tenho certeza de como consertar isso. Qualquer sugestão é muito apreciada.