21 de janeiro de 2017

Aceder ao RPi3 por wifi direto sem router.

Dada a funcionalidade de wifi integrada do RPi3, podemos transformá-lo num ponto de acesso.

A adafruit já tem um guia sobre como usar o RPi3 como um extensor de rede wifi, isto é, o RPi liga-se por cabo ao router e difunde a rede wifi a partir do ponto onde se encontra. Este guia está disponibilizado aqui e o que vai ser escrito agora vai basear-se muito nele, apenas não fazendo o último passo de configurar a NAT. Queremos apenas ligar via wifi ao RPi e recebermos um IP do mesmo para evitar fixar um à mão nas configurações da nossa placa de rede sem fios.

Este guia mostra como habilitar a rede wifi no RPi e estabelecer uma rede ad-hoc (permitir ligação wifi direta ao RPi em linguagem de gente :P) e como instalar e configurar um servidor DHCP no RPi.

Instalar o hostapd que nos trata de disponibilizar a ligação wifi e o isc-dhcp-server que irá atribuir-nos um IP quando nos ligarmos ao RPi.

sudo apt-get install hostapd isc-dhcp-server

Não deve ser necessário, mas instalem uma firewall como esta:

sudo apt-get install iptables-persistent

e aceitem por duas vezes (seleccionem YES) nos dois ecrãs.
(se não a configurarem não deve fazer nada e podem saltar este comando)

 Agora configura-se o serviço DHCP:

sudo vim /etc/dhcp/dhcpd.conf

Comentar as linhas:

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

Para ficarem com o aspeto:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Encontrar as linhas que dizem:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

E comentar a que diz #authoritative; para ficar apenas

authoritative;

E no final do ficheiro adicionar:

subnet 192.168.42.0 netmask 255.255.255.0 {
  range 192.168.42.10 192.168.42.50;
  option broadcast-address 192.168.42.255;
  option routers 192.168.42.1;
  default-lease-time 600;
  max-lease-time 7200;
  option domain-name "local";
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Ainda relativamente ao serviço DHCP editar outro ficheiro:

sudo vim /etc/default/isc-dhcp-server

E onde diz:

INTERFACES=""

Colocar

INTERFACES="wlan0"

Para configurar agora o wifi vamos em primeiro lugar desabilitá-lo:

sudo ifdown wlan0

E editar o ficheiro das interfaces:

sudo vim /etc/network/interfaces

para conter, relativamente a wlan0, apenas as seguintes referências:

allow-hotplug wlan0
iface wlan0 inet static
  address 192.168.42.1
  netmask 255.255.255.0

Agora atribui-se um IP ao adaptador:

sudo ifconfig wlan0 192.168.42.1

Para configurar o hostapd cria-se o ficheiro de configuração:

sudo vim /etc/hostapd/hostapd.conf

E preenche-se com o conteúdo:

interface=wlan0
driver=rtl871xdrv
ssid=Pi_AP
country_code=US
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1

A negrito estão os campos que devem personalizar.

Se for mesmo o RPi3 que estão a usar então a linha do driver deve ser comentada, ficando

#driver=rl871xdrv

Agora é preciso avisar o hostapd da localização deste ficheiro, e para isso edita-se o ficheiro:

sudo vim /etc/default/hostapd

E na entrada

#DAEMON_CONF=""

mudar para

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Da mesma forma editar o ficheiro:

sudo vim /etc/init.d/hostapd

E atribuir o valor

DAEMON_CONF=/etc/hostapd/hostapd.conf

no local mais apropriado.

Finalmente inicia-se o dhcp e o hostapd como serviços e adicionam-se aos serviços que sao lançados no boot do pi, sendo os comandos:

sudo service isc-dhcp-server start
sudo service hostapd start

sudo update-rc.d isc-dhcp-server enable
sudo update-rc.d hostapd enable

E à partida já poderão acader à rede wifi do RPi.

Sem comentários: