I WiFi bridge sono spesso utilizzati dalle aziende per condividere le risorse tra due reti LAN separate. Si tratta infatti di soluzioni molto comuni nelle grandi imprese che hanno decine di utenti dotati di terminali diversi ma necessitano di scambiare dati e informazioni senza dover ricorrere necessariamente a servizi ospitati su piattaforme Cloud di terze parti. I WiFi bridge possono però essere costosi, soprattutto i più performanti. Fortunatamente oggi è possibile convertire diversi dispositivi in WiFi bridge e nella guida di oggi impareremo a trasformare un Raspberry Pi in un WiFi bridge.
Ovviamente è bene tenere sempre a mente che trattandosi di una soluzione "home made" la prestazioni non saranno le stesse di quelle che potete ottenere connettendovi fisicamente al router.
La configurazione hardware
Per creare il nostro WiFi bridge ci serve appunto un Raspberry Pi. Il modello ideale è il Raspberry Pi 4 model B con 8GB di RAM, questo perché per gestire le connessioni e i pacchetti che viaggiano tra le due reti serve una discreta potenza computazionale. Ovviamente poi dovremo dotarci di una microSD da almeno 64GB per il sistema operativo, ovvero Raspberry Pi OS la distribuzione Linux sviluppata dalla Raspberry Pi Foundation, di mouse, tastiera e monitor con cavo HDMI.
Installazione di Raspberry Pi OS
Ora dobbiamo reperire il file ISO di Raspberry Pi OS, è possibile scaricarlo direttamente dal sito ufficiale del progetto, ed un imaging tool. Quello più apprezzato dagli utenti di questa board ARM è sicuramente Raspberry Pi Imager. Dunque avviamo tale applicativo e tramite "Choose OS" selezioniamo il media d'installazione scelto. Successivamente indichiamo quale microSD utilizzare con il tasto "Choose Storage" ed infine avviamo il procedimento di flashing cliccando su "Write".
L'intera procedura dovrebbe durare non più di qualche minuto. Al termine disconnettiamo la microSD dal computer e posizioniamola nello slot del Raspberry Pi. Siamo quindi pronti per connettere le periferiche di input, il display ed ovviamente anche l'alimentatore USB-C cosi da avviare il device e procedere con il wizard di configurazione iniziale del sistema operativo. Si deve semplicemente seguire la procedura guidata che consentirà di creare in pochi minuti un account utente e di accedere al Desktop.
Installazione e configurazione di dnsmasq
Per creare il Wi-Fi Bridge sfrutteremo un applicativo open source chiamato dnsmasq. Si tratta di un DNS forwarder che include un sistema di DNS caching e può essere impostato anche come DHCP server per delle piccole reti. Con questo software ed il firewall iptables è possibile gestire le query DNS e l'assegnazione degli indirizzi IP dei terminali. In buona sostanza Raspberry Pi agirà come router e metterà in collegamento due reti locali separate.
Installiamo quindi il tutto tramite il gestore di pacchetti APT da shell:
sudo apt-get install dnsmasq iptables
Prima di partire nella configurazione di dnsmasq dobbiamo connetterci alla rete Wi-FI del primo router a cui vogliamo collegare la seconda rete LAN. Apriamo quindi il file di configurazione di wpa_supplicant
tramite l'editor di testo Nano da bash:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
e connettiamoci alla rete wireless inserendo l'SSID della rete, ovvero il nome con cui si presenta al dispositivo, e la password:
network={
ssid="tuaretewifi"
psk="latuapassword"
}
Salviamo il file con CTRL+O e chiudiamolo con CTRL+X. Ora possiamo procedere all'impostazione della connessione ethernet al secondo router settando anche un IP statico:
sudo nano /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.100.1/24
static routers=192.168.100.0
Ovviamente, prima di apportare tale modifica accertiamoci che eth0
sia effettivamente il nome della porta ethernet, per farlo basta lanciare questo comando da shell:
ifconfig
Salvata la modifica al file dobbiamo riavviare il demone di dhcpdcd
:
sudo service dhcpcd restart
E finalmente possiamo iniziare a mettere le mani su dnsmasq. Eseguiamo dunque un backup delle configurazioni originali:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
Ed poi apriamo il file dei setting:
sudo nano /etc/dnsmasq.conf
Inseriamo quindi queste modifiche:
interface=eth0 # Use interface eth0
listen-address=192.168.100.1 # Specify the address to listen on
bind-dynamic # Bind to the interface
server=8.8.8.8 # Use Google DNS
domain-needed # Don't forward short names
bogus-priv # Drop the non-routed address spaces.
dhcp-range=192.168.100.50,192.168.100.150,12h # IP range and lease time
Con il parametro listen-address
abbiamo indicato l'indirizzo IP di riferimento per il Wi-Fi Bridge, ovvero 192.168.100.1
, mentre con dhcp-range
si è invece scelto il ventaglio di IP che verranno assegnati ai diversi client connessi, ovvero da .50
fino a .150
. In buona sostanza si potranno avere fino a 100 PC gestiti da tale Wi-Fi Bridge.
Configurazione del firewall iptables
Siamo giunti al momento di configurare il firewall iptables
. Prima però è necessario attivare la funzione di ipv4p IP Forwarding tramite il file di configurazione chiamato sysctl.conf
:
sudo nano /etc/sysctl.conf
All'interno di tale documento dobbiamo decommentare, cancellando l'hashtag, questa stringa:
net.ipv4.ip_forward=1
Salviamo le modifiche e abilitiamo il setting con il seguente comando da inserire nel terminale:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Successivamente procediamo configurando il firewall in modo tale che il traffico proveniente dalla porta ethernet venga trasferito sulla rete wireless. In questo esempio essa è chiamata wlan0
e dovrete modificarne il nome sulla base di quello che compare dopo avere digitato il comando ifconfig
.
Torniamo nel terminale e digitiamo tale set di comandi:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
Salviamo le configurazioni appena applicate in questo modo:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
Inoltre per accertarci che tali setting vengano caricati ad ogni reboot del sistema bisogna modificare il file rc.local
, presente nella directory /etc
:
sudo nano /etc/rc.local
ed aggiungiamo questo comando poco sopra exit 0
:
iptables-restore < /etc/iptables.ipv4.nat
Fatto questo riavviamo il demone di dnsmasq:
sudo service dnsmasq start
ed operiamo anche un riavvio del device:
sudo reboot
Al riavvio del Raspberry Pi avremo finalmente terminato la procedura per la creazione del WiFi bridge.