Come condividere la nostra connessione di rete

 

Condividere la connessione Internet con Ubuntu

 

E’ possibile condividere la connessione internet da Ubuntu verso tutti i PC della LAN senza installare alcun pacchetto aggiuntivo. In questo modo tutti i PC facenti parte della rete locale potranno navigare utilizzando la condivisione del nostro PC Linux.

Il nostro pc ha due interfacce di rete eth0 rete locale e eth1 rete verso router.

Se la rete è già configurata e non sapete che nome ha l’interfaccia in uscita, basterà vedere eseguire il seguente comando:

route -n | grep "0.0.0.0" | grep UG | awk '{print $8}'

Nel nostro esempio supporremo è l’interfaccia eth1.

Entriamo nel terminale come root, configurariamo il masquerading sul NAT (Network Address Translation) su iptables (il programma che si interfaccia col firewall interno di Linux). Ciò consentirà l’inoltro delle richieste da un’interfaccia ad un’altra, configurare il masquerading verso l’interfaccia eth1 utilizzeremo:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Possiamo verificare l’avvenuto inserimento della regola con:

iptables -t nat -L

troveremo:

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination

MASQUERADE  0    --  anywhere             anywhere

Ciò significa che la regola di masquerading verrà applicata per tutti gli indirizzi di origine (source anywhere), diretti verso qualsiasi altro indirizzo (destination anywhere).

Configurato il firewall per consentire il traffico verso l’esterno, non ci resta che attivare il routing sull’interfaccia di rete. Questo consentirà l’inoltro dei pacchetti predisponendo il nostro sistema come fosse un router. Per attivare il routing basterà un semplice:

echo 1 > /proc/sys/net/ipv4/ip_forward

In questo esempio il PC senza connessione ha IP 192.168.1.7 e il PC che condivide la connessione Internet ha IP 192.168.1.12. Sulla scheda DNS inseriremo gli indirizzi DNS forniti dal nostro provider (sebbene sia possibile usare quelli del computer che condivide la connessione usando dnsmasq, non trattato però in questa sede).

Se i PC a cui vogliamo dare la connessione sono dei Windows procederemo in maniera analoga: nella proprietà della connessione alla rete locale assegneremo il gateway del nostro Ubuntu.

E’ importante però ricordare che i comandi indicati sono transitori e le due regole (masquerading e routing) saranno perdute dopo un riavvio del sistema. E’ però possibile salvare le regole di iptables col seguente comando:

iptables-save > /etc/iptables-incondiviso.rules

Mentre per ricaricarle il comando sarà:

iptables-restore < /etc/iptables-incondiviso.rules

Se vogliamo evitare di attivare e disattivare le regole su richiesta e preferiamo che sia fatto automaticamente all’avvio creeremo uno script che le reimposti all’avvio:

cd /etc/network

iptables-save > condivisione-internet.rules

touch attiva-condivisione-internet

chmod u+x attiva-condivisione-internet

nano attiva-condivisione-internet

E una volta aperto scriviamo all’interno:

iptables-restore < /etc/network/condivisione-internet.rules

echo 1 > /proc/sys/net/ipv4/ip_forward

Salviamo il file ed apriamo quindi il file interfaces con:

nano interfaces

Il contenuto di questo dipende dalle interfacce installate, in generale, in fondo alla definizione dell’interfaccia della nostra rete locale eth0, aggiungiamo:

pre-up /etc/network/attiva-condivisione-internet

In questo modo le modifiche saranno riapplicate al riavvio della configurazione della rete.