Creare una vpn con fastweb: VPN Tunnell SSH
In questi giorni ho constatato di persona che fastweb con contratto residenziale blocca le connessioni VPN che partono da pc client dietro fastweb e vanno verso server con ip pubblici in rete. Nel mio caso specifico ho provato a collegare il mio pc casalingo ad un server (il mio vps su internet) con ip pubblico, succede questo: il collegamento vpn viene stabilito, i due pc si vedono e si pingano ma ogni tipo di trasmissione viene filtrata e bloccata.
Tutto quello che non è protocollo icmp (Ping) viene bloccato da fastweb.
Ovviamente il mio pc di casa che stà dietro nat è il client che si collega al server con ip pubblico, con fastweb è impossibile fare il contrario perchè se si è dietro fastweb non si ha un ip pubblico.
Questa cosa ovviamente non succede se si utilizza un contratto fastweb di tipo commerciale, ho provato di persona con una connessione con contratto commerciale fila tutto liscio. A quanto pare fastweb blocca le vpn solo con i contratti residenziali. E’ veramente una politica assurda, quando compro una connessione ad internet avrò pure il diritto di fare quello che voglio o no? devo essere io a decidere come consumare la mia banda e non ci devono essere vincoli assurdi come quello di impedire il collegamento vpn fra più macchine…
Ero quasi sul punto di cambiare gestore di adsl poi ho indagato un po in rete ed ho trovato la soluzione. Attualmente è possibile creare ed utilizzare connessioni vpn con fastweb utilizzando un tunnel SSH.
Se la connessione vpn passa attraverso un tunnel SSH fastweb non è in grado di bloccarla e di filtrarla.
La VPN con il tunnelling SSH è abbastanza semplice da realizzare, ecco le istruzioni per creare una vpn con tunnell SSH con Linux debian lenny e openvpn.
Questo esempio è molto semplice e non prevede particolari protocolli di sicurezza perchè tanto passa tutto via ssh.
Partiamo con la macchina server, ovviamente questo pc deve avere un ip pubblico in modo che il client che sta dietro rete fastweb posso contattarlo senza problemi.
Ecco i comandi da dare:
1 – Abilitare il forwarding.
echo 1 > /proc/sys/net/ipv4/ip_forward
2 – Installare il sopftware OpenVPN.
apt-get install openvpn
3 – Generazione della chiave che deve essere copiata poi sul pc client.
cd /etc/openvpn
openvpn –genkey –secret zmo.key
4 – Creazione del file di configurazione server.conf
vi /etc/openvpn/server.conf
Ecco il contenuto del file server.conf:
proto tcp-server
dev tap
lport 5000
ifconfig 10.0.0.1 255.255.255.0
secret /etc/openvpn/zmo.key
persist-tun
ping 15
5 – Dopo aver salvato riavviate il servizio Openvpn
/etc/init.d/openvpn restart
6 – Assicuratevi di aver installato il servizio ssh server, se non è installato digitate:
apt-get install ssh openssh-server
Ora il server rimmarà in ascolto sulla porta 5000 all’interfaccia di rete virtuale verrò assegnato l’indirizzo ip 10.0.0.1
Le ultime due righe persist-tun e ping 15 servono per tenere in piedi la connessione anche se non passa traffico.
Ovviamente tutto questo giro è possibile solo se il vostro kernel permette il caricamento del modulo tun, di default il kernel dell’installazione standard di debian lenny lo supporta.
Passiamo ora alla macchina client.
1 – Abilitare il forwarding.
echo 1 > /proc/sys/net/ipv4/ip_forward
2 – Installare il sopftware OpenVPN.
apt-get install openvpn
3 – Installare ssh e anche openssh server
apt-get install ssh openssh-server
4 – Copiare il file zmo.key generato sulla macchina server sul pc client nel percorso /etc/openvpn
Per fare questa operazione potete utilizzare Winscp che tramite ssh vi permette di esplorare e copiare tutti i file presenti nel server.
5 – Creare il file di configurazione client.conf
vi /etc/openvpn/client.conf
Ecco il contenuto del file client.conf:
remote localhost
proto tcp-client
dev tap
rport 5000
ifconfig 10.0.0.2 255.255.255.0
secret /etc/openvpn/zmo.key
persist-tun
ping 15
Come potete vedere il contenuto è analogo a quello del server, viene utilizzata la porta 5000 e all’interfaccia di rete viene assegnato l’indirizzo 10.0.0.2.
Da notare invece che l’indirizzo del server remoto è localhost, questo perchè verrà utilizzato il tunnell ssh.
6 – Dopo aver salvato stoppiamo il servizio openvpn
/etc/init.d/openvpn stop
7 – Creiamo il tunnell ssh con il seguente comando:
ssh -L5000:ip_server_remoto:5000 root@ip_server_remoto
Dove ovviamente al posto di ip_server_remoto dovete inserire l’ip del server che avete configurato prima.
Questo comando aprirà una connessione ssh e dopo aver inserito la password vi rimanderà direttamente alla consolle della macchina server. E’importante che lasciate questa connessione attiva, nel momento in cui viene chiusa cade anche il tunnell ssh.
8 – Quindi aprite un’altra shell o un’altra connessione remota sulla macchina e lanciate il servizio openvpn sul client.
/etc/init.d/openvpn start
A questo punto se tutto è andato per il verso giusto la vpn sarà attiva e funzionante e due macchine remote, una client dietro rete fastweb con contratto residenziale ed una server con ip pubblico potranno comunicare e trasferire dati senza nessun problema.
Se volete eliminare il problema di tenere aperta la consolle dove è stato digitato il comando per il tunnell ssh potete provare con queste opzioni -f -N
Esempio:
ssh -f -N -L5000:ip_server_remoto:5000 root@ip_server_remoto
con questo comando il servizio và in background dopo aver chiesto la password.
Ulteriori informazioni ed esempi sul suo utilizzo li potete trovare a questo link:
http://www.compago.it/index.php/manuali/34-linux/166-connessioni-tunnel-con-ssh
Questo link invece mi è stato particolarmente utile per l’installazione di openvpn su debian lenny,trovate anche info dettagliate per utilizzare connessioni con configurazione SSL/TLS:
http://guide.debianizzati.org/index.php/Openvpn
Se avete precisazioni o dubbi o suggerimenti di ogni tipo fatelo tramite i commenti,l’argomento vpn è sempre molto interessante perchè permette di realizzare reti virtuali anche con macchine dislocate in parti diverse del globo.
Vota l’articolo



(6 votes, average: 4.50 out of 5)
Loading...





















September 29th, 2009 at 3:26 pm
Ciao,
io ho lo stesso identico problema (Fastweb contratto residenziale e utilizzo VPN per connettermi a ufficio), ma sono un umile utilizzatore di windows XP. Inoltre, la VPN ogni tanto funziona, ogni tanto no (più spesso no, che si) senza una apparente logica…
Esiste un modo di fare quello che hai fatto con linux anche con windows XP? Grazie.
Massimo
August 22nd, 2009 at 3:45 pm
Grazie per questa guida: molto utile.
Avendo però il server remoto sotto un router, che mi forwarda solo la porta 22 e la 5000, ho dovuto modificare:
ssh -L5000:ip_server_remoto:5000 root@ip_server_remoto
in:
ssh -L5000:localhost:5000 root@ip_server_remoto
ed ora funziona tutto perfettamente.