Computer 4 dummy

Informatica facile a portata di tutti

guidaimpostazioniinternetLinuxraspberry pireteWiFi

Condividere la WiFi con la porta Ethernet della raspberry pi

Se avete una vecchia stampante ancora perfettamente funzionante ma che non ha una connessione WiFi oppure se come nel mio caso volete collegare ad internet il vostro decoder di SKY e non avete una presa Ethernet a portata di mano potete farlo utilizzando una Rasberry-Pi.

Avevo già provato ad acquistare un kit PowerLine per portare la connessione internet fino al televisore ma probabilmente a causa di disturbi nella rete elettrica il segnale arrivava molto debole e con continue disconnessioni.

Un Net Extender WiFi sarebbe stata la soluzione ma sicuramente il costo sarebbe salito sopra ai 50€ per un buon dispositivo, a questo punto non potendo tirare un cavo Ethernet fino al decoder e causa gli scarsi risultati con il PowerLine ho voluto cercare il modo di sfruttare una Raspberry-Pi per prendere il segnale WiFi ed estenderlo tramite la porta Ethernet a disposizione sulla scheda.

La cosa mi è tornata utile e a “costo zero” anche perché avevo già collegato una Raspberry-Pi per vedere Netflix sulla mia TV non smart, in questo articolo spiego in dettaglio come configurarla:

Vedere Netflix su Rapsberry pi


Cosa ci serve?

Questa è la lista di tutto quello che ci serve per poter estendere la connessione WiFi alla porta Ethernet della Raspberry Pi con i relativi link ad Amazon, alcuni componenti sono facoltativi o possono essere anche diversi da quelli che vi ho indicato, se avete dei dubbi sulla compatibilità scrivetemi nei commenti.

  1. Raspberry Pi
  2. Alimentatore
  3. Scheda micro SD
  4. Case
  5. Tastiera/Mouse
  6. Adattatore USB Wireless

Dettagli:

  1. Raspberry Pi: https://amzn.to/2WQxgAe, Raspberry PI 3 Model B Scheda madre CPU 1.2 GHz Quad Core, 1 GB RAM: Va benissimo anche una versione più vecchia di Raspberry, l’importante è che abbia una torta Ethernet RJ-45 per collegare il cavo.Raspberry PI 3 Model B
  2. Alimentatore: https://amzn.to/2L6nDX3 Per alimentare la Raspberry Pi è importante un buon alimentatore con un minimo di 2A. Uno dei prodotti consigliati da Amazon è questo alimentatore microUSB da 5V a 3000 mA al prezzo di circa 10€.
    Alimentatore
  3. Micro SD: https://amzn.to/2ZyPq6k A seconda del sistema operativo che preferite installare potete scegliere anche una memoria da meno Gb, ma se volete installare la versione con desktop dato il costo di meno di 9 € vi consiglio una da 32 Gb.
    Qui il link alla guida sull’installazione del sistema operativo Rasbian: https://computer4dummy.altervista.org/installare-raspbian-raspberry/
    Micro SD
  4. Case: https://amzn.to/2XojCn8 Il case per la Raspberry è facoltativa ma consiglio sempre di comprarne una per proteggere la scheda dalla polvere e per installare i dissipatori e ventole di raffreddamento. Un esempio economico e completo di tutto è quello del link a 9 € circa.
    Case Raspberry
  5. Tastiera e Mouse: https://amzn.to/2xerkSp Di mouse e tastiere ce ne sono di tanti tipi, nel link vi riporto un esempio di un tipo simile a quello che utilizzo io per programmare le Raspberry.
    Tastiera e Mouse
  6. Adattatore WiFi: https://amzn.to/2Fi4VI4 Se utilizzate una versione di Raspberry Pi precedente alla 3 vi serve un adattatore WiFi altrimenti la scheda di rete WiFi è già integrata nella raspberry. In questo link una guida su come installare e configurare la chiavetta e la connessione WiFi: https://computer4dummy.altervista.org/raspberry-installare-chiavetta-wifi/

Installazione e configurazioni iniziali

Come descritto sopra per prima cosa è necessario installare il sistema operativo, la guida installare-raspbian-raspberry vi spiega come installare l’ultima versione di Rasbian, per praticità vi consiglio di installare la versione che comprende anche la parte desktop: Raspbian Stretch with desktop.

Ora dobbiamo configurare la nostra rete WiFi per accedere alla connessione Internet seguendo la procedura che abbiamo descritto in questo articolo: raspberry-installare-chiavetta-wifi

Alte configurazioni preliminari importanti.

Una vola completata la procedura di installazione del sistema operativo e di connessione WiFi ad internet completiamo la configurazione iniziale della Raspberry con questi passaggi:

  1. Cambiare la password di default della raspberry, non possiamo lasciare pi / raspberry, essendo un utente di root (amministratore) diventa molto pericoloso non modificare la password.
  2. Configurare correttamente le impostazioni internazionali della lingua, della tastiera e del Time Zone.
  3. Espandere il file system per poter utilizzare l’intera scheda SD.

Bridge di rete tra WiFi e Ethernet

Per creare la connessione di rete tra la WiFi (connessa ad internet) e la porta Ethernet utilizziamo dnsmasq per configurare la Raspberry come server DHCP e configurare le impostazioni DNS personalizzate. Questa configurazione ci permetterà ai dispositivi collegati alla porta Ehernet di ottenere un indirizzo IP e di passare alla porta WiFi le query DNS.

Sono necessarie anche delle configurazioni di iptables per creare una NAT tra la porta Ethernet e la porta WiFi.

Installare dnsmasq

sudo apt-get install dnsmasq

Impostiamo gli indirizzi IP statici

L’indirizzo IP della Raspberry sulla porta WiFi fungerà da Gateway per i dispositivi che verranno collegati alla porta Ethernet, la maggior parte delle connessioni private hanno un indirizzo simile a 192.168.1.X

Per non creare conflitti è consigliabile configurare la sottorete sulla porta ethernet con un indirizzo simile a 102.168.2.X

Quindi la maschera di rete sarà impostata a 255.255.255.0

Ora impostiamo gli indirizzi di broadcast del dhcp con gli indirizzi disponibili:

network: 192.168.2.0
broadcast: 102.168.2.255

Impostare iptables per estendere la connessione internet dalla porta WiFi alla porta Ethernet

NAT significa Network Address Translation questo significa che la Raspberry fungerà da router per tutti i dispositivi che verranno collegati ad essa, le impostazioni di NAT inoltreranno quindi le richieste tramite la porta WiFi al router principale dal quale arriva la connessione Internet.

Questa procedura prevede una serie di comandi:

sudo iptables -F
sudo iptables -t nat -F
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

Impostazioni dnsmasq

La prima cosa da fare è abilitare l’inoltro degli indirizzi IP mettendo a 1 il parametro ip_forward:

sudo nano /proc/sys/net/ipv4/ip_forward

Potrebbe in oltre essere necessario togliere il commento al file /etc/sysctl.conf alla riga relativa al parametro: net.ipv4.ip_forward=1

Ora le impostazioni di IP Routing

Ecco i comandi da eseguire:

sudo ip route del 0/0 dev eth0 &> /dev/null a=`route | awk "/${wlan}/"'{print $5+1;exit}'`
sudo route add -net default gw 192.168.2.1 netmask 0.0.0.0 dev eth0 metric $a

Ora come ultimo passaggio ci resta da aggiungere queste impostazioni al file: /etc/dnsmasq.conf

interface=eth0
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.2.2,192.168.2.100,12h

Quindi avviamo il servizio dnsmasq con il comando:

sudo systemctl start dnsmasq

A questo punto basta collegare un cavo alla porta Ethernet della Raspberry per estendere la connessione internet al nostro dispositivo sprovvisto di WiFi, le configurazioni sono Hot Plug cioè basta collegare il cavo per ottenere un indirizzo IP e navigare su internet.

Automatizzare con un unico script

Ci sono molti comandi da eseguire per permettere di estendere la connessione internet dalla porta WiFi alla porta Ethernet della nostra Raspberry, il tutto diventa molto semplice ed immediato se inseriamo tutti i comandi in un unico script da lanciare all’avvio.

Ecco lo script:

#!/bin/bash

# Computer 4 Dummy
# Condividere la WiFi con la porta Ethernet della raspberry pi
# Link: https://computer4dummy.altervista.org/Condividere-la-WiFi-con-la-porta-Ethernet-della-raspberry-pi
#
# Per un corretto funzionamento è necessaria la 
# pre installazione del servizio: `dnsmasq`
#
# Modificare le variabili seguenti dove necessario
# Ricordarsi di verificare i prametri della connessione di rete 
# tramite il comando `ifconfig`

ip_address="192.168.2.1"
netmask="255.255.255.0"
dhcp_range_start="192.168.2.2"
dhcp_range_end="192.168.2.100"
dhcp_time="12h"
eth="eth0"
wlan="wlan0"

sudo systemctl start network-online.target &> /dev/null

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t nat -A POSTROUTING -o $wlan -j MASQUERADE
sudo iptables -A FORWARD -i $wlan -o $eth -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $eth -o $wlan -j ACCEPT

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo ifconfig $eth $ip_address netmask $netmask

sudo ip route del 0/0 dev $eth &> /dev/null

sudo systemctl stop dnsmasq

sudo rm -rf /etc/dnsmasq.d/* &> /dev/null

echo -e "interface=$eth\n\
bind-interfaces\n\
server=8.8.8.8\n\
domain-needed\n\
bogus-priv\n\
dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /tmp/custom-dnsmasq.conf

sudo cp /tmp/custom-dnsmasq.conf /etc/dnsmasq.d/custom-dnsmasq.conf
sudo systemctl start dnsmasq

Oppure potete scaricarlo da GitHub a questo link: https://git.io/fjVDp

Una volta scaricato il file, per avviare lo script vi basta eseguire i comando:

sudo bash /home/pi/WiFi2Eth.sh

Avvio automatico al riavvio

Per avviare lo script in automatico ad ogni riavvio della raspberry basta aggiungere l’esecuzione a questo file con il comando:

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

ed in fondo al file aggiungere:

sudo bash /home/pi/WiFi2Eth.sh

Una volta salvato il file basta quindi riavviare la Raspberry e lo script dovrebbe partire in automatico.

Se avete dei dubbi o qualche passaggio non vi è chiaro scrivetemi un commento!

FONTI:

  • https://www.amazon.it
  • https://www.instructables.com/id/Share-WiFi-With-Ethernet-Port-on-a-Raspberry-Pi
  • https://computer4dummy.altervista.org/raspberry-installare-chiavetta-wifi
  • https://computer4dummy.altervista.org/installare-raspbian-raspberry

4 thoughts on “Condividere la WiFi con la porta Ethernet della raspberry pi

  • Puoi spiegare come si configura (installa) lo script. Funziona sul nuovo OS del raspberrypi? Grazie

    Risposta
    • Ciao Paolo,
      Lo script lo puoi eseguire creando un file bash:
      sudo nano WiFi2Eth.sh

      quindi copi tutto il codice di esempio sopra e salvi (Ctrl+X –> Y –> Invio)
      Alla file lo esegui con il comando sudo bash WiFi2Eth.sh

      Non ci sono problemi con il sistema operativo, basta che sia LINUX 😉

      Fammi sapere se ci sei riuscito.
      Ciao

      Risposta
  • Puoi spiegare dove impostiamo gli indirizzi IP statici? Grazie

    Risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.