Home > Comandi Console, Connessioni, Guide, Linux, Ubuntu, Windows > Condividere la connessione Internet

Condividere la connessione Internet

23 febbraio 2008

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 nostroutente@nomecomputer a root@nomecomputer. 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.

Attivazione condivisione InternetFatto 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.

Se le macchine a cui vogliamo fornire la connessione Internet sono altri Ubuntu potremo cambiare gateway e DNS da Network Manager (Amministrazione, Rete).

Impostazioni di rete Proprietà di eth0 Configurazione DNS

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.

Proprietà connessione di rete locale (LAN) Proprietà Protocollo Internet

In questo esempio il PC Windows avrà IP 192.168.1.4 mentre quello Ubuntu che condivide la connessione 192.168.1.12. I DNS sono quelli del nostro provider Internet.

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-condivisione.rules

Mentre per ricaricarle il comando sarà:

iptables-restore < /etc/iptables-condivisione.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. Per cui sempre da root creiamo lo script attiva-condivisione-internet con:

cd /etc/network
iptables-save > condivisione-internet.rules
touch attiva-condivisione-internet
chmod u+x attiva-condivisione-internet
gedit 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:

gedit interfaces

InterfacesIl contenuto di questo dipende dalle interfacce installate, in generale, in fondo alla definizione dell’interfaccia della nostra rete locale (qui eth0), aggiungeremo:

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

In questo modo le modifiche saranno riapplicate al riavvio della configurazione della rete. Se vogliamo proteggere la nostra rete usando iptables è disponibile un ottimo tutorial su debianizzati.org.

  1. Bestia
    05 giugno 2011 alle 0:09

    Ciao, e grazie.
    Con questa guida e alcuni accorgimenti sono riuscito nell’intento.
    Riassumo lo stato dell’arte a favore dei prossimi newbe, come a favore è stato per me.
    configurazione:
    Ubuntu 11.04 con modem(Usb) speedtouch collegato a internet.
    – Router Alice Gate Plus 2 Wi-fi – usato SOLO come router
    Windows xp da collegare.

    Ho seguito la guida passo-passo, più di una volta ma non funzionava, i pc si vedevano in rete, Ubuntu si collegava a internet ma Windows no.

    -Impostati “static” gli ip delle macchine

    -Modificato il masquerade con :
    iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
    sostanzialmente è uguale ma limita l’azione al range della rete(mi sono tenuto largo con gli indirizzi…)

    -Aggiunti :
    iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
    iptables -A FORWARD -d 192.168.0.0/16 -m state –state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
    Questi invece permettono il passaggio di flusso in uscita o in entrata e stabilito, ralzionato nel range ip voluto.

    , oltre alle regole gia presenti.
    e… PING! l’antivirus di windows si è aggiornato all’istante, cioè, il traffico di rete viene correttamento mascherato e instradato tramite il router.

    la configurazione di eth0 la eseguo digitando “ifup eth0” , qui devo ancora capirci ma funziona e mi attiva anche pppd…

    Grazie e grazie per lo spunto.

  2. haorubin
    17 novembre 2011 alle 17:02

    possibile che ci sia un problema per condividere connessione tra due sistemi ubuntu 10.04?

  3. Anonimo
    17 febbraio 2012 alle 12:32

    Complimenti ottima guida

Comment pages
1 7 8 9
  1. No trackbacks yet.
I commenti sono chiusi.
%d blogger cliccano Mi Piace per questo: