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.
Dobbiamo conoscere l’interfaccia che ci connette ad internet, generalmente se utilizziamo un modem sarà ppp0 mentre se usiamo un router connesso ad un pc con due schede di rete l’interfaccia sarà eth1. Se la rete è già configurata basterà vedere il nome dell’interfaccia di uscita con:
route -n | grep “0.0.0.0” | grep UG | awk ‘{print $8}’
Nel nostro esempio supporremo che il traffico verso internet sia gestito dall’interfaccia ppp0, cambiare eventualmente il nome dell’interfaccia con quella utilizzata.
L’operazione di condivisione è davvero molto semplice se effettuata da un terminale ma richiede i privilegi di amministratore (root) per cui all’interno di un terminale trasformiamoci in root usando:
sudo -s -H
Immettiamo naturalmente la nostra password e diventeremo utente root. Il prompt cambierà da [email protected] a [email protected]. Questo ci assicura dell’avvenuto cambio di utente.
Adesso possiamo configurare 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, ad esempio dall’interfaccia eth0 che ci connette alla rete locale, all’interfaccia ppp0 oppure eth1 che smista il traffico internet. Per configurare il masquerading verso l’interfaccia ppp0 utilizzeremo:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Possiamo verificare l’avvenuto inserimento della regola con:
iptables -t nat -L
Osservando l’opzione (catena) POSTROUTING che abbiamo specificato precedentemente. Se l’operazione è stata svolta correttamente 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
Per i più curiosi, non è sufficiente usare sudo ma necessariamente root poiché sudo non consente la scrittura redirezionata, il
comando sudo echo 1 > qualcosa significherà “scrivi 1 da root” e quindi “poni il risultato su qualcosa”, non da root ma da
utente normale.
Per questa ragione il comando di attivazione del routing produrrebbe l’errore: bash:
/proc/sys/net/ipv4/ip_forward: Permesso negato.
Fatto ciò la nostra connessione internet è condivisa con tutte le macchine della rete, non ci resta che impostare come gateway
l’indirizzo IP del computer che condivide la connessione su tutte le macchine che vogliamo fare accedere ad Internet e i server
DNS che preferiamo.