In questa guida vedremo come aprire le porte per accettare connessioni in ingresso su qualsiasi connessione a internet sfruttando una connessione VPN e un server VPN di cui abbiamo l'accesso.

Come aprire porte qualsiasi connessione usando VPN

INtroduzione

La questione delle porte aperte e delle connessioni in ingresso è stata ampiamente trattata nell'articolo sottostante e ne faccio un breve riassunto. Per comprenderlo, sono necessarie delle basilari conoscenze di rete.

¬Ľ Leggi: Connessione Internet con indirizzo IP privato (doppio NAT). Significato, differenze IP pubblico/privato, spiegazione problemi

Alcuni programmi, che fungono da server o servizi di sistema, hanno bisogno di accettare connessioni in ingresso tramite alcune porte TCP o UDP aperte nel modem router ADSL. Tra questi programmi ci sono applicazioni come Emule e BitTorrent, servizi di sistema come i Web Server o FTP Server, e le funzionalità multiplayer dei giochi.

Solitamente per aprire una porta a favore di un computer della rete occorre configurare correttamente il modem router ADSL di proprietà, oppure ricorrere ad una tecnologia automatica come l'UPnP o il NAT-PMP.

¬Ľ Leggi: Come aprire le porte sul router/modem: la guida definitiva al port forwarding (inoltro delle porte)

Il problema delle porte APERTE

A volte è impossibile aprire delle porte sulla rete in cui ci si trova oppure è impossibile inoltrare le connessioni in ingresso ad un determinato computer della rete.

Una lista esemplificativa dei casi problematici è la seguente:

  • Il tuo ISP (Internet service provider) non assegna IP pubblici ai suoi clienti o ti fornisce una connessione dietro ad un NAT (Network Address Translation).
  • Stai usando una connessione di rete mobile 4G, una rete Wi-Fi pubblica (o quella del vicino di casa...) o una connessione satellitare.
  • Non hai modo di configurare il modem router ADSL perch√® non hai accesso all'apparato oppure questo non ha la funzione che ti occorre.
  • Stai usando la rete della scuola o dell'ufficio e a causa di un firewall di rete non √® affatto semplice aprire una porta o inoltrare correttamente le connessioni in ingresso.

La soluzione: una VPN con l'inoltro delle connessioni

Grazie ad una connessione VPN e un server VPN con l'inoltro delle porte attivo è possibile risolvere questo problema e scavalcare quindi le problematiche della connessione. Ovviamente il server VPN non deve avere a sua volta queste problematiche: in questa guida ipotizzeremo di disporre di un server in affitto che abbia un IP pubblico dedicato, quindi non tratteremo il caso di server VPN "in casa".

Ti segnalo, per completezza, che l'unica soluzione alternativa a questa che io conosca è l'utilizzo di un tunnel SSH, il quale tuttavia è un ripiego e si può fare solo per le connessioni TCP (no UDP).

¬Ľ Leggi: Come fare un tunnel SSH da Windows 10

Esistono centinaia di servizi commerciali che vendono servizi VPN, ma non tutti danno la possibilità di aprire le porte, pertanto se intendi seguire questa via, informati attentamente prima di acquistare. In questa guida non tratteremo questa possibilità.

In questa guida vedremo invece come si procede avendo accesso diretto al server VPN: è il caso di server VPN personali che utilizzano il sistema operativo GNU/Linux, amministati da terminale. In particolare faremo riferimento alla guide che ho pubblicato in precedenza:

¬Ľ Leggi: Come creare un server VPN L2TP/IPSec in 5 minuti

¬Ľ Leggi: Come creare un server VPN OpenVPN in 5 minuti

Procedura AUTOMATICA PER L2TP/IPSEC

Ocorre collegare il client al server VPN e quindi impartire questi comandi, sul server, da terminale:

wget https://raw.githubusercontent.com/Loginbug/setup-ipsec-vpn/master/extras/open_port.sh

sudo sh open_port.sh

Lo script automatico chiederà all'utente di inserire la porta desiderata, (ad es. la 80 per un web server), la tipologia di porta (tcp oppure udp) e l'indirizzo di rete vpn del client (192.168.42.10).

Procedura AUTOMATICA PER OPENVPN

Ocorre collegare il client al server VPN e quindi impartire questi comandi, sul server, da terminale:

wget https://raw.githubusercontent.com/Loginbug/openvpn-install/master/open_port.sh

sudo sh open_port.sh

Lo script automatico chiederà all'utente di inserire la porta desiderata, (ad es. la 80 per un web server), la tipologia di porta (tcp oppure udp) e l'indirizzo di rete vpn del client (10.8.0.2).

Verifica della porta aperta

La procedura è immediata, al termine della quale la porta sarà aperta. E' possibile testare le porte tcp aperte andando su questo sito, mentre le porte udp non si possono in genere testare online. L'applicazione che richiede la porta aperta deve essere in esecuzione al momento del test.

Come aprire porte qualsiasi connessione usando VPN - open_port_check_tool

APPROFONDIMENTO

Gli script proposti si basano essenzialmente su due sole regole di iptables, una di PREROUTING e una di POSTROUTING:

iptables -t nat -A PREROUTING -i $def_iface -p $TYPE --dport $PORT -j DNAT --to-dest $CLIENT_IP:$PORT

iptables -t nat -A POSTROUTING -d $CLIENT_IP -p $TYPE --dport $PORT -j SNAT --to-source $SERVER_IP

Questo è il significato delle variabili usate dai comandi:

  • Ogni client della rete VPN ha un suo indirizzo di rete VPN interno: √® il CLIENT_IP. Non confondere questo indirizzo con altri indirizzi di rete LAN che non hanno nulla a che vedere con la VPN.
  • Il server VPN ha un suo indirizzo di rete VPN interno: √® il SERVER_IP. Non confondere questo indirizzo con altri indirizzi di rete internet.
  • Le porte possono essere di tue tipi: TCP e UDP. La tipologia di porta √® il TYPE.
  • Il server ha un'interfaccia di rete internet ed √® usata di default per connessione a internet, pu√≤ avere molti nomi diversi e pu√≤ essere individuata automaticamente, √® la def_iface.

Conclusioni

Sicuramente questa procedura potrebbe apparire complicata se fatta da un inesperto, tuttavia l'utilizzo di una connessione VPN e un server VPN personale sono una delle poche vie percorribili per risolvere definitivamente il problema delle porte aperte e delle connessioni in ingresso.