03 marzo, 2007

Condividere la connesione ad internet con linux

In molti mi chiedono come si fa a condividere la connessione internet del proprio pc linux con altri computer sulla rete locale. L'operazione non è complessa. Si possono scegliere più strade diverse:

1) Installare firestarter un tool per la gestione del firewell che ha tra le sue impostazioni una opzione per condividere la connessione ad internet

2) Procedere manulamente con i tools messi a disposizione dalla distribuzione.

Io sconsiglio la prima soluzione perché si impara poco ed inoltre installare un intero programma solo per condividere la connessione ad internet non è molto conveniente.

Procediamo quindi per la seconda via. Supponiamo che il nostro pc che è connesso ad
internet abbia due interfacce di rete (o comunque una interfaccia ethernet ed una interfaccia PPP che rappresenta la connessione ad internet): la prima eth0 connessa ad internet e la seconda eth1 connessa alla rete locale. Consideriamo sulla eth1 un indirizzo ip 192.168.100.1. (Per impostare questo indirizzo basta usare il comando

$ sudo ifconfig eth1 192.168.100.1 up

)

Per condividere la connessione ad internet è necessario abilitare il forwarding ed il masquerading sull'interfaccia di rete in questo modo:


$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Naturalmente eth0 va sostituito con il nome dell'interfaccia connessa ad internet.
Ora non resta che aggiungere alla tabella di routing dei clients (gli altri pc della rete che devono accedere ad internet tramite la connessione del computer che abbiamo appena configurato) come default gateway il pc connesso a interntet. Per farlo bisogna usare
i seguenti comandi:

$ sudo ifconfig eth0 192.168.100.x
$ sudo route add default gw 192.168.100.1

Il primo comando assegna un indirizzo ip alla scheda di rete (sostituite la x con un numero diverso su ogni client). Il secondo aggiunge alla tabella di routing l'indirizzo del server come gateway.
Naturalemte i valori potete sostituirli con quelli della vostra rete ;)
Rimane ora solo da aggiungere sui clients gli ip dei server DNS. Potete usare quelli
che ci sono sul server e aggiungerli al file /etc/resolv.conf

8 commenti:

  1. visto che ci sei, sul pc connesso a internet abilità un server DHCP e fornisci in automatico agli altri PC l'inidirizzo IP, il default gateway e il server DNS.

    sugli altri PC basta abilitare il DHCP client....

    ciao,
    A.

    RispondiElimina
  2. Anonimo1:21 PM

    Ciao trovo difficoltà nell'indicare l'interfaccia connessa ad internet perchè ho un modem usb. Sapresti indicarmi quale usare?
    grazie

    RispondiElimina
  3. lancia il comando ifconfig senza alcun parametro per vedere la lista delle interfacce attive.

    Ti connetti utilizzando PPPOA? Se si a connessione stabilita dovresti trovare una interfaccia chiamata ppp0 o qualcosa di simile. Quella è l'interfaccia verso internet :)

    RispondiElimina
  4. Anonimo10:37 PM

    si, lo vede come un ppp0, grazie è andata bene! navigo ora anche sul client!
    resta però un piccolo dubbio: se uso come sever un windows 2000 anzichè di linux (nel mio caso xubuntu 6.06) ottengo una velocità maggiore navigando sul client....devo riuscire ad ottimizzare la connessione sia del modem sia della rete sotto linux.
    Ciao!

    RispondiElimina
  5. Anonimo6:59 PM

    Ciao, ti ringrazio molto per l'utile post con le indicazioni per condividere la connessione. Io le ho provate e riesco a far vedere al mio laptop con Win Vista il mio gateway Desktp Linux con Ubuntu. Ho settato IP e DNS sul laptop ma purtroppo vista vede solo la connessione come locale e non riesce ad accedere ad internet. Any idea? Grazie in anticipo.
    Fabio

    RispondiElimina
  6. mi dispiace ma non conosco windows vista

    Questo tutorial è per condividere la connessione tra due pc linux

    RispondiElimina
  7. Anonimo1:05 PM

    Perche non:)

    RispondiElimina
  8. Anonimo1:06 PM

    quello che stavo cercando, grazie

    RispondiElimina