Como transformar a Raspberry Pi num Wireless Access Point

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.
 
Raspberry Pi como Wireless Access Point
 
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”.

  1. A primeira coisa a fazer é verificar se a pen wireless está a ser reconhecida. Vão ao terminal e escrevam:
    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]
  2. 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
  3. Quando acabar de instalar escrevam o seguinte 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.
  4. O próximo passo será instalar o “hostapd” e o “udhcpd“:
    sudo apt-get install hostapd udhcpd
  5. 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
  6. O próximo passo será editar o ficheiro /etc/default/udhcpd e mudar a linha que diz
    DHCPD_ENABLED="no"
    para
    #DHCPD_ENABLED="no"
  7. 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
  8.  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:

    interface=wlan0
    ssid=My_AP
    hw_mode=g
    channel=6
    auth_algs=1
    wmm_enabled=0
  9. 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=""
    para
    DAEMON_CONF="/etc/hostapd/hostapd.conf"
  10. 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
  11. 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
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! 🙂
 

Donate



  • Facebook
  • Twitter
  • Google Plus
  • LinkedIn
  • Reddit
  • Delicious
  • StumbleUpon
  • Digg
  • RSS
  • Email
  • Print