Raspberry como Access Point

Use o Raspberry como Access Point

O Raspberry Pi 3 tem uma vantagem clara sobre as versões anteriores; um WiFi e um bluetooth LE fazem dele uma atraente opção para AP. Claro que essa configuração é bastante simples, mas não poderia deixar de escrever a respeito, pois por certo diversas pessoas ainda não sabem como fazê-lo, ou assim como eu, não querem ter que decorar diversos procedimentos. Por isso recomendo o Raspberry como Access Point

Para esse tutorial, estou utilizando meu Raspberry Pi 3, que ainda não recebeu nenhuma tarefa específica, mas o procedimento pode variar, dependendo de sua estrutura.

Configuração inicial





Como qualquer AP, o primeiro passo é garantir uma conexão de rede via cabo ethernet, conectado à interface ethernet do Raspberry Pi. Em relação a sistema, recomendo fortemente a utilização do Raspbian, cujo sistema tenho utilizado sempre e com ele faço meus tutoriais, de forma que você terá maior probabilidade de sucesso no processo se seu ambiente for equivalente.

Outra opção seria um dungle WiFi, dispensando assim cabos extras. Como não pude fazer esse teste pela indisponibilidade do dispositivo, só posso afirmar o funcionamento com a primeira opção citada.

Se tiver alguma dúvida em relação à configuração da interface de rede, sugiro esse tutorial que escrevi para o Sistemas Embarcados.

Instalação de pacotes

Para se tornar um AP, será necessário fornecer autenticação e atribuição de PI, portanto, os pacotes necessários são o servidor de endereços IP (dhcp server) e o autenticador (hostapd):

sudo apt-get update && sudo apt-get install isc-dhcp-server hostapd

DHCP server

Escrevi nesse outro post como configurar um servidor DHCP em detalhes. Abaixo coloco apenas o conteúdo do arquivo /etc/dhcp/dhcpd.conf que utilizo:

ddns-update-style none;                                                           

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.20 192.168.10.30;
    option domain-name-servers ns1.dobitaobyte.lan;
    option domain-name "dobitaobyte.lan"
    option routers 192.168.10.1;
    option broadcast-address 192.168.10.255;
    default-lease-time 600;
}

host kgb {
    hardware ethernet 30:3a:64:3a:08:cc;
    fixed-address 192.168.10.3;
}

Em /etc/default/isc-dhcp-server, adicione a interface que servirá IP. No caso, wlan0. Apenas deixe a respectiva linha assim:

INTERFACES="wlan0"

Já citei acima 2 tutoriais importantes para essa configuração, mas se sua preguiça em lê-los for demasiada, simplesmente siga os procedimentos desse tutorial.

wlan0





Obviamente você não poderá ter uma interface com IP dinâmico, portanto, agora é a hora de configurar um IP estático para a interface WiFi do seu Raspberry Pi. Edite o arquivo /etc/network/interfaces e remova qualquer referência à wlan0. Substitua por isso:

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0 inet static
    address 192.168.10.1
    netmask 255.255.255.0

Quando você reiniciar seu Raspberry, já deverá ter sua interface wlan0 configurada, mas claro que não se faz necessário reiniciar o dispositivo para atribuir o IP:

sudo su
ifconfig wlan0 192.168.10.1

hostapd





Para finalizar, devemos agora configurar o hostapd para que o usuário possa se autenticar à rede. Para tal, edite o arquivo /etc/hostapd/hostapd.conf. Como você pode ver, a segurança é mínima, uma vez que é especificada em arquivo de texto plano, mas eu não me incomodo muito com isso. Também, não tente procurar pelo arquivo hostapd.conf, porque ele simplesmente não existe, precisa ser criado:

interface=wlan0
driver=nl80211
ssid=DobitAoByteAP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=FavorNaoInvadir
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Dentro de /etc/hostapd, existe apenas o arquivo ifupdown.sh e em /etc/init.d, o arquivo hostapd, que é o serviço. De inicio fiquei um pouco confuso em fazê-lo sem ler a documentação porque me parece atípico o formato desse pacote, mas de qualquer modo, não é complicado. O próximo passo é indicar o arquivo de configuração – e esse passo que me deixou com dúvidas inicialmente. A indicação do arquivo de configuração fica em /etc/default/hostapd. Basta adicionar uma linha assim:

DAEMON_CONF="/etc/hostapd/hostapd.conf

Ao instalar o hostapd, ele faz uma configuração de firewall. Se você se sente à vontade para escrever sua própria configuração, faça-o. Eu escrevi um artigo sobre configuração de firewall doméstico e outro para configurar um Raspberry como firewall, e é bastante simples o processo, lembrando que basicamente você deve configurar o nat e o forward dos pacotes. Esse é o tutorial.

Existem várias maneiras de configurar o ip_forward. Eu costumo colocar junto às minhas regras de firewall, mas considerando a utilização padrão do hostapd, coloque isso em /etc/rc.local:

echo 1 > /proc/sys/net/ipv4/ip_forward

Esse comando pode ser executado manualmente para ter efeito na hora, mas deixá-lo em /etc/rc.local automatizará o processo a cada reboot.

Você pode executar algumas regras de firewall manualmente agora:

#se estiver utilizando a eth0 como saida para o roteador:
sudo su
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#habilita o stateful
iptables -A FORWARD -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -j ACCEPT

Se não funcionar ao iniciar, mais uma vez sugiro as configurações de firewall do post supracitado. Nesse caso, crie um arquivo de firewall e adicione-o ao /etc/rc.local:

#!/bin/sh
#
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
echo "1" >/proc/sys/net/ipv4/ip_forward
/sbin/iptables -P FORWARD DROP
/sbin/iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
/sbin/iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
/sbin/iptables -A FORWARD -d 192.168.10.0/24 -mstate --state ESTABLISHED,RELATED -j ACCEPT

Como você pode ver, as regras são bastante flexíveis. Rode a primeira vez manualmente para ver se funciona:

/usr/sbin/hostapd /etc/hostapd/hostapd.conf

E na barra de tarefas:

[caption id="attachment_6817" align="aligncenter" width="273"]hostap hostap[/caption]

 

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

 

 

Leave A Reply