in Raspberry Pi

Come condividere la connessione internet ai Pi Zero via OTG

So che dal titolo potrebbe non comprendersi molto ma l’obiettivo è collegare i Pi Zero a internet, non tramite Wi-Fi ma bensì via USB, tramite un altro Raspberry che fa da router.

I Raspberry Pi Zero a differenza delle altre versioni (mi riferisco al 2 e al 3) è possibile configurarli come accessori quindi il loro funzionamento resta inalterato ma in più, il dispositivo a cui lo collegate, potrà riconoscerlo come un hub USB o come un adattatore ethernet.

Una volta configurato il Pi Zero da poter funzionare direttamente dalla porta OTG, collegatelo a un Pi 2 o 3 come nella foto:

Due Pi Zero e un Raspberry Pi: dove comprarli

Il Pi Zero non configurate nulla, farà tutto automaticamente. Mentre nel Raspberry 2 o 3, che sarà quello che gli offrirà la connessione a internet (quindi a lato pratico sarà come un router in quanto gli assegnerà un IP e creerà una connessione apposta per ogni Pi Zero collegato), dovrete installare dnsmasq:

sudo apt install dnsmasq

Ora configuriamolo modificando il file di configurazione:

sudo nano /etc/dnsmasq.conf

Se ad esempio volete collegarne due di Pi Zero, create due interfacce (cambiate i parametri che più preferite) usb0 e usb1:

interface=usb0
interface=usb1
listen-address=127.0.0.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv

dhcp-range=usb0,192.168.2.2,192.168.2.100,infinite
dhcp-range=usb1,192.168.3.2,192.168.3.100,infinite

Adesso attivate il forward dei pacchetti:

sudo nano /etc/sysctl.conf

E modificate la riga:

net.ipv4.ip_forward=1

Ora modificate il file:

sudo nano /etc/network/interfaces

E incollate (modificando i parametri che preferite e la x nell’IP del vostro Raspberry principale):

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.x
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

allow-hotplug usb0
iface usb0 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.1

allow-hotplug usb1
iface usb1 inet static
    address 192.168.3.1
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.2.255
    gateway 192.168.3.1

Voilà, ora riavviate il servizio (immaginando che voi abbiate già attaccato il o i Pi Zero alle USB del vostro Raspberry) con:

sudo service dnsmasq restart

E il gioco è fatto, il vostro Raspberry che fa da router assegnerà gli IP e reindirizzerà i pacchetti ai Pi Zero.