Inutile dire che on-line ci sono occhi e orecchie ovunque. Una VPN (virtual provate network) vi aiuta a navigare su Internet in modo più sicuro ed anonimo, facendo passare il vostro traffico attraverso un server fidato che non è il vostro reale punto di origine. In pratica darete l’illusione di essere in un posto differente da quello da cui in realtà vi collegherete e tutti i vostri dati saranno adeguatamente cifrati.
Utilizzare una VPN “fatta in casa” vi darà inoltre l’indubbio vantaggio di poter accedere in modo sicuro ai files ed ai media che sono sui vostri computer o nei vostri NAS, esattamente come se foste seduti sul divano del salotto o davanti alla vostra scrivania di lavoro: spesso infatti una VPN rappresenta una valida alternativa ai servizi cloud più costosi.
Ultimo vantaggio è che usando una VPN su un dispositivo mobile, è possibile sfruttare servizi e siti che in alcuni casi sono esclusivamente permessi agli utenti desktop.
E’ facile trovare offerte di VPN già pronte per l’uso, ognuna con piani di costo e livelli di sicurezza differenti. Ma con circa 40 euro (il costo di un Raspberry Pi) potrete costruirvi una propria VPN con un server (piccolo ed a basso consumo) presso casa vostra.
C’è da fare un pochino di fatica davanti al terminare shell: ma provate a seguire questa guida passo-passo e nel giro di 30 minuti avrete la vostra VPN personale!
Ingredienti
- 1 x Raspberry Pi 2 o l’ultima versione 3
- 1 x 8GB micro SD card
- 1 x SD card reader
- 1 x 5 volt mini USB power supply (va bene un carica batterie da cellulare)
- 1 x HDMI monitor (la vostra TV o il vostro monitor consueto)
- 1 x USB keyboard
- 1 x Ethernet network cable (almeno Cat5e o se volete usare la rete Gigabit Cat6)
Ovviamente do per scontato che abbiate un computer, un accesso ad internet attraverso un router, un minimo di conoscenza di reti e linux (molto minimo), un po’ di tempo da spendere e la voglia di sbagliare e ricominciare (come sempre con Linux). Potete comprare tutti gli ingredienti singolarmente oppure in kit. Di seguito qualche link amazon.it da cui partire:
Installiamo il SO sul Raspberry Pi
Inserite l’SD card nel vostro computer. Se state riutilizzando una vecchia SD assicuratevi che sia correttamente formattata per rimuovere tutti i precedenti files. Potete usare lo strumento ufficiale gratuito presso http://sdcard.org.
Scaricate NOOBS (New Out Of the Box Software) dal sito ufficiale di Raspberry Pi (https://www.raspberrypi.org/downloads/). Questo è il modo più semplice per installare un SO sulla vostra scheda.
Aprite il file .zip appena scaricato, selezionate tutti i files e copiateli nella schedina SD.
A questo punto inserite la scheda SD all’interno del Raspberry Pi, collegate monitor, tastiera, cavo di rete (per una VPN è sconsigliato usare il WiFi) ed alimentatore. Accendete.
Se tutti i files sono stati correttamente copiati, vedrete lampeggiare un led verde sulla scheda: dopo alcuni secondi sul monitor vi verrà presentata una lista di sistemi operativi e applicazioni che potrete decidere di installare: usate le frecce e scegliete Raspbian.
Per i più esperti, è disponibile direttamente la ISO di Raspian sul sito ufficiale di raspberry Pi (https://www.raspberrypi.org/downloads/)
Primo contatto
Aspettate che il processo sia finito: vi troverete davanti un ambiente grafico (molto semplice) in stile Linux. Da questo momento potete procedere con monitor e tastiera, oppure potrete lavorare via shell direttamente sul vostro computer: switchare continuamente tra il monitor del PC ed il monitor del Raspberry Pi potrebbe infatti risultare piuttosto frustrante.
Il Raspberry Pi è infatti gestibile da remoto (quindi senza tastiera e monitor) attraverso una connessione SSH. Chi dispone di Mac o Linux ha già disponibile via terminale un client SSH. Chi usa Windows può utilizzare una applicazione chiamata PuTTY (j.mp/DLPutty).
Aprite il terminale e digitate:
ssh pi@raspberrypi
La password di default è: raspberry
Se tutto va bene il prompt diventerà:
pi@raspberrypi:~ $
Nota: in genere il servizio SSH è già attivo sul SO Raspbian. Nel caso non lo fosse dovrebbe abilitarlo esplicitamente. Il modo più semplice è aprire il terminale direttamente sul vostro Rapsberry Pi e digitare:
sudo raspi-config
Quindi navigate su:
Advanced Options > SSH e scegliete Enable (abilita)
Password
cambiamo la password di default con il comando:
passwd
Vi verrà chiesta la vecchia password e due volte la nuova:
pi@raspberrypi:~ $ passwd Cambio password per pi. Password UNIX (corrente): Immettere nuova password UNIX: Reimmettere la nuova password UNIX: passwd: password aggiornata correttamente
Riavviate con:
sudo reboot
Ricollegatevi via SSH.
IP statico sulla rete locale
Ora è necessario che il vostro raspberry abbia sempre lo stesso IP nella vostra rete locale: in genere questo potrebbe cambiare ad ogni riavvio. Digitate il comando:
ifconfig
in modo da capire le attuali impostazioni della rete. Evidenzio le informazioni rilevanti:
pi@raspberrypi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:f6:bf:f3 inet addr:192.168.1.33 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::9172:8a01:efdd:b7d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:91 errors:0 dropped:0 overruns:0 frame:0 TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:9955 (9.7 KiB) TX bytes:14636 (14.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:200 errors:0 dropped:0 overruns:0 frame:0 TX packets:200 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:16656 (16.2 KiB) TX bytes:16656 (16.2 KiB)
Ovviamente voi dovrete usare i valori restituiti dai vostri comandi, sostituendo agli IP dell’esempio, gli IP della vostra rete!!
- inet addr [Current IP Address]: 192.168.1.33
- bcast [Broadcast Range]: 192.168.1.255
- mask [Subnet Mask]: 255.255.255.0
Digitate il comando:
sudo route -n
per recuperare le altre informazioni necessarie:
pi@raspberrypi:~ $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
Qui troverete:
- Gateway: 192.168.1.1
- Destination: 192.168.1.0
Ora è necessario modificare il file di configurazione della rete di Raspbian. Useremo l’editor di testi nano per modificare il file interfaces. Digitate il comando:
sudo nano /etc/network/interfaces
Cercate la riga in cui compare:
iface eth0 inet dhcp
oppure
iface eth0 inet manual
Sostituite la parola dhcp oppure la parola manual con static:
iface eth0 inet static
Aggiungete subito dopo la riga modificata le seguenti nuove righe:
address 192.168.1.33 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
Per salvare premete CTRL+X (insieme) e rispondete SI (Y oppure S). Quando vi verrà chiesto se volete cambiare il nome al file, accettate senza modificare nulla.
NOTA: Un modo semplice per imporre un IP statico al vostro RaspberryPi sarebbe quello di farlo attraverso il vostro router (e quindi evitare i cambiamenti appeni descritti): è infatti possibile associare un IP al MAC Address del dispositivo connesso alla rete in modo che il router assegni sempre lo stesso. In questo caso le impostazioni di rete del vostro raspberry dovranno rimanere su DHCP.
Aggiornamento
Ora è necessario assicurarsi che il SO sia aggiornato all’ultima versione. Digitate:
sudo apt-get update
Aspettate che abbia terminato e poi proseguite con:
sudo apt-get upgrade
Se volete anche assicurarvi di avere l’ultima versione del firmware del Raspberry potete usare questi ulteriori due comandi:
sudo apt-get install rpi-update sudo rpi-update
Una volta finito, siete pronti per creare la vostra VPN.
IP statico su internet
SCORCIATOIA: DDClient impostato sul routerAlcuni router dispongono di un servizio DDClient integrato. In questo modo potete evitare di installare il servizio sul Raspberry Pi, ed utilizzare quello già disponibile. Vi basta accedere alle configurazioni avanzate e cercare DDNS (o qualcosa del genere): inserite le vostre credenziali ed il dominio e sarà direttamente il vostro touter a preoccuparsi di aggiornare l’associazione tra IP dinamico pubblico e dominio. |
Per utilizzare la vostra VPN è necessario che un client autorizzato sia in grado di trovare il vostro server su Internet: per questo vi serve un indirizzo pubblico che non cambi con il tempo. In teoria sarebbe il vostro indirizzo IP pubblico (cioè su internet), che normalmente dovrebbe essere tenuto segreto in quanto identifica la vostra posizione nella rete.
Voi potete scoprire il vostro IP pubblico attraverso alcuni siti come whatismyip.com, oppure whatismyipaddress.com.
Il problema è che (a meno di casi particolari) questo indirizzo cambia di continuo (per esempio ad ogni accensione del vostro router) e sarà necessario utilizzare un servizio DDNS (dynamic domain name system) che vi fornirà un nome di dominio (che non cambia) da usare al posto dell’indirizzo IP pubblico.
Esistono moltissimi servizi gratuiti, come changeip.com oppure dtdns.com: per poterli utilizzare, una volta registrati, dovrete eseguire e configurare uno specifico client sul vostro Raspberry Pi (DDClient) in modo da aggiornare automaticamente il registro del DDNS. In pratica questo client non farà altro che associare il vostro IP (che cambia) con un nome di dominio fisso. Digitate:
sudo apt-get install ddclient
Questo avvierà un wizard per la configurazione del client. Potete anche non preoccuparvi molto di quello che inserirete in questa fase. Molto più comodo, infatti, è editare il file di configurazione:
sudo nano /etc/ddclient.conf
Ogni servizio ha una sua differente configurazione, ma in sostanza vi servono le credenziali del servizio (username e password) ed il nome di dominio scelto: nel nostro caso (è un esempio) scegliamo subdomain.domain.com
. Un esempio con dyndns.it:
protocol=dyndns2 server=dynupdate.no-ip.com login=yourloginid password='yourpassword' use=web,web=checkip.dyndns.com/,web-skip='IP Address' subdomain.domain.com
Se usate changeip.com fate riferimento a queste indicazioni. Salvate (CTRL+X) e uscite (S, ENTER). Quindi avviate il client:
sudo ddclient
Per l’autostart e l’avvio come demone di DDClient editate il files /etc/default/ddclient
:
# Configuration for ddclient scripts # generated from debconf on Mon Jun 29 00:31:50 PDT 2015 # # /etc/default/ddclient # Set to "true" if ddclient should be run every time DHCP client ('dhclient' # from package isc-dhcp-client) updates the systems IP address. run_dhclient="false" # Set to "true" if ddclient should be run every time a new ppp connection is # established. This might be useful, if you are using dial-on-demand. run_ipup="false" # Set to "true" if ddclient should run in daemon mode # If this is changed to true, run_ipup and run_dhclient must be set to false. run_daemon="true" # Set the time interval between the updates of the dynamic DNS name in seconds. # This option only takes effect if the ddclient runs in daemon mode. daemon_interval="1800"
Quindi riavviate il servizio con:
sudo systemctl enable ddclient
Port Forwarding del router
Abbiamo un indirizzo pubblico, ma non è ancora sufficiente. Dobbiamo fare in modo che il router faccia passare il traffico proveniente da internet e destinato al nostro server OpenVPN verso l’indirizzo locale corretto. In genere i router hanno un firewall che blocca tutte le connessioni in ingresso: nello specifico dobbiamo fare in modo che il traffico sulla porta UDP 1194 (che è la porta standard di OpenVPN) sia correttamente fatto passare dalla rete esterna alla rete interna. Si tratta di un regola di port forwarding da inserire nel vostro router.
Di fatto state aprendo un piccolo buco nelle difese della vostra rete domestica per far passare solo un tipo di traffico e solo verso una macchina specifica.
Ogni router è diverso, per cui vo consiglio ricercare su internet le istruzioni adatte per il vostro. Spesso però le impostazioni necessarie si trovano in
Configurazione avanzata > Port forwarding / Port Triggering / Port mapping
Una volta trovato il posto giusto, si imposta una regola con i seguenti parametri:
- Protocollo: UDP
- Porta esterna: 1194
- Porta interna: 1194
- Nome: OpenVPN (se necessario)
Sarà possibile verificare che il tutto sia configurato correttamente più tardi, quando ci occuperemo del server OpenVPN.
NOTA: è possibile cambiare la porta ed il protocollo usatila OpenVPN. La scelta dell’UDP 1194 non è obbligata. Per impostazione predefinita OpenVPN Access Server dispone di 2 daemon OpenVPN in esecuzione. Uno di loro sulla porta UDP 1194 e un altro su TCP 443. Si consiglia di utilizzare la porta UDP perché questo funzioni meglio per un tunnel OpenVPN. Tuttavia, molti luoghi pubblici bloccano tutti i tipi di porte, tranne quelli molto comuni come HTTP, HTTPS, FTP, POP3, e così via. Per questo è disponibile come opzione la TCP 443 che è la porta predefinita per HTTP/SSL.
Se poi volete utilizzare una porta completamente differente potete farlo.
Installiamo OpenVPN
Per realizzare la nostra VPN installeremo ed utilizzeremo il pacchetto OpenVPN. Digitate:
sudo apt-get install openvpn
Seguite le istruzioni: il pacchetto sarà scaricato, decompresso ed installato. Riavviate con:
sudo reboot
Installiamo Easy_RSA
Esattamente come una chiave che apre la porta principale di casa vostra, la VPN ha bisogno di generare le proprie chiavi per assicurarvi che solo i dispositivi autorizzati possano collegarsi ad essa. Al fine di connette in modo sicuro due computer, OpenVPN utilizza infatti chiavi che forniscono lo strato di autenticazione e di sicurezza. E ‘importante proteggere le chiavi che stiamo per generare assicurandoci che nessuno possa accedervi.
E’ necessario installare Easy_RSA, un pacchetto semplice che vi permetterà di usare la cifratura RSA e generare chiavi univoche.
sudo apt-get install easy-rsa
La prossima serie di comandi devono necessariamente essere eseguiti con privilegi di super amministratore (root). Fino a questo momento il vostro prompt recitativa:
pi@raspberrypi: ~ $
Digitando sudo
prima di un comando, voi dite al sistema operativo di eseguirlo con privilegi di amministratore, nella cartella root
. Dovendo digitare moti comandi, per evitare di scrivere in continuazione sudo + comando
, digitiamo una volta per tutte:
sudo -s
Il prompt cambierà definitivamente in:
root@raspberrypi
Ora dovete creare una cartella che sia in grado di ospitare i vostri certificati (si tratta di cartelle speciali):
make-cadir /etc/openvpn/easy-rsa
Copiamo in questa cartella i files di EasyRSA che dovranno essere editati: in questo modo avremo a disposizione un backup nel caso qualcosa andasse storto:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
[Correzione effettuata grazie al contributo di Andrea nei Commenti]
In pratica abbiamo copiato tutti i files da cartella easy-rss 2.0 alla nostra nuova cartella. Prossimo passo: spostiamoci di cartella e andiamo a modificare il file di testo che contiene i parametri di base, quali il percorso delle chiavi, la nostra nazione, la provincia, la città, etc.:
cd /etc/openvpn/easy-rsa nano vars
Cercate la riga che inizia con:
export EASY_RSA=
Editatela inserendovi il percorso della cartella che avete creato prima e che conterrà i certificati. Quindi:
export EASY_RSA="/etc/openvpn/easy-rsa"
Ora spostate il cursore un po’ più sotto. Se siete paranoici, potete impostare la dimensione della chiave di cifratura a 2048 bit. Servirà molto tempo per la generazione delle chiavi, e la connessione sarà un po’ più lenta, ma potrete vivere sonni assolutamente tranquilli. Io, con un Raspberry Pi 2, tendo a a lasciarla a 1024.
export KEY_SIZE=1024
Andando ancora più giù, riempite gli ultimi parametri dettando dei nuovi defaults. Queste voci vi faranno risparmiare tempo in fase di creazione delle chiavi, ma sono di fatto ininfluenti per il corretto funzionamento della VPN.
export KEY_COUNTRY=”IT” export KEY_PROVINCE=”Tuscany” export KEY_CITY=”Florence” export KEY_ORG=”mariorossispa” export KEY_EMAIL=”mario@rossi.com” export KEY_OU=”marioufficio”
Ovviamente sostituite i valori tra le virgolette con i vostri parametri. Per salvare premete CTRL+X (insieme) e rispondete SI (S o Y). Quando vi verrà chiesto se volete cambiare il nome al file, accettate senza modificare nulla.
Le chiavi della Certification Authority
Creiamo a questo punto i certificati che la VPN userà per garantire le autorizzazioni ai dispositivi che vorranno connettersi. Aprite la cartella easy-rsa
ed eseguite i seguenti comandi:
cd /etc/openvpn/easy-rsa source ./vars ./clean-all ./build-ca
I comandi rispettivamente servono per:
- posizionarsi nella cartella
easy-rsa
- caricare il documento
vars
editato prima con i valori popolati; - eliminare eventuali precedenti chiavi presenti a sistema;
- costruire la certificate authority con tanto di certificato e chiave privata
Nell’ultimo passo viene scritta la chiave privata nel file ca.key
, mentre un certificato nel file ca.crt
. Vi verranno chieste una serie di informazioni che però dovreste avere già popolato nel file vars.
Le chiavi del server
Dare un nome al server VPN è come dare un nome ad un proprio figlio: non si cambia e non si può scordare. Digitate:
./build-key-server ServerName
ATTENZIONE! Anche in questo caso rispondete alle domande che vi vengono poste scegliendo eventualmente di lasciare i valori di default (esattamente come nel caso precedente in cui vi chiedevano la Nazione, il Nome, etc). Fate però attenzione a due cose importanti:
- Common Name: deve essere uguale al
ServerName
che avete scelto; - Challenge password: deve essere lasciata blank (vuota);
Firmate il certificato ed eseguite il commit.
Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y
Diffie-Hellman
Lo scambio di chiavi Diffie-Hellman (Diffie-Hellman key exchange) è un protocollo crittografico che consente a due entità di stabilire una chiave condivisa e segreta utilizzando un canale di comunicazione insicuro (pubblico) senza la necessità che le due parti si siano scambiate informazioni o si siano incontrate in precedenza. Digitate:
./build-dh
Se avete scelto una profondità di 2048 bit, potreste dover aspettare circa un’ora. A 1024 bit l’operazione impiega pochi minuti.
Protezione da DoS: HMAC
OpenVPN è in grado di difendervi da attacchi di tipo Denial of Services (o anche operazioni di port Scanning, buffer overflow, etc) generando una chiave statica pre-condivisa HMAC (hash-based message code). Questo significa che il server non proverà nemmeno ad autenticare un accesso se non viene rilevata questa chiave. Per generare la chiave HMAC digitate:
cd /etc/openvpn/easy-rsa openvpn --genkey --secret keys/ta.key
NOTA: nel momento in cui scrivo questa guida ho rilevato un probabile baco in alcuni client (in particolare l’OpenVPN Client per iOS): in pratica con la connessione 3G/LTE non viene inviata al server la chiave HMAC procurando così l’errore:
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) TLS Error: TLS handshake failed
Connettendo il client in WiFi invece la chiave passa e la connessione in VPN viene stabilita senza problemi. Per far funzionare il mio iPhone in LTE ho avuto come unica possibilità quella di non usare la chiave HMAC. Per questo motivo negli esempi in calce dovete commentate le righe relative a questo ulteriore strato di cifratura: in genere fanno riferimento alla meccanismo di autenticazione xls-auth
.
Le chiavi del client
Il vostro server VPN è praticamente configurato. Adesso è necessario creare le chiavi per ciascun dispositivo che debba connettersi. Potreste anche decidere di usare la stessa chiave per tutti i dispositivi, ma avreste il vincolo che non si potranno connettere contemporaneamente. Creiamo, ad esempio, la chiave per il mio smartphone che chiamerò alessandroPhone
(voi ovviamente usate un altro nome).
./build-key-pass alessandroPhone
Anche in questo caso vi verranno chieste alcune cose:
- PEM pass phrase: scegliete una password che dovrete ricordare. Dovrete digitarla due volte!
- Challenge password: deve essere lasciata blank (vuota);
Firmate anche questa volta il certificato ed eseguite il commit.
Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y
Adesso nella cartella:
/etc/openvpn/easy-rsa/keys
troverete 3 files in più: alessandroPhone.crt
, alessandroPhone.csr
, alessandroPhone.key
. Spostatevi quindi nella cartella keys
e digitate:
openssl rsa -in alessandroPhone.key -des3 -out alessandroPhone.3des.key
Quest’ultima istruzione aggiunge un ulteriore strato di cifratura (3DES) in modo da rendere la vita degli hackers un po’ più complicata. Vi verrà chiesta la password scelta precedentemente. Vi verrà chiesto inoltre di generare una ulteriore password (PEM pass phrase): io vi consiglio di usare la solita, in modo da doverne ricordare solo una per certificato.
Ripetete l’operazione qui descritta per ogni utente o dispositivo a cui volete concedere l’accesso alla VPN.
Rivediamo tutte le chiavi ed i certificati
Abbiamo generato un certificato/chiave master per la CA, una chiave Diffie-Hellman, una chiave HMAC, un certificato/chiave per il server ed un certificato/chiave per ogni client (nel nostro esempio solo 1):
Filename | Sono utilizzati da | Scopo | File segreto |
ca.crt | server + all clients | Root CA certificate | NO |
ca.key | key signing machine only | Root CA key | SI |
dh1024.pem | server only | Diffie Hellman parameters | NO |
ServerName.crt | server only | Server Certificate | NO |
ServerName.key | server only | Server Key | SI |
ta.key | server + all clients | HMAC Key | SI |
alessandroPhone.crt | client1 only | Client1 Certificate | NO |
alessandroPhone.key | client1 only | Client1 Key | SI |
Vedremo successivamente come usarli.
Configuriamo il server
Ora abbiamo creato serrature e chiavi. Non ci resta che dire al Raspberry Pi dove mettere le porte. In pratica dobbiamo istruire OpenVPN ad usare le chiavi che abbiamo creato ed il giusto IP con relativa porta. Creiamo un file di configurazione a partire da un foglio bianco:
nano /etc/openvpn/server.conf
Riempitelo con il testo in calce, stando attenti a variare i dettagli come indicato dai commenti preceduti dallo sharp #:
# stessa porta configurata sul router port 1194 # configurazione di base di OpenVPN proto udp dev tun # Chiavi e certificati ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/ServerName.crt key /etc/openvpn/easy-rsa/keys/ServerName.key # This file should be kept secret # Parametri Diffie-Hellman dh /etc/openvpn/easy-rsa/keys/dh1024.pem # # HMAC firewall - commentato per problemi di connessione via 3G/4G # tls-server # tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA # configurazione degli indirizzi della VPN server 10.8.0.0 255.255.255.0 # se un client si disconnette e si riconnette gli si # riassegna lo stesso vecchio IP nella classe 10.8.0.0 ifconfig-pool-persist /etc/openvpn/easy-rsa/ipp.txt # Si aggiunge una rotta tra tutti i client della VPN push "route 10.8.0.0 255.255.255.0" # Si aggiunge una rotta affinché i client raggiungano gli # indirizzi locali nella propria rete dietro il router push "route 192.168.1.0 255.255.255.0" # DNS - Se il vostro router non fa da DNS usate quello di Google 8.8.8.8 push "dhcp-option DNS 192.168.1.1" # L'IP DEL VOSTRO ROUTER # Traffico internet push "redirect-gateway def1" # in questo modo si dirotta tutto il traffico via VPN client-to-client # la connessione tra i client è punto-punto duplicate-cn keepalive 10 120 # cifratura cipher AES-256-CBC auth SHA512 key-direction 0 # compressione comp-lzo # massimo numero di client connessi max-clients 5 user nobody group nogroup persist-key persist-tun # log status /var/log/openvpn-status.log 300 log /var/log/openvpn.log verb 1 mute 20
Cliccate su CTRL+X, uscite (S) e salvate (INVIO). Riavviate il servizio OpenVPN con:
/etc/init.d/openvpn restart
L’esempio del file di configurazione creerà una VPN usando una interfaccia di rete virtuale TUN (per il routing), si metterà in ascolto dei clients sulla porta UDP 1194 e distribuirà indirizzi IP virtuali nella sottorete 10.8.0.0/24.
NOTA: Per testare rapidamente la configurazione è sufficiente lanciare direttamente OpenVPN (assicurandosi prima di aver fermato il demone lanciato dall’init script durante l’installazione):
/etc/init.d/openvpn stop openvpn server.conf
Se non ricevete nessun errore allora la vostra configurazione è corretta, potete interrompere l’esecuzione con Ctrl+C.
Autostart di OpenVPN Server
Editate il file /etc/default/openvpn
con:
nano /etc/default/openvpn
Eliminate il commento nella riga che contiene AUTOSTART e inserite il nome del vostro file di configurazione del server (appena creato):
... AUTOSTART="server" ...
Riavviate con reboot
.
Configuriamo i Client
Abbiamo creato le chiavi per i client (computer e dispositivi vari) che vogliamo che si connettano alla nostra VPN. Dobbiamo però ancora dire ai nostri client dove trovare il server, come connettersi o quali chiavi usare. Ci sono due possibili impostazioni per i vostri client, che determinano il modo in cui il traffico viene gestito dalla VPN.
- FULL TUNNEL: si indirizza tutto il traffico Internet attraverso il server OpenVPN. Se ad esempio volete connettervi attraverso un hotspot pubblico ma in sicurezza. Per esempio se voleste consultare la vostra home banking, i server della vostra banca vi vedranno arrivare esattamente come se vi foste collegati da casa.Utilizzare la configurazione full tunnel è una buona idea se si desidera proteggere il 100% di tutto il traffico in uscita dal dispositivo client. Questo è il metodo utilizzato normalmente per le connessioni di utenti in paesi in cui l’accesso alla rete è fortemente regolamentata (ad esempio la Cina) o per le connessioni attraverso accessi pubblici controllati.Facendo passare tutto il traffico in modo sicuro attraverso la propria rete domestica, si ottiene lo stesso livello di sicurezza e di fiducia della propria rete domestica. Lo svantaggio qui può essere prestazionale, dal momento che la larghezza di banda è limitata dalle possibilità del vostro Raspberry Pi e dal vostro contratto internet.
- SPLIT TUNNEL: si indirizza attraverso il server VPN solo il traffico Internet che ha bisogno di raggiungere l’interno della vostra rete domestica. Ad esempio se voleste accedere al vostro NAS per vedere un film da remoto. Il nome split deriva dal fatto che il traffico ha un percorso diverso a seconda se si stia andando alla rete domestica oppure no. Tutto il traffico Internet viene quindi veicolato attraverso il gateway predefinito della vostra connessione.Usare la configurazione split tunnel è una buona idea se non siete preoccupati dal livello generale di sicurezza della vostra connessione e volete semplicemente accedere alla vostra rete di casa, magari in mobilità con il vostro smartphone o dalla rete del vostro ufficio.
Bisogna scegliere adesso? No! Si può effettivamente avere entrambi i tipi di tunnel impostati sui vostri client, e scegliere ogni volta quale utilizzare per la vostra connessione.
Personalmente per il 90% del tempo utilizzo lo split tunnel perché sono al lavoro o a casa di una persona di cui mi fido (e della cui rete mi fido): in questo modo evito di sovraccaricare la mia rete di casa. Uso invece il full tunnel quando ho bisogno di far passare informazioni sensibili, come dati finanziati o sanitari o password in chiaro. O quando devo far credere a qualcuno di essere davanti alla mia scrivania mentre uso il mio PC desktop.
Full tunnel configuration
Se avete creato differenti chiavi per ciascuno dei client (o come nel nostro caso avete differenti modalità di tunneling), potrebbe essere un po’ noioso generare un file di configurazione per ogni differente client partendo da zero. Per fortuna Eric Jodoin dell’istituto SANS ci ha preparato un comodo script.
Prima di tutto creeremo un file intermedio (diciamo di appoggio) contenente i parametri fondamentali per una connessione “full tunnel” e lo salveremo sul Raspberry Pi. Useremo questo file successivamente per produrre il file di configurazione vero e proprio da installare sul client. Apriamo l’editor di testo e creiamo quindi un file nuovo client-full.txt
:
nano /etc/openvpn/openvpn/easy-rsa/keys/client-full.txt
Incolliamo il seguente testo:
# Full Tunnel OpenVPN client configuration client dev tun proto udp resolv-retry infinite key-direction 1 nobind persist-key persist-tun # cambiate 'subdomain.domain.com' con il vostro dominio remote subdomain.domain.com 1194 # cifratura cipher AES-256-CBC auth SHA512 # HMAC firewall - commentato per problemi con connessioni 3G/4G # tls-client # tls-cipher DHE-RSA-AES256-SHA # compressione comp-lzo # logging setup mute-replay-warnings verb 3 mute 20
Ovviamente modificate il testo con i vostri parametri come indicato nei commenti. Salvate ed uscite.
Ora creiamo il nostro primo file di profilo: un file di configurazione che contiene tutti parametri, ma anche le chiavi ed i certificati necessari a far collegare un client al Server VPN. Creiamo lo script di Eric Jodoin che ci faciliterà il compito:
nano /etc/openvpn/easy-rsa/keys/MakeOVPN.sh
Si tratta di un altro file vuoto (nuovo) che dovete riempire così (attenzione, io l’ho un po’ modificato!):
#!/bin/bash # Default Variable Declarations DEFAULT="client-full.txt" FILEEXT="-full.ovpn" CRT=".crt" KEY=".3des.key" CA="ca.crt" TA="ta.key" #Ask for a Client name echo "Please enter an existing Client Name:" read NAME #1st Verify that client's Public Key Exists if [ ! -f $NAME$CRT ]; then echo "[ERROR]: Client Public Key Certificate not found: $NAME$CRT" exit fi echo "Client's cert found: $NAME$CR" #Then, verify that there is a private key for that client if [ ! -f $NAME$KEY ]; then echo "[ERROR]: Client 3des Private Key not found: $NAME$KEY" exit fi echo "Client's Private Key found: $NAME$KEY" #Confirm the CA public key exists if [ ! -f $CA ]; then echo "[ERROR]: CA Public Key not found: $CA" exit fi echo "CA public Key found: $CA" #Confirm the tls-auth ta key file exists if [ ! -f $TA ]; then echo "[ERROR]: tls-auth Key not found: $TA" exit fi echo "tls-auth Private Key found: $TA" #Ready to make a new .opvn file - Start by populating with the default file cat $DEFAULT > $NAME$FILEEXT #Now, append the CA Public Cert echo "<ca>" >> $NAME$FILEEXT cat $CA >> $NAME$FILEEXT echo "</ca>" >> $NAME$FILEEXT #Next append the client Public Cert echo "<cert>" >> $NAME$FILEEXT cat $NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $NAME$FILEEXT echo "</cert>" >> $NAME$FILEEXT #Then, append the client Private Key echo "<key>" >> $NAME$FILEEXT cat $NAME$KEY >> $NAME$FILEEXT echo "</key>" >> $NAME$FILEEXT #Finally, append the TA Private Key echo "<tls-auth>" >> $NAME$FILEEXT cat $TA >> $NAME$FILEEXT echo "</tls-auth>" >> $NAME$FILEEXT echo "Done! $NAME$FILEEXT Successfully Created." #Script written by Eric Jodoin \ No newline at end of file
Questo file altro non fa che creare un file .opvn
(cioè il profilo di configurazione del client) concatenando i parametri di default che avete impostato nel file client-full.txt
, i certificati e le chiavi.
Salvate ed uscite (CTRL+ X, S, INVIO). Diamo a questo script permessi di esecuzione, e lanciamolo:
cd /etc/openvpn/easy-rsa/keys/ chmod 700 MakeOVPN.sh ./MakeOVPN.sh
Vi chiederà di inserire il nome del client per generare il profilo: nel mio caso ho inserito alessandroPhone
. Verificate che tutto sia andato a buon fine:
Client's cert found: alessandroPhone Client's Private Key found: alessandroPhone.3des.key CA public Key found: ca.crt tls-auth Private Key found: ta.key Done! alessandroPhone-full.ovpn Successfully Created.
Il vostro primo files di configurazione è pronto: lo trovate nella cartella /etc/openvpn/easy-rsa/keys/
con il nome alessandroPhone-full.ovpn
NOTA: Se non volete usare la chiave HMAC commentate il blocco tls-auth
che contiene questa chiave.
Qui un esempio (ho eliminato alcune delle righe dei certificati HMAC):
# Full Tunnel OpenVPN client configuration client dev tun proto udp resolv-retry infinite key-direction 1 nobind persist-key persist-tun # cambiate 'subdomain.domain.com' con il vostro dominio remote subdomain.domain.com 1194 # cifratura cipher AES-256-CBC auth SHA512 # HMAC firewall - commentato per problemi con connessioni 3G/4G # tls-client # tls-cipher DHE-RSA-AES256-SHA # compressione comp-lzo # logging setup mute-replay-warnings verb 3 mute 20 <ca> -----BEGIN CERTIFICATE----- MIID+DCCA2GgAwIBAgIJAMv1emtK+VXvMA0GCSqGSIb3DQEBCwUAMIGvMQswCQYD (continua...) ZuCwFXJzTTZVWRnu+LVr8c43W99ykTztPFjsmfOmuOjr6r9YzdpH93ZsRQ1jc1mp RnFvwN9kwSRy9Hjc -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- MIIEXTCCA8agAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBrzELMAkGA1UEBhMCSVQx (continua...) Y7bTFalm/ofiuukgtQh/IMLlXL4ED4iRr3t3yZyJh1K6qzOk7dkBYM54YjQrODyR QgdPNSHMNPH831ewY0CuQgA= -----END CERTIFICATE----- </cert> <key> -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,460E06B24D314908 wOUkGtH56oGuNug61+BGdotGIO5FumgJL9ya7WNwVoKBxqZzZT5XAHbaxadrp8GT (continua...) bFjVWw7qdllVvkgl1kruDIj0CREO9abiVMTdkIyGMv7D7MQGJEXzeg== -----END RSA PRIVATE KEY----- </key> # <tls-auth> # # # # 2048 bit OpenVPN static key # # # -----BEGIN OpenVPN Static key V1----- # 6604ce27b58cbbc714d004b08b7275bf (continua...) # ebe07851d1fabb6c372a6c0dc316dd00 # -----END OpenVPN Static key V1----- # </tls-auth>
Split tunnel configuration
Ripetiamo più o meno le stesse operazioni fatte per la connessione full: cambia ovviamente qualcosa nella configurazione.
Qui di seguito, creeremo un file intermedio (diciamo di appoggio) contenente i parametri fondamentali per una connessione “split tunnel” e lo salveremo sul Raspberry Pi. Useremo questo file successivamente per produrre il file di configurazione vero e proprio da installare sul client. Apriamo l’editor di testo e creiamo un file nuovo:
nano /etc/openvpn/openvpn/easy-rsa/keys/client-split.txt
Incolliamo il seguente testo:
# Split Tunnel OpenVPN client configuration client dev tun proto udp resolv-retry infinite key-direction 1 nobind persist-key persist-tun # cambiate 'subdomain.domain.com' con il vostro dominio remote subdomain.domain.com 1194 # si ignora l'impostazione delle rotte del server route-nopull # si sovrascrive il gateway route 0.0.0.0 192.0.0.0 net_gateway route 64.0.0.0 192.0.0.0 net_gateway route 128.0.0.0 192.0.0.0 net_gateway route 192.0.0.0 192.0.0.0 net_gateway # si aprono le rotte verso la sola propria rete locale route 192.168.1.0 255.255.255.0 # cifratura cipher AES-256-CBC auth SHA512 # HMAC firewall - commentato per problemi con connessioni 3G/4G # tls-client # tls-cipher DHE-RSA-AES256-SHA # compressione comp-lzo # logging setup mute-replay-warnings verb 3 mute 20
Ovviamente modificate il testo cone i vostri parametri come indicato di commenti: la vostra porta e l’indirizzamento della vostra rete locale. Salvate ed uscite.
Ora creiamo il nostro secondo profilo: un file di configurazione che contiene tutti parametri, ma anche le chiavi ed i certificati necessari a far collegare un client al Server VPN (esattamente come nell’esempio precedente). Vi basterà modificare lo script usato precedentemente. Aprite l’editor:
nano MakeOVPN.sh
e cambiate le prima righe secondo l’esempio in basso:
#!/bin/bash # Default Variable Declarations DEFAULT="client-split.txt" FILEEXT="-split.ovpn" CRT=".crt" KEY=".3des.key" CA="ca.crt" TA="ta.key"
Salvate ed uscite. Eseguite lo script modificato:
./MakeOVPN.sh
Vi chiederà anche in questo caso di inserire il nome del client per generare il profilo: nel mio caso ho inserito nuovamente alessandroPhone. Verificate che tutto sia andato a buon fine:
Client's cert found: alessandroPhone Client's Private Key found: alessandroPhone.3des.key CA public Key found: ca.crt tls-auth Private Key found: ta.key Done! alessandroPhone-split.ovpn Successfully Created.
Adesso avete completato anche il secondo vostro file di configurazione: lo trovate nella cartella /etc/openvpn/easy-rsa/keys/
con il nome alessandroPhone-split.ovpn
.
Stesse considerazioni del precedente caso: si tratta sempre della concatenazione del file di configurazione .txt
e di tutte le chiavi generate utili al client. Analoghe considerazioni per la chiave HMAC e per il commento del blocco tls-auth
che contiene questa chiave.
Esportiamo le chiavi sul dispositivo
Nel mio caso sono stati generati due files alessandroPhone-full.ovpn
e alessandroPhone-split.opvn
. Ora dobbiamo prelevarli dal RaspberryPi. Prima però è necessario garantirsi permessi di lettura/scrittura nella varie cartelle e sui files di profilo. Digitate:
chmod 777 /etc/openvpn chmod 777 /etc/openvpn/easy-rsa chmod 777 /etc/openvpn/easy-rsa/keys chmod 777 /etc/openvpn/easy-rsa/keys/alessandroPhone-full.ovpn chmod 777 /etc/openvpn/easy-rsa/keys/alessandroPhone-split.ovpn
Questo vi permetterà di copiare i files dal RaspberryPi. Su Windows, usando PuTTY, è possibile usare un modulo chiamato WinSCP. Io, sul MAC, preferisco la riga di comando: in questo caso aprite un’altra finestra del terminale sul vostro PC (non usate la sessione sul RaspberryPi) e digitate:
scp pi@raspberrypi:/etc/openvpn/easy-rsa/keys/alessandroPhone-full.ovpn alessandroPhone-full.ovpn scp pi@raspberrypi:/etc/openvpn/easy-rsa/keys/alessandroPhone-split.ovpn alessandroPhone-split.ovpn
Adesso dovreste avere i files .ovpn
sul vostro PC. Tornate a lavorare sul terminale del vostro Raspberry perché è opportuno rimettere tutto come prima, revocando permessi che potrebbero diventare una vulnerabilità. Usate perciò il comando:
chmod 600 /etc/openvpn chmod 600 /etc/openvpn/easy-rsa chmod 600 /etc/openvpn/easy-rsa/keys chmod 600 /etc/openvpn/easy-rsa/keys/alessandroPhone-full.ovpn chmod 600 /etc/openvpn/easy-rsa/keys/alessandroPhone-split.ovpn
IP Forwarding
A questo punto un’ultima configurazione per essere sicuri che il vostro Raspberry Pi possa conoscere come gestire l’inoltro del traffico internet attraverso la nuova rete. Digitate:
nano /etc/sysctl.conf
Trovate il seguente commento:
# Uncomment the next line to enable packet forwarding for IPv4
Rimuovete dalla riga successiva il simbolo di inizio commento (#). Che quindi diventa:
net.ipv4.ip_forward=1
Cliccate su CTRL+X, uscite e salvate. Per applicare i cambiamenti descritti nel file appena modificato digitate:
sysctl -p
Firewall
Raspbian ha un firewall integrato (IPTable) che bloccherà tutte le connessioni in ingresso: è quindi necessario permettere al traffico autorizzato di attraversare OpenVPN. Creiamo perciò un file che verrà eseguito ogni volta all’avvio del sistema:
nano /etc/firewall-openvpn-rules.sh
Dentro questo file scriviamo:
#!/bin/sh iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
In pratica abbiamo aggiunto una policy al firewall. Cliccate su CTRL+X, uscite e salvate.
Questo file non ha ancora i diritti per essere eseguito. Dovete perciò cambiargli sia i permessi che la proprietà (che imposterete a root). Per fare questo:
chmod 700 /etc/firewall-openvpn-rules.sh
chown root /etc/firewall-openvpn-rules.sh
Questo script fornisce ad OpenVPN il permesso di fare breccia attraverso il firewall. Abbiamo bisogno ora di aggiungerlo al codice che imposta le interfacce di rete in modo che possa essere avviato al boot. Digitate:
nano /etc/network/interfaces
Trovate la riga che dice:
iface eth0 inet static
Aggiungiamo alla fine della sezione (dopo tutti gli indirizzi IP che abbiamo aggiunto prima) una nuova riga. La nuova riga deve iniziare con un [TAB] in modo da indentarla:
pre-up /etc/firewall-openvpn-rules.sh
Cliccate su CTRL+X, uscite e salvate. Potete riavviare il vostro Raspberry Pi con
reboot
Installate OpenVPN sul vostro dispositivo
A questo punto siete pronti ad scaricare ed installare l’applicazione OpenVPN Connect sul vostro dispositivo iPhone o Android: importate i profili (files .ovpn
), inserite la password relativa al 3des.key
e connettetevi.
Per iOS ecco qualche consiglio per la parametrizzazione dell’app (Settings app → OpenVPN):
- Raise keyboard: Off
- Connect via: Any network
- Reconnect on wakeup: On
- Protocol: Adaptive
- Compression: Full
- Connection timeout: 30 seconds
- Network state detection: Active
- Force AES-CBC ciphersuites: On
- Google DNS fallback: off
- Enable Proxy: secondo la vostra rete
Ciao, ottimo articolo!
Ho una precisazione: per l’IP statico con l’avvento di systemd in raspbian jessie non va toccato più ‘/etc/network/interfaces’ (lasciatelo come di default) ma ‘/etc/dhcpcd.conf’ con una sintassi lievemente diversa., anche se per ora funziona ancora, ma non é é detto che in futuro vada cosí.
Ci sono casi in cui può creare casini però tipo doppi IP assegnati se si tocca il primo e non il secondo.
Anche cose come cron sono ancora nel sistema, ma gestite da systemd, che ha un suo sistema per lanciare i processi , con i Timer > https://wiki.archlinux.org/index.php/Systemd/Timers
Qui una discussione sul forum ufficiale:
https://www.raspberrypi.org/forums/viewtopic.php?t=134085&p=893772
Mi chiedevo poi, se tutta la tua roba deve passare per la vpn a casa tua, la banda in upload é sempre scarsa, quanto inficia il tutto poi?
[EDIT: non avevo letto tutto, l’ottimo Alessandro ha coperto questa parte con la configurazione split/full tunnel].
Mi rimane la domanda: se della sicurezza me ne frega poco o se comunque mi collego tramite password e chiavi ssh , invece di fare lo split tunnel , se mi faccio un port forward sul router non va bene lo stesso?
Come ultima cosa volevo consigliare http://www.duckdns.org/ come servizio di dynamic dns: ben fatto, nerd abbastanza, funziona e loro simpaticissimi : ho comprato il pacchetto pro a 10$ solo per come hanno scritto la documentazione!
Grazie!! Ottimo suggerimento.
Per il port forwarding solo due considerazioni:
– se ti colleghi da rete pubblica (o reti aziendali) non tutte le porte sono aperte. Quindi non è detto che riusciresti ad accedere a tutti i servizi di casa. Una VPN sulla 443 è infatti un classico: da lì poi uno ha a disposizione la rete di casa completamente aperta. L’alternativa è usare “porte basse”, ma poi ci si espone ad attacchi di vario genere.
– alcuni router sono troppo deboli rispetto a port scan e attacchi DOS.
– guardando il log del mio router mi sono accordo che i tentativi di intrusione (volontari o meno non so) sono frequenti: meno porte lascio aperte, più dormo tranquillo.
Ciao, tutto bene per la configurazione e la connessione tramite smartphone.
Mentre se vado a provare con il clinet da pc, mi va in errore e nei log mi copmare:
–win-sys env is default from OpenVPN v2.3. This entry will now be ignored. Please remove this entry from your configuration file.
Options error: Unrecognized option or missing parameter(s) in [CMD-LINE]:1: http-proxy-fallback (2.3_AS6)
Use –help for more information.
ho usato un clinet openvpn versione 2.0.7.100 ed importato il profilo con il file .opvn
Riuscite a darmi una mano?
grazie
Errori di quel tipo, su windows, possono essere dovuti a problemi di formattazione e di caratteri sporchi ascii, dovresti controllare se il file di configurazione su windows si legge bene e, in caso non ci siano problemi “visivi”, prova solamente ad andare in fondo al file aggiungere uno spazio, togliere lo spazio aggiunto e salvare nuovamente il file, a volte si risolve anche così
Ciao ottimo articolo!
Nel caso in cui si utilizzi come firewall UFW, mi sapresti dire qual è la riga corrispondente al comando da aggiungere in iptable?
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Grazie
Ciao
Ciao Fabrizio,
Nel caso di firewall UFW la riga:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
viene gestita editando il file /etc/ufw/before.rules, ne caso quindi precedente dovrà avere una sinstassi di questo tipo il file (puoi variare sulla base di precedenti o diverse regole già impostate):
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# setup routing
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
Mi raccomando sia la prima riga “*nat” che l’ultimo commit, poi puoi salvare il file e quindi tramite:
systemctl restart ufw
riavviare il firewall
ciao, avrei un piccolo problema.
dopo aver installato easy-rsa e aver creato la cartella (make-cadir /etc/openvpn/easy-rsa), quando vado a copiare con il comando “cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa” mi dice che il file non è esistente.
andando a verificare ho scoperto che non c’è la directory easy-rsa in examples, di conseguenza manca anche 2.0.
cosa può essere successo?
ho seguito ogni passaggio alla lettera
grazie in anticipo e complimenti ad Alessandro per la guida(fino a questo punto)
ciao, anche io ho avuto il tuo stesso problema con il comando per copiare i file nella cartella, mi sono bloccato in quel punto, poi ho controllato ed effettivamente in quella cartella ci sono solo 3 file, ma non /easy-rsa / 2.0
qualcuno saprebbe indicarmi il comando giusto per continuare la configurazione della VPN, grazie
Ciao,
nelle versioni successive di easy-rsa è stato cambiato il path dove vengono posizionati i file dopo l’installazione.
Il comando indicato nella guida, sostanzialmente quello che a voi va in errore:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
è da sostituirsi con:
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
poi potete proseguire seguendo la guida passo passo
Evidentemente c’è una mancanza nella guida. Nei prossimi giorni proverò a ripetere gli step ed a completarla! Abbiate pazienza!
Ciao Alessandro stesso errore
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa” mi dice che il file non è esistente.
hai avuto modo di verificarne il motico?
Grazie per quest’eccellente lavoro
Ciao Frabrizio,
Il comando cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
è da sostituirsi con:
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
c’è stato un cambio di path nelle versioni successive di easy-rsa
Buongiorno a tutti! ho seguito ogni passo della presente guida, mi sono creato i miei file di configurazione, ho inserito i dns di google tuttavia non riesco ad accedere ai siti web attraverso la vpn.
Non avendo molta dimestichezza con le tabelle di routing vin chiedo se notate qualcosa che non va.Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.254 0.0.0.0 UG 202 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 * 255.255.255.255 UH 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
ps: ho verificato anche il firewall e sembra che funzioni correttamente.
A me non funziona. Dal client la vpn non si aggancia.
Neanche a me…… Quando bisogna configurare il Firewall non trovo Iface.
Buon giorno.
Ho seguito la guida usando come server una macchina con Ubuntu 16.04.3 LTS e tutto funziona regolarmente. da iPhone (client) riesco ad instradare il traffico uscendo dal router di casa e al tempo stesso riesco a vedere le machine dietro NAT, come se fossi sulla medesima subnet.
Unico neo, la connessione è lentissima. Vorrei sfuttarlo per vedere SkyGo dallo smartphone, quando vado all’estero, ma in questa maniera risulta inutilizzabile.
Ho provato ad usare anche traffico TCP anzichè UDP, ma il risultato è identico.
Qualche consiglio?
Ciao! Vorrei chiedervi una cosa che non mi è chiara, scusate per la probabile stupidità. Una volta che ho impostato la vpn come faccio a connettermi ad un server che gira sulla mia rete privata? Grazie
Con la nuova versione di raspbian le configurazioni di rete presente nel file /etc/network/interfaces non sono più presenti poiché, da quanto ho letto, si utilizza un nuovo file chiamato dhcpcd, ora la mia domanda è dove si inserisce la riga di comando che permette di fare breccia nel firewall?
Grazie
Ciao, io ho creato la vpn e funziona tutto bene, tranne per il fatto che se provo ad andare su internet (con la vpn e full tunnel), non funziona.. e se utilizzo i nomi di rete dei dispositivi collegati al modem di casa, non li risolve nei loro rispettivi IP, per cui devo scrivere direttamente l’IP (per esempio 192.168.178.67).. forse questi due problemi sono collegati, qualcuno saprebbe aiutarmi?