lunedì 22 febbraio 2010

Forwardare connessioni ip - Gnu/Linux

Scenario:
Siete con un amico e due portatili in un luogo dove c'è solo la connessione senza fili e la vostra scheda di rete wireless non funziona. Oppure funziona ma dovreste avere il portatile registrato al fornitore della connessione (in genere nelle università o negli Hot-spot controllati).
Oppure per un motivo qualsiasi non volete/potete connettervi direttamente ad internet...
Che fare?
Fatevi forwardare dal vostro amico :D

Si possono avere diverse configurazioni, ne vediamo due:

1) Il vostro amico (PC2) si collega in wireless (wlan0) ad Internet e voi (PC1) vi collegate via cavo al vostro amico

Ecco le configurazioni

PC2:
Dopo essersi associato e ricevuto l'ip sull'interfaccia wireless deve copiare queste righe


  #!/bin/bash

echo "Inserisci l'interfaccia di uscita su Internet"
#molto probabilmente sarà wlan0 o eth1

read interfaccia_pubblica

echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Inserisci ip del pc che vuoi forwardare"
read ippc1


iptables -t nat -A POSTROUTING -o $interfaccia_pubblica -j MASQUERADE -s $ippc1

echo "Inserisci interfaccia verso la quale vuoi forwardare"
read interfaccia_locale

echo "Inserisci un ip statico per l'interfaccia $interfaccia_locale della stessa classe di $ippc1 "
read ip_locale

ifconfig $interfaccia_locale $ip_locale



in un file di testo (forward.sh), dargli i permessi di esecuzione con

sudo chmod a+x forward.sh

dopo di che eseguire DA ROOT questo script e rispondere alle richieste.

PC1:

Se per esempio l'interfaccia con cui ci colleghiamo al Pc2 è eth0 ricordiamoci l'ip inserito prima ($ippc1), digitiamo sul terminale

sudo ifconfig eth0 ippc1
sudo route add default gw ippc2


Dove ovviamente al posto di ippc1 c'è l'indirizzo ip inserito precedentemente e al posto di ippc2 dovete inserire l'ip dato all'interfaccia via cavo del PC2.

Se avete fatto tutto a dovere ora dovrebbe andare!


2) Sia il vostro amico (PC2) che voi (PC1) vi collegate via cavo ad uno switchEd ecco le configurazioni

PC2

Il vostro amico (PC2) si collega ad internet tramite l'interfaccia eth0 (cablata). (è collegato allo stesso switch al quale siete collegati voi). Deve creare un'interfaccia "virtuale" sempre sulla interfaccia fisica eth0, come?

sudo ifconfig eth0:1 10.0.0.2

In questo modo la vostra scheda di rete fisica si "dividerà" virtualmente in due (si può dividere anche in millemila se volete :D), e la eth0 vi permetterà di connettervi ad Internet, mentre la eth0:1 forwarderà la connessione all'altro pc (PC1)

Adesso è il momento di eseguire lo script di prima (qui il codice da copiare e incollare)

in questo caso interfaccia_pubblica sarà eth0 e interfaccia_locale eth0:1

PC1
Come prima :)

Se per esempio l'interfaccia con cui ci colleghiamo al Pc2 è eth0 ricordiamoci l'ip inserito prima ($ippc1), digitiamo sul terminale

sudo ifconfig eth0 ippc1
sudo route add default gw ippc2


Dove ovviamente al posto di ippc1 c'è l'indirizzo ip inserito precedentemente e al posto di ippc2 dovete inserire l'ip dato all'interfaccia via cavo del PC2.

Se avete fatto tutto a dovere ora dovrebbe andare!



Lo so che non è chiarissima la guida, se avete bisogno non esitate a contattarmi o commentare quest'articolo!


P.s. Grazie a Nicoletta per i fantastici disegni :D

0 commenti: