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.

Annunci
  1. jinkazama82it
    15 febbraio 2009 alle 14:19

    ho fatto un’attimo una ricerca col buon google e ho risolto x la configurazione della scheda ethernet effettivamente non era configurata ma solo perkè c’erano dei parametri sbagliati nel file che veneiva caricato per configurarla ora non mi resta che riprovare a far andare la PS3 in rete però ora nn ho tempo semmai ti farò sapere domani comunque ti posto i nuovi output dei comandi sopra citati

    root@jinkazama82it-laptop:/etc/network# ifconfig
    eth0 Link encap:Ethernet HWaddr 00:1b:38:1e:b9:6d
    inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
    inet6 addr: fe80::21b:38ff:fe1e:b96d/64 Scope:Link
    UP BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:1 errors:0 dropped:0 overruns:0 frame:0
    TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
    collisioni:0 txqueuelen:1000
    Byte RX:64 (64.0 B) Byte TX:492 (492.0 B)
    Interrupt:18

    lo Link encap:Loopback locale
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisioni:0 txqueuelen:0
    Byte RX:0 (0.0 B) Byte TX:0 (0.0 B)

    ppp0 Link encap:Point-to-Point Protocol
    inet addr:83.225.209.171 P-t-P:10.64.64.64 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:258 errors:2 dropped:0 overruns:0 frame:0
    TX packets:299 errors:0 dropped:0 overruns:0 carrier:0
    collisioni:0 txqueuelen:3
    Byte RX:60327 (60.3 KB) Byte TX:60477 (60.4 KB)

    wlan0 Link encap:Ethernet HWaddr 00:1b:77:4e:da:b1
    UP BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisioni:0 txqueuelen:1000
    Byte RX:0 (0.0 B) Byte TX:0 (0.0 B)

    wmaster0 Link encap:UNSPEC HWaddr 00-1B-77-4E-DA-B1-00-00-00-00-00-00-00-00-00-00
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisioni:0 txqueuelen:1000
    Byte RX:0 (0.0 B) Byte TX:0 (0.0 B)

    root@jinkazama82it-laptop:/etc/network# route
    Tabella di routing IP del kernel
    Destination Gateway Genmask Flags Metric Ref Use Iface
    10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0
    192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
    link-local * 255.255.0.0 U 1000 0 0 eth0
    default * 0.0.0.0 U 0 0 0 ppp0
    root@jinkazama82it-laptop:/etc/network# iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination

    Chain POSTROUTING (policy ACCEPT)
    target prot opt source destination
    MASQUERADE all — 192.168.1.0/24 anywhere

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

  2. 15 febbraio 2009 alle 15:26

    prima nella sezione eth0 non c’era nessun indirizzo ip e su route non risultava proprio

    ora si che e` configurata, prova a pingare la PS3 dal pc e se risponde dovrebbe andare pure la configurazione internet

    ciao

  3. jinkazama82it
    15 febbraio 2009 alle 15:31

    ciao ok programmi dopo pranzo saltati quindi sto qua per dirti che in seguito alla ricerca fatta per configurare la scheda di rete il file che ospitava la configurazione della scheda di rete era… come dire sbagliato e manco di poco ma io nn potevo saperlo visto che apparte oggi non ci avevo mai messo mano una volta sistemata la configurazione e richiamata la configurazione con il comando specifico la la PS3 si è connessa all’istante senza batter ciglio fino ad oggi nessuna e dico nessuna guida aveva mai portato a questi risultati.
    se non c’eri tu ke mi dicevi che la scheda di rete non era configurata a quest’ora e per i successivi mesi non ne sarei mai e poi mai venuto a capo.
    GRAZIE PER AVERMI FATTO USCIRE DA QUESTO TETRO TUNNEL IN CUI MI TROVAVO DA MESI.

  4. 15 febbraio 2009 alle 15:37

    Ubuntu purtroppo da un paio di versioni ha il vizietto di affidarsi unicamente a network-manager per la rete, non configurando piu` il file interfaces, quindi se non usi n-m ti trovi spiazzato e senza configurazione

    mi fa piacere sapere che tu abbia risolto il problema, ciao

  5. jinkazama82it
    15 febbraio 2009 alle 15:43

    io infatti l’ho disinstallato n-m perke mi dava problemmi e apparte la configurazione della sheda di rete eth0 nel file interfaces non c’è e non c’era altro, l’unica cosa che mi lascia alquanto perplesso è come potevano esserci dei settaggi per la eht0 se io nn ci avevo mai messo mano, però va bene così l’importate è che tutto funzioni.

  6. jinkazama82it
    17 febbraio 2009 alle 9:55

    ciao volevo un informazione se sei in grado di rispondermi, la domanda è questa posso configurare la scheda di rete wireless del portatile come access point? io avrei una kiavetta usb che ha la funzione access point ma i driver per linux purtroppo non supportano tale funzione almeno per quanto ho letto in rete il modello se può interessare èil WL-685Z.

  7. 17 febbraio 2009 alle 14:24

    non ho esperienza di wireless, spiacente

  8. filippo
    07 giugno 2009 alle 21:33

    ciao ragazzi ho un problema vi prego auitatemi!!
    ho un pc con xp con cui navigo con un modem usb momodesign md-@ della tre vorrei collegarlo per naviare tramite cavo ethernet al portatile dove ho installato xubuntu 8.04 ma non riesco in alcum modo ho provato a inserire il modem usb su portatile ma non lo riconosce allora ho provato a collegare il pc con xp a internet e il portatile con cavo ethernet ma niente da fare come posso fare a collegare il portatile a internet tramite cvo oppure a fargli riconoscere il moded usb? sarei molto lieto se qualcuno mi desse una mano

    • 08 giugno 2009 alle 13:55

      non conosco quel modem
      ma se già ti funziona su windows, condividi la connessione internet su windows e su linux immetti come gateway l’indirizzo ip del pc windows

      non devi fare altro
      ciao

  9. filippo
    09 giugno 2009 alle 9:10

    come faccio ad ottenere gl’indirizzi ip e getaway ?

    • 09 giugno 2009 alle 19:43

      li leggi dalla configurazione della rete di windows ma prima devi condividere la connessione da windows stesso e XP quando lo fai ti cambiera` gli indirizzi ip della scheda della LAN

      ciao

  10. 08 luglio 2009 alle 9:05

    @Filippo

    Usa ip statico esempio in Networt manager:
    Seleziona la connessione che utlizzi (se via cavo o wifi)

    ip: 192.168.0.15
    mask 255.255.255.0
    gateway (l’ip del pc dove è collagata la penna)

    DNS 62.13.171.4,62.13.171.5

    funziona perfettamente.

    @Per l’autore
    Ho il problema inverso, dovrei far condividere la penna configurata con wvdial su ubuntu nella mi lan.
    La penna sotto ubuntu si collega perfettamente, devo solo farla condividere al resto della rete.

    Grazie.

    • 08 luglio 2009 alle 9:39

      ciao Fabbroz

      in linea generale ti basta seguire quel che è descritto nell’articolo

      trova l’interfaccia di rete della penna
      attiva l’ip forward e la condivisione

Comment pages
  1. No trackbacks yet.
I commenti sono chiusi.
%d blogger hanno fatto clic su Mi Piace per questo: