Condividere la connessione Internet
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.
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.
Se le macchine a cui vogliamo fornire la connessione Internet sono altri Ubuntu potremo cambiare gateway e DNS da Network Manager (Amministrazione, Rete).
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.
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
Il 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.
io volevo collegare la mia xbox 360 su internet e ci sn riuscito solo che ho un problema di nat moderato e pertanto ho dei problemi con alcune sessioni di giochi con firestarter condivido la connessione con un opzione ma per aprire determinate porte come devo fare? spero in un vostro aiuto
ciao raga io avrei un problema ho seguito la guida in tutto e per tutto ma non ho risolto il mio problema la mia situazione è questa devo far passare la ps3 attraverso la scheda di rete ethernet del portatile per poi arrivare sul web attraverso la internet key della voda sol oche fra la ps3 e il pc non ho niente quindi devo comunicare direttamente con la scheda del pc: [PS3]—->[scheda ethernet portatile]—->[internet key voda]—->[www].
come gia detto ho seguito la guida ma senza esito positivo c’è altro che devo fare nel mio specifico caso per far si che avvenga la connessione al tanto agoniato www?
come accedi alla key vodafone?
direttamente da Ubuntu?
via ethernet?
io ho la internet kei voda (quella usb), riconosciuta ovviamente come interfaccia ppp0 per connettrmi al web uso un software dedicato alla chiavetta in questione, se è questo ke volevi sapere.
quindi dovrebbe valere tutto cio` descritto in questa guida, si tratta di una connessione a tutti gli effetti
si però a quanto pare c’è qualcosa ke non va, non nella guida che è praticamente perfetta, ma qualcosa nel mio ubuntu 8.10 se domani mattina ti trovo qui vediamo come risolvere che nel pome nn ci sono dopo pranzo vo via.
no domani sono in ufficio, riporta qui i risultati di
ifconfig
route
cat /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -L
ciao
questo è ifconfig:
eth0 Link encap:Ethernet HWaddr 00:1b:38:1e:b9:6d
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.224.171.149 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:23016 errors:322 dropped:0 overruns:0 frame:0
TX packets:24651 errors:0 dropped:0 overruns:0 carrier:0
collisioni:0 txqueuelen:3
Byte RX:24009959 (24.0 MB) Byte TX:2981304 (2.9 MB)
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)
questo è 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
default * 0.0.0.0 U 0 0 0 ppp0
questo è iptables -t nat -L:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all — anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
cmq magari non domani mattina ma domani sera x me uguale anke prox weekend va bene tanto aspettare una sett in + non mi cambia la vita visto che sono mesi che ci sto tribbolando senza successo
ma la scheda ethernet e` configurata?
non appare su route e su ifconfig non ha nessun indirizzo ip
configura la eth0 intanto in modo da raggiungere la rete e la ps3 via ping. consulta anche i commenti sopra di chi stava facendo una cosa similare per la wii
che io sappia è gia configurata poi non so tieni presente che non ho installato network manager di ubuntu in quanto mi dava problemi con la configurazione della internet key, quindi anke volendo non saprei come configurare la scheda di rete.
scusa se ste lo chiedo ma nel caso in cui non fosse configurata come fai a capirlo da quello che ho postato?(mi intessa saperlo anke perchè nn è molto che uso ubuntu saranno 6 mesi su per giù e ogni nozione penso e spero mi porti sempre più vicino a risolvere il problema anke quando non posso connettermi a internet). e poi cosa intendo per raggiungere la rete praticamente la ps3 è collegata direttamete alla scheda di rete ethernet (non avendo router o periferiche di sorta che possano semplificarmi la vita)