Collegarsi da remoto al proprio ufficio è ora più che mai una necessità, soprattutto per quei lavori che richiedono l’accesso continuo alle risorse di rete aziendali (disco di rete, altri PC, cartelle e file condivisi, stampanti, scanner, etc…).
Questa guida vi aiuterà a configurare una VPN, ossia un tunnel sicuro tra l’ufficio e il vostro PC di casa, in modo tale da poter lavorare come se il vostro PC fosse fisicamente collegato alla rete aziendale. Più nello specifico, potrete fare tutto esattamente come se vi trovaste li: vedere e accedere a file condivisi in rete, lanciare stampe, accedere a dischi di rete e backup, accedere a servizi locali dell’ufficio (es. programmi speciali che girano solo quando connessi alla rete LAN dell’ufficio).
Si ma ho già sentito parlare di VPN, e anche di TeamViewer…
Si parla molto spesso di VPN ma sempre in una accezione lievemente diversa (e a mio avviso non del tutto corretta), ossia quella di servizio di terze parti (e quindi a pagamento, come NordVPN, ExpressVPN, ProtonVPN etc..) che offre la possibilità di “apparire in rete” da una locazione diversa da quella in cui ci si trova; pur trattandosi della medesima tecnologia, non è questa la VPN che intendiamo configurare in questo articolo. Le VPN a pagamento sono senz’altro delle VPN a tutti gli effetti, ma sono utili in altri scenari di utilizzo, ad esempio: 1) per accedere a contenuti bloccati nella nostra regione oppure 2) per accedere ad internet da reti non sicure come ad esempio bar, caffè, aeroporti.
Analogamente il software TeamViewer, strumento che permette il controllo di un computer remoto come se vi fossimo davanti, non risolve esattamente lo stesso problema. TeamViewer è più simile ad un desktop remoto, ossia permette di controllare un PC prescelto dell’ufficio (che deve essere sempre acceso ovviamente) che comparirà in finestra sul vostro PC di casa; tutte le operazioni andranno eseguite dentro quella finestra, senza possibilità di “uscire fuori” (se non con scomodi passaggi avanti e indietro di “trasferimento file”). Ad esempio, non sarà possibile aprire un file CSV e vederlo sull’Excel del vostro PC, ma solo sull’Excel del computer controllato, ossia “in finestra”. Inoltre TeamViewer è a pagamento, e le sessioni rilevate come utilizzi aziendali non durano più di 10 minuti.
Soluzione VPN privata
La VPN che intendiamo realizzare in questo articolo è una estensione privata della propria rete aziendale, eseguita senza l’utilizzo di servizi terzi (perciò totalmente gratuita) e soprattutto sicura (i dati viaggiano dal nostro ufficio al nostro PC remoto, senza passare da server esterni). Il tunnel che andiamo a configurare connetterà il vostro PC di casa all’ufficio ed il risultato netto sarà quello di lavorare dal PC come se questo fosse collegato in WiFi (o cavo) direttamente alla rete dell’ufficio.
A chi si rivolge questa guida?
Elenco alcune tipologie:
- Singoli professionisti che vogliono lavorare da casa con il proprio portatile come se fossero collegati fisicamente in ufficio, accedere ai dischi di rete, stampanti, scanner, cartelle condivise.
- Piccole aziende che vogliono far lavorare i propri impiegati e collaboratori da casa, garantendo l’accesso agli stessi identici servizi, di qualsiasi natura (es. software interni aziendali, software vincolati a funzionare solo entro i confini aziendali, dischi di rete condivisi, etc…)
Configurazione della VPN
Iniziamo quindi a vedere la procedura nel dettaglio.
- Prerequisiti
- Download del software
- Configurazione del server
- Configurazione del router
- Impostazione avvio automatico della parte server
- Configurazione del client (PC remoto)
Prerequisiti
Quali sono i prerequisiti per mettere in funzione la nostra VPN? Sostanzialmente solo uno, ossia avere un server aziendale sempre acceso e collegato in rete. Per server si intende anche un banalissimo PC, che deve essere lasciato acceso, l’importante è che sia collegato in rete LAN. Chi non avesse un PC dedicato può anche utilizzare una postazione PC e “proclamarla” server. Ovvio che per attivare un server VPN nella propria rete locale, la soluzione più semplice consiste nel dotarsi di un router che già supporti tale funzionalità. Ma questa guida si rivolge alla maggioranza degli utenti che non hanno tali router e vogliono comunque configurare un collegamento VPN professionale.
Download del software
Utilizzeremo OpenVPN, soluzione gratuita e open source. Il software andrà installato sia sul server che sul PC client che vuole connettersi da remoto.
Andiamo quindi sul server e scarichiamo OpenVPN dal seguente indirizzo: https://openvpn.net/community-download
Scegliamo l’installer adatto al nostro sistema operativo. Ad esempio, per Windows7 selezioniamo il penultimo link, per Windows10 l’ultimo link.
Avviamo quindi l’installer:
Una volta avviata la procedura di installazione, assicuriamoci che tutte le voci siamo selezionate:
- OpenVPN Service
- TAP Virtual Ethernet Adapter
- OpenVPN GUI
- EasyRSA 2 Certificate Management Scripts
- Advanced
Attendiamo il termine dell’installazione.
Configurazione del server
Passiamo adesso a configurare il software che abbiamo appena installato. Andiamo in Pannello di controllo -> rete e internet -> connessioni di rete. Dovrebbe esserci una nuova scheda virtuale, chiamata TAP-Windows Adapter V9
Rinominiamola in ServerVPN
A questo punto avviamo la console dei comandi CMD in modalità amministratore: andiamo in “menu start” e facciamo click destro sopra “prompt dei comandi”, poi selezioniamo “esegui come amministratore”
Si dovrebbe ora aprire il prompt dei comandi:
Portiamoci ora all’interno della cartella OpenVPN. Per far ciò digitiamo nell’ordine i seguenti comandi:
cd ..
cd ..
cd “Program Files”
cd “OpenVPN”
cd “easy-rsa”
Adesso lanciamo i seguenti due comandi:
init-config.bat
copy vars.bat.sample vars.bat
Apriamo ora esplora risorse e portiamoci nella stessa cartella: C:\Program files\OpenVPN\easy-rsa
Ritorniamo nel prompt dei comandi e digitiamo ora i seguenti comandi:
vars
clean-all
Lanciamo ora il comando per la generazione dei parametri DH (parametri Diffie-Hellman)
build-dh
L’operazione potrebbe richiedere qualche secondo (o minuto, per macchine meno potenti)
Terminato il processo di generazione delle chiavi, apriamo ora esplora risorse e portiamoci nella cartella: C:\Program files\OpenVPN\easy-rsa\keys
Confermiamo che il file dh2048.pem è stato creato correttamente:
Adesso ritorniamo al prompt dei comandi e lanciamo il comando per la generazione dei certificati:
build-ca
Il comando ci chiederà alcuni dati aziendali quali “nome azienda”, “indirizzo” etc.. possiamo lasciare questi campi vuoti semplicemente premendo invio
Di nuovo, apriamo ora esplora risorse e portiamoci nella cartella: C:\Program files\OpenVPN\easy-rsa\keys
Confermiamo che i file ca.key e ca.crt sono stati creati correttamente:
Ritorniamo ora al prompt dei comandi e lanciamo il seguente comando:
build-key-server ServerVPN
Anche in questo caso ci verranno chieste alcune informazioni che possiamo evitare di inserire semplicemente premendo invio alla richiesta. All’ultima domanda “sign the certificate? [y/n]” occorre invece rispondere affermativamente con premendo “y”.
Tornando in esplora risorse, sempre nella stessa cartella, dovremmo adesso vedere tre nuovi file: ServerVPN.crt, ServerVPN csr e ServerVPN.key
Adesso generiamo le chiavi per il client:
build-key ClientVPN
Anche in questo caso, il comando ci chiederà alcuni dati che possiamo lasciare vuoti premendo invio. Alla richiesta del “common name” inseriamo però “ClientVPN”
In esplora risorse dovremmo adesso vedere tre nuovi file: ClientVPN.crt, ClientVPN.csr e ClientVPN.key
Lanciamo ora il comando finale che genererà le chiavi statiche per la connessione TLS (il protocollo sottostante alla nostra VPN):
openvpn –genkey –secret keys/ta.key
E convalidiamo come al solito la buona riuscita del comando; dovremmo vedere un nuovo file ta.key:
A questo punto non ci rimane che creare il file di configurazione del server (Server.ovpn). In questo file vengono indicati numerosi parametri tra i quali la porta del server e un range di indirizzi IP che il server VPN assegnerà ai client una volta connessi. Ovviamente queste informazioni dipendono dalla propria configurazione di rete. Per comodità ho incluso un file di configurazione di esempio che specifica:
porta = 12345
indirizzi di rete disponibili per i client = da 192.168.13 a 192.168.1.19
indirizzo IP del bridge = 192.168.1.12
network mask = 255.255.255.0
Scarica file configurazione server
Questo file va posizionato in C:\Program files\OpenVPN\config
Avviamo ora VPN server cliccando su OpenVPN GUI (sul desktop) e poi cliccando con il tasto destro sull’icona accanto all’orologio in basso a destra e poi selezionando “connect”.
L’icona dovrebbe diventare verde, ad indicare che VPN server è attivo e in ascolto
Dobbiamo ora collegare assieme l’interfaccia virtuale TAP ServerVPN e l’interfaccia di rete Ethernet che il nostro server utilizza. L’operazione si chiama in gergo “bridging”. Il risultato finale e una terza interfaccia, unione delle due, che sarà quella effettivamente utilizzata dal nostro server (il computer stesso) e che risponderà sia del normale traffico di rete in LAN che del traffico in VPN.
A tal fine apriamo il pannello di controllo -> rete e internet -> connessioni di rete. Selezioniamo entrambe le interfacce “Local Area Connection” e “ServerVPN”. Clicchiamo con il tasto destro e selezioniamo “bridge connection”.
Verrà creata una nuova interfaccia di rete “Network bridge”.
Questa interfaccia è quella adesso realmente utilizzata dal server; Windows disabilita automaticamente le altre due. Ovviamente questa interfaccia non eredita le configurazioni TCP/IP che avevano le due precedenti (indirizzo IP statico o DHCP, DNS primario, gateway, subnet mask etc..), occorre quindi reimpostare questi parametri. Molto probabilmente vorremo reimpostare gli stessi identici parametri della interfaccia originale “Local Area Connection”:
Configurazione del router
Il server VPN è pronto ma dobbiamo esporre il servizio all’esterno della nostra rete locale, in modo tale che client remoti abbiamo la possibilità di connettersi. A tal fine occorre aprire in NAT la porta locale che abbiamo utilizzato per il server VPN (nel nostro esempio, porta 12345). Entriamo quindi nel nostro router ed apriamo la porta 12345 verso l’esterno, possiamo anche utilizzare una porta differente (es. 8888)
Impostazione avvio automatico della parte server
A questo punto vogliamo avviare il server VPN automaticamente all’avvio di Windows, per poter garantire l’accesso anche in caso di riavvio della macchina. Questo passaggio è facoltativo ma altamente consigliato.
A tal fine apriamo il prompt dei comandi in modo amministratore e lanciamo il seguente comando:
sc create vpnserver start= auto binPath= “C:\Program Files\OpenVPN\bin\openvpnserv.exe”
Il comando dovrebbe rispondere con:
[SC] CreateService SUCCESS
Se vogliamo confermare la presenza del nuovo servizio ci basterà andare nella lista dei servizi (menu start -> esegui -> “services.msc”):
Configurazione del client (PC remoto)
Finalmente procediamo a configurare un client PC. Questa procedura andrà ripetuta per tutti i computer che vogliamo connettere in VPN con il nostro server.
Per prima cosa installiamo OpenVPN esattamente come abbiamo visto nel caso del server.
Successivamente, andiamo nel server e copiamo i seguenti file:
- ca.crt
- ClientVPN.crt
- ClientVPN.csr
- ClientVPN.key
- ta.key
Questi file andranno copiati nel PC client, all’interno della cartella C:\Program Files\OpenVPN\config
All’interno della medesima cartella andrà posizionato il file di configurazione del client (Client.ovpn). Analogamente a quanto visto per la parte server, questo file contiene le informazioni necessarie al client per connettersi in VPN, una fra tutte l’indirizzo IP esterno della rete dell’ufficio e la porta (vedi sezione precedente).
Per comodità ho creato un file di configurazione di esempio, scaricabile qui
Infine, testiamo la connessione avviando OpenVPN sul PC client (icona OpenVPN GUI sul desktop). L’icona in basso a destra dovrebbe diventare verde e un popup ci segnalerà l’indirizzo IP che abbiamo ricevuto dal server. L’indirizzo IP sarà uno di quelli previsti nel range che abbiamo specificato nel file di configurazione del server. In questo caso abbiamo ottenuto il primo disponibile, ossia 192.168.1.13
Una volta connesso, il PC client opererà in tutto e per tutto come se si trovasse in ufficio: potrà avviare stampe, vedere cartelle condivise, collegarsi a server FTP e accedere a servizi interni dell’ufficio.
Ottima guida.
Grazie mille!!!
Bella guida!
Ho solo un problema: quando riavvio il server, il bridge di rete non si connette più e mostra il messaggio “Rete non identificata”.
Devo quindi eliminare il bridge, attendere che il “TAP-Windows Adapter V9” si connetta e ricreare il bridge.
Poi funziona correttamente fino al successivo riavvio.
Inoltre vorrei chiedere se nel file di configurazione del server utilizzassi solo “server-bridge” senza gli indirizzi IP, ai client non dovrebbe essere assegnato un IP dal DHCP del router? Non avviene.
Non succede con Windows7. Credo sia un qualche problema di Windows10 ?. Per l’altra domanda, ho sempre adottato la soluzione di default di openvpn, dove riservi uno spazio indirizzi e lasci che il server vpn assegni gli ip ai client attingendo da questo spazio.
Ciao Gianluca e grazie, quando arrivo ad uno dei primi passi:
Adesso lanciamo i seguenti due comandi:
init-config.bat
copy vars.bat.sample vars.bat
la risposta che mi appare è questa:
C:\Program Files\OpenVPN\easy-rsa>init-config.bat
“init-config.bat” non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.
e non riesco più a procedere, puoi aiutarmi?
Grazie, ciao.
Con la versione 2.5 di OpenVPN hanno cambiato diverse cose.
Scarica ed utilizza la versione 2.4.10 dal sito.
https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.10-I601-Win10.exe
Ho provato ad installare questa versione ma ora non mi appare più la nuova scheda virtuale
Ottima guida! Una delle poche che portano al corretto funzionamento della VPN.
Avrei due domande.
1) Come mai è stato utilizzato il protocllo TCP, mentre ho visto che solitamente viene utilizzato UDP?
2) Com’è possibile creare un file di configurazione .ovpn che includa i certificati, in modo da poterlo importare sui client con la relativa funzione di OpenVPN, invece di copiare tutti i file nella cartella di configurazione?
Grazie.
1) Perchè TCP? Provo a rispondere, è una semplificazione enorme ma in linea generale è questo il motivo:
Quando crei una VPN puoi scegliere se utilizzare un tunnel TCP o UDP. UDP è meno affidabile ma ha anche meno overhead, mentre TCP è più affidabile (garantisce la ricezione e l’ordine dei pacchetti ma utilizza più banda. Di norma, se utilizzi una VPN per fare streaming video è preferibile UDP perchè conta più la banda che l’affidabilità al 100%. Mentre se utilizzi la VPN per navigare, scaricare dati o altro è preferibile TCP, l’affidabilità al 100% conta più della banda.
2) File di configurazione che include i certificati:
10 secondi con Google 🙂
https://serverfault.com/questions/607601/include-certificates-in-ovpn-file/607602
In sostanza devi scrivere [inline] al posto del percorso del certificato .crt e più sotto nel file inserire il certificato in formato BASE64. Più facile a farsi che a dirsi, vedi il link dove troverai un esempio.
Avrei dovuto specificarlo, ma ciò che chiedevo è se esista uno script o altri metodi per creare il file di configurazione automaticamente o semi-automaticamente, da utilizzare nel caso di creazione massiva degli utenti.
Ciao Gianluca, prima di tutto grazie della tua guida. Ho questo problema, non riesco a collegarmi tramite client al server . L’icona rimane gialla. Ho un router Tim H388X dove ho configurato nella parte del firewall il port forwarding della porta che configurato nella configurazione sia del server che del client.Il server sembra ok (icona verde), Ho fatto il bridge tra la scheda di rete e la scheda del OpenVpn, ma non sembra funzionare. Suggerimenti?
Ciao Pietro, sinceramente non saprei, potrebbe essere di tutto. L’unica cosa che ti consiglio è vedere nei log testuali dove si blocca. Un’altra cosa, prova prima a collegarti in vpn da dentro la rete lan, escludendo quindi tutto il discorso firewall e port forwarding. Quando hai il collegamento funzionante, porti il client fuori rete locale