Raspberry come bridge wifi to ethernet e file server samba

Si trovano su amazon, ebay, ecc... adattatori in grado di trasformare in wifi i dispositivi (decoder, consolle, ...) che fisicamente dispongono di sola porta ethernet.

Io ho usato il mio Raspberry Pi 2 con installato Raspbian Jessie con un adattatore wifi che già possedevo. Il primo passo è assicurarsi che l'adattatore wifi venga riconosciuto e che il Raspberry sia in grado di connettersi alla vostra rete wifi.

Nel mio caso l'access point wifi si trova sull'indirizzo 192.168.1.1

Trasformeremo il Raspberry in un router che fa da bridge wifi-ethernet con integrato server dhcp.

1) assegniamo ip statico all'interfaccia ethernet editando il file di configurazione:

sudo nano /etc/network/interfaces

e inseriamo

allow-hotplug eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

Per il prossimo passo ho optato per dnsmasq che è semplice e volce da configurare e leggero.

 

2) Installiamo il server dhcp:

sudo apt-get install dnsmasq

e lo configuriamo editando il file /etc/dnsmasq.conf

sudo nano /etc/dnsmasq.conf

e inseriamo

interface=eth0      # usiamo interfaccia eth0
listen-address=192.168.0.1 # specifichiamo l'indirizzo sui cui servire le connessioni in entrata
bind-interfaces      # facciamo il bind per essere sicuri di non mandare cose da altre parti
server=8.8.8.8       # inoltra richieste DNS a Google
domain-needed        # non inoltrare nomi brevi
bogus-priv           # non inoltrare indirizzi nello spazio indirizzi per i quali non esiste una route
dhcp-range=192.168.0.2,192.168.0.99,72h # assegna indirzzi ip con un lease time di 72 ore

 

3) editiamo il file di configurazione /etc/sysctl.conf e abilitiamo il forward ipv4

sudo nano /etc/sysctl.conf

e inseriamo/decommentiamo la riga

net.ipv4.ip_forward=1

 

4) configuriamo il kernel al fine di far passare i pacchetti, mettiamo i comandi nel file /etc/rc.local in modo che la configurazione viene attivata ad ogni boot:

sudo nano /etc/rc.local

e inseriamo

iptables -F     # svuota regole sulle catene
iptables -P INPUT ACCEPT     # accettiamo tutto il traffico in entrata
iptables -P OUTPUT ACCEPT     #accettiamo tutto il traffico in uscita
iptables -P FORWARD ACCEPT    # permettiamo l'inoltro richieste tra le interfacce di rete
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE     # mascheriamo le richieste che devono andare su internet attraverso il nat

 

Riavviamo e colleghiamo il cavo di rete tra il Raspberry e un dispositivo con porta ethernet. Se tutto è andato bene adesso il vostro dispositivo è collegato a internet tramite wifi. Si può collegare in cascata al Raspberry uno switch in modo da poter collegare più di un dispositivo contemporaneamente.

Essendo a questo punto il Raspberry posizionato tra 2 reti, quindi raggiungibile senza ulteriori configurazioni sia dai dispositivi collegati all'access point che da i dispositivi ai quali sta fornendo accesso internet, possiamo utilizzarlo per fornire anche altri servizi come ad esempio un file server basato su samba.

 

5) installiamo il server samba

sudo apt-get install samba

e lo configuriamo

sudo nano /etc/samba/smb.conf

inserendo una configurazione del tipo:

[global]
netbios name = RASPY
server string = RASPY
guest account = pi
workgroup = WORKGROUP

dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = Bad User
obey pam restrictions = yes
unix password sync = yes
usershare allow guests = yes
[usb_shared]
path = /media/pi
guest ok = yes
writable = yes
browseable = yes
create mask = 0777
directory mask = 0777
valid users= utente, user, sante, ziosante, pi, guest, root, nobody

[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S

questa configurazione rende disponibile a tutti la cartella /media/pi dove Raspbian ha montato automaticamente e per default l'harddisk usb che ho collegato.

6) per montare automaticamente ad ogni avvio il disco usb precedentemente condiviso:

sudo apt-get install ntfs-3g
sudo mkdir /media/pi
sudo chown -R pi:pi /media/pi
ls -l /dev/disk/by-uuid/
sudo nano /etc/fstab
UUID=xxxxxxxxxxxx /media/pi ntfs-3g auto,nofail,noatime,users,rw,uid=pi,gid=pi 0 0

dove xxxxxxxxxxxx sarebbe il valore UUID relativo al disco che si vuole montare.