Boas! na sequência dos últimos posts Como começar com a Raspberry Pi sem monitor, rato e teclado e Como instalar ferramentas de Bluetooth na Raspberry Pi, vou agora mostrar-vos como transformar a Raspberry Pi num ponto de acesso wireless. A maioria deste post segue o que é descrito aqui mas adicionei mais alguns passos. Além disso, deparei-me com alguns problemas e tive de fazer alguma resolução de problemas. Usei a pen wireless D-Link DWA-140 Rangebooster N Adapter que contém o chipset Ralink RT2870.
(Clicar na foto para ver com melhor resolução no Picasa Photostream) |
O processo parece algo longo mas pode ser feito em menos de 10 minutos :) . Sempre que precisarem de editar ou criar algum ficheiro (por exemplo /etc/udhcpd.conf) ao longo do processo podem usar o comando "sudo nano /etc/udhcpd.conf".
- A primeira coisa a fazer é verificar se a pen wireless está a ser reconhecida. Vão ao terminal e escrevam:
- Agora teremos que instalar a ferramenta "iw" para ver que modos são suportados pelo chipset da pen wireless. Abram o terminal e escrevam:
sudo apt-get install iw
Quando acabar de instalar escrevam o seuinte comando:iw list
De seguida deverão ver algumas especificações a aparecer no ecrã e algures no meio irão encontrar algo parecido com isto (os modos abaixo são os suportados pela pen wireless que usei):Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point
Se existir a opção AP então podemos continuar. Caso contrário, deverão arranjar uma outra pen wireless que tenha essa opção. -
sudo apt-get install hostapd udhcpd
- Agora vamos configurar o DHCP para que a Raspberry Pi seja capaz de atribuir endereços IP aos clientes. Editem o ficheiro /etc/udhcpd.conf de modo a que contenha o seguinte:
start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices. end 192.168.42.20 interface wlan0 # The device uDHCP listens on. remaining yes opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use. opt subnet 255.255.255.0 opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly. opt lease 864000 # 10 day DHCP lease time in seconds
- O próximo passo será editar o ficheiro /etc/default/udchpd e mudar a linha que diz
DHCPD_ENABLED="no"
para#DHCPD_ENABLED="no"
- Agora vamos dar à Raspberry Pi um endereço de IP estático ao escrever o seguinte comando:
sudo ifconfig wlan0 192.168.42.1
Para fazer esta configuração automaticamente temos de editar o ficheiro /etc/network/interfaces e substituir a linha "iface wlan0 inet dhcp" por:iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0
Se a linha "iface wlan0 inet dhcp" não existir, adicionei as linhas referidas ao fim do ficheiro. Também terão de mudar as linhas (podem não estar todas de seguida)allow-hotplug wlan0 wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet manual
para#allow-hotplug wlan0 #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp
- Neste passo vamos configurar o hostapd, que é usado para criar a rede wireless. A rede wireless pode ser uma rede aberta ou uma rede protegida por WPA para fornecer apenas acesso quando autorizado. Para fazê-lo temos de criar alguns ficheiros e editar outros. O primeiro ficheiro que vamos editar/criar é o "/etc/hostapd/hostapd.conf". Para uma rede protegida por WPA deverá ficar semelhante a isto:
interface=wlan0 driver=nl80211 ssid=My_AP hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=My_Passphrase wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Podem mudar o SSID, o canal e a wpa_passphrase para o que desejarem. SSID é o nome que querem dar ao hotspot e a wpa_passphrase é a password que será necessária para aceder à rede. O canal é usado para escolher a frequência de operação do ponto de acesso wireless. No caso de terem outro AP ou router em casa, certifiquem-se que escolhem um canal livre e o mais afastado possível do canal que esteja a ser usado pelo mesmo, de modo a que não interfiram um com o outro. Se preferirem criar uma rede aberta podem inserir o texto seguinte, em vez do anterior:- Agora teremos de mudar uma variável no interior do ficheiro /etc/default/hostapd de maneira a que aponte parao ficheiro que acabámos de criar/editar. Mudem esta linha:
#DAEMON_CONF=""
paraDAEMON_CONF="/etc/hostapd/hostapd.conf"
- A próxima coisa a fazer será configurar a NAT (Network Address Translation) que é uma técnica que permite que vários dispositivos usem uma única ligação à internet. Editem o ficheiro /etc/sysctl.conf e adicionem as seguintes linhas no final do mesmo:
net.ipv4.ip_forward=1
Estas alterações irão activar a NAT no núcleo do sistema operativo. Agora executem os seguintes comandos:sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
E isto conclui a configuração da NAT. Para tornar esta configuração permanente de maneira a que não seja necessário executar estes comandos manualmente após cada arranque do sistema operativo, execute o seguinte comando:sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
e edite o ficheiro /etc/network/interfaces e adicione as seguintes linhas ao final do mesmo:up iptables-restore < /etc/iptables.ipv4.nat
- Estamos quase a acabar! Agora é altura de finalmente executar os serviços que temos estado a configurar. Corra os seguintes comandos para iniciar o Access Point:
sudo service hostapd start sudo service udhcpd start
E a vossa Raspberry Pi deverá estar finalmente transformada num hotspot wireless! :) Para fazê-lo iniciar em todos os arranques, executem estes dois últimos comandos:sudo update-rc.d hostapd enable sudo update-rc.d udhcpd enable
lsusb
se estiver a ser reconhecida deverão ver algo relativo a um adaptador wireless. O meu diz o seguinte:
Bus 001 Device 005: ID 07d1:3c09 D-Link System DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870]
interface=wlan0 ssid=My_AP hw_mode=g channel=6 auth_algs=1 wmm_enabled=0
E está feito! Se seguiram todos os passos correctamente tudo deverá estar a funcionar como esperado...
A menos que estejam familiarizados com as Leis de Murphy (como eu :P) e nada possa simplesmente funcionar à primeira! Sempre que ligava a Raspberry Pi podia ver a rede wireless a aparecer mas com um sinal muito fraco e após menos de um minuto desaparecia. Coisa estranha, não? Tentei reiniciar o hostapd para ver se a rede wireless voltava a aparecer mas nada acontecia. A única maneira de ressuscitar a rede wireless era reiniciando a Raspberry Pi. Pesquisei um pouco para ver se a distribuição Raspbian Wheezy vinha com alguma espécie de gestor de rede que pudesse estar em conflito com as configurações efectuadas, mas mais uma vez não encontrei o problema. Então lembrei-me que poderia ser um problema de alimentação! Quando a rede aparecia o sinal estava sempre muito fraco e o facto de nada fazer a rede voltar a aparecer excepto desligando e voltando a ligar a alimentação poderia ser um sintoma de algum problema de hardware. Outra coisa que me fez pensar que a origem do problema era esse foi o facto de cada porta USB da Raspberry Pi fornecer uma corrente muito limitada, de 140mA, que pode não ser suficiente para alimentar alumas pens Wi-Fi e outros dispositivos. Então, peguei no hub USB que tinha anteriormente alterado para poder ter alimentação externa e liguei tudo ao mesmo, incluíndo a Raspberry Pi. Liguei a fonte de 5V, 1A e problema resolvido! Tudo estava finalmente a trabalhar como esperado! De facto, este post inteiro foi escrito usando a Raspberry Pi como ponto de acesso wireless. Tem estado ligado já há um bom tempo e continua bastante estável e rápida. Se se depararem com alguns problemas podem também consultar o tópico do fórum da Raspberry Pi que originou este tutorial aqui.
Espero que tenham gostado de ler este post e que vos seja útil.
Até à próxima! :)
Achou esta publicação útil? Deseja contribuir para outros projectos envolvendo ciências computacionais, electrónica, robótica ou mecatrónica que serão publicados neste blog? Se sim, pode fazer uma doação utilizando o botão do Paypal abaixo. Obrigado! :)
0 Comments: