Hotspost Wifi con Raspberry Pi

fine È un giorno d’estate, in casa il caldo si fa sentire, quindi ciò ci obbliga a trovarci un posticino fresco all’ombra e perché no magari all’aria aperta. Quindi usciamo di casa, e andiamo nel nostro amato giardino, apriamo il nostro sdraio, e ci spiaggiamo sopra, ovviamente ci siamo portati dietro il portatile (non può e non deve mancare mai:D), lo accendiamo ma notiamo un’agghiacciante verità: il wifi di casa non arriva fino a lì!

Il panico inizia a farsi sentire, ma ci balza un’idea in testa, abbiamo un piccolo Raspberry sulla mensola in camera, in questo momento sta solo prendendo polvere, quindi perché non provare ad utilizzarlo come hotspot wifi? Sarà proprio questo l’argomento del post di oggi, tra l’altro tratto da una storia vera, con protagonista il nostro grafico Joel e la sua Pi board.

Materiale

Cosa ci serve per creare questo progettino? Ecco la piccola lista della spesa:

 

Mentre se volete un Raspberry Pi 2 o ne avete già uno:

Bene ora mettiamoci all’opera.

Come prima cosa installiamo Raspbian e configuriamo il nostro Raspberry.

 

Cosa bisogna fare

In sintesi i procedimenti sono pochi. Come prima cosa dobbiamo dare un indirizzo ip statico all’interfaccia wireless del nostro mini pc, poi dobbiamo configurarci sopra un server DHCP in modo tale che il Raspberry saprà dare le informazioni necessarie a chi vuole connettersi alla sua interfaccia wireless, poi dobbiamo configurare il demone dell’access point ed infine, molto importante, bisogna configurare le regole di routing utilizzando iptables in modo tale che i pacchetti in arrivo sull’interfaccia wireless vengano reindirizzati sull’interfaccia ethernet, vice versa quelli provenienti da ethernet andranno sull’interfaccia wireless.

 

Procedimento

Iniziamo con l’installare tutto il necessario:

 

sudo apt-get update

sudo apt-get install hostapd isc-dhcp-server iptables wpa_supplicant

 

Iniziamo con il modificare il file di configurazione del demone dell’access point, ossia /etc/hostapd/hostapd.conf, quindi digitiamo:

 

sudo nano /etc/hostapd/hostapd.conf

 

Nel file scriviamo quanto segue:

 

interface=wlan0

ssid=Your_AP_SSID

channel=1

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_passphrase=my_secret_pass

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP

rsn_pairwise=CCMP

driver=rtl871xdrv

ieee80211n=1

device_name=RTL8192CU

manufacturer=Realtek

hw_mode=g

 

In sintesi indichiamo tutti i parametri principali del nostro futuro access point, ad esempio l’interfaccia wireless utilizzata (wlan0), l’ssid ossia il nome della nostra rete, il canale su cui andrà la nostra rete wireless, la password (wpa_passphrase) della nostra futura rete wifi e molti altri parametri. Questi sono gli stessi parametri che ha un comune modem.

Ora apriamo il file /etc/default/hostapd:

 

sudo nano /etc/default/hostapd

 

E cerchiamo il seguente parametro DAEMON_CONF, e modificandolo così:

 

DAEMON_CONF=”/etc/hostapd/hostapd.conf”

 

Ossia indichiamo dove si trova il file di configurazione del nostro access point.

Bene ora che abbiamo configurato il demone, passiamo a configurare il server DHCP.

Apriamo e modifichiamo il seguente file:

 

sudo nano /etc/dhcp/dhcpd.conf

 

E scriviamo i seguenti parametri:

 

ddns-update-style none;

default-lease-time 84600;

max-lease-time 84600;

subnet 192.130.10.0 netmask 255.255.255.0 {

range 192.130.10.2 192.130.10.10 ;

option domain-name-servers 192.168.1.254 ;

option domain-name "home";

option routers 192.130.10.1 ;

}

 

Cosa sono questi indirizzi ip che abbiamo messo? Il primo è la subnet, ossia “la base” dell’ip che i nostri dispositivi collegati avranno, per esempio se mi collego con il mio telefono, un possibile ip assegnato ad esso sarà 192.130.10.5.

Il secondo è la netmask, in poche parole indica che i primi 24 bit (in questo caso 192.130.10) rimarranno fissi.

Nella riga sotto abbiamo il range, ossia un range di possibili indirizzi ip assegnabili dal nostro Raspberry, in questo caso 8.

Nella riga con option domain-name-servers indichiamo l’indirizzo ip del nostro modem di casa, nel mio caso 192.168.1.254.

L’ultimo indirizzo ip, option routers, è l’indirizzo ip che avrà l’interfaccia wireless del nostro Raspberry, lo andremo a impostare tra poco come indirizzo statico su tale interfaccia.

Chiudiamo e salviamo, e andiamo a modificare i parametri DHCPD_CONF e INTERFACES nel seguente file:

 

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

 

Modifichiamoli come segue:

 

DHCPD_CONF="/etc/dhcp/dhcpd.conf"

INTERFACES="wlan0"

 

E anche questo passo l’abbiamo fatto. Ora dobbiamo rendere l’indirizzo ip dell’interfaccia wireless statico, e inserire le regole per il forwarding su iptables.

Quindi iniziamo con l’assegnare l’ip. Apriamo e modifichiamo il seguente file:

 

sudo nano /etc/network/interfaces

 

Inseriamo i seguenti parametri:

 

auto wlan0

allow-hotplug wlan0

iface wlan0 inet static

address 192.130.10.1

netmask 255.255.255.0

up iptables-restore < /etc/iptables.ipv4.nat

 

Bene ora procediamo ad inserire le regole su iptables. Prima però abilitiamo il nostro Raspberry a effettuare il forwarding, modificando un parametri nel seguente file:

 

sudo nano /etc/sysctl.conf

 

E modifichiamo la seguente linea come segue:

 

net.ipv4.ip_forward=1

 

Ora aggiungiamo le regole su iptables:

 

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 diamo il seguente comando:

sh -c "iptables-save > /etc/iptables.ipv4.nat"

Abbiamo quasi finito, come ultimo passaggio dobbiamo modificare il file binario di hostapd, altrimenti non partirà il demone, quindi diamo i seguenti comandi:

 

wget "http://tuxmaniacs.apps-1and1.net/wp-content/uploads/2016/08/hostapd.gz"

sudo gzip -d hostapd.gz

sudo chmod 755 hostapd

sudo cp hostapd /usr/sbin/

 

Bene ora facciamo in modo che l’access point parta all’avvio del sistema operativo:

 

sudo update-rc.d hostapd enable

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

 

Ed infine riavviamo il Raspberry:

 

sudo reboot

 

Perfetto abbiamo finito!

Ora possiamo aprire lo sdraio e goderci un drink stando comodamente sdraiati con il nostro pc immancabilmente connesso al mondo esterno grazie al nostro super Raspberry Pi;)

Fonti:

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

5 risposte

  1. Sarebbe bellissimo poterlo fare , almeno per me
    Troppo difficile e complicato per essere alle prime armi.
    ; pero' lo conservo nel cassetto per quando avro' imparato
    A smanettare questo gioiello di tecnicA

  2. Si spende molto meno se utilizzi un extended wi-fi circa 25,00 € e senza fare nulla.

    • Daniele Scanu

      Assolutamente vero, ma se hai un raspberry fermo a non far niente e una chiavetta wifi perché non farlo? Ci vogliono solo pochi minuti per configurarlo e in più si impara qualcosa di nuovo 😉

  3. ma come avete fatto ad installare wpa_supplicant

    • Daniele Scanu

      Lo trovi direttamente nei repository, dai "sudo apt-get update" e poi "sudo apt-get install wpa_supplicant"

Lascia un commento