OpenVPN è una VPN SSL (Secure Socket Layer) open source ricca di funzionalità. La VPN consente di connettere in modo sicuro reti non affidabili come la rete WIFI in hotel, aeroporti o centri commerciali. La VPN consente inoltre una connessione sicura alla rete aziendale per accedere alle risorse. I tunnel sono protetti mediante autenticazione SSL/TLS, certificati, credenziali.
In questo tutorial, ti mostrerò come configurare una VPN utilizzando OpenVPN su Ubuntu 20.04 .
Prerequisiti
Useremo due server Ubuntu in esecuzione sulla versione 20.04:
- Un server Autorità di certificazione (CA) che convaliderà la richiesta e firmerà i certificati dei clienti.
- L'OpenVPN server su cui installeremo la VPN.
Configura server CA
Si consiglia di mantenere un server autonomo che funga da CA (autorità di certificazione). Ciò è dovuto a motivi di sicurezza. Procediamo con la configurazione del server CA.
Per prima cosa assicurati che il sistema sia aggiornato. Eseguire quanto segue il comando:
$ sudo apt update
Sarà necessario creare un utente non root per le configurazioni del server dell'autorità di certificazione.
$ sudo adduser malain
Ora dai all'utente i privilegi sudo:
$ sudo usermod -aG sudo malain
Ora disconnetti e quindi accedi di nuovo con l'utente non root.
Installa EasyRSA sul server CA
Easy-rsa è un'utilità CLI per creare e gestire una CA PKI. Easy-RSA verrà utilizzato dal server CA per generare una chiave privata e un certificato radice pubblico che verranno utilizzati per firmare le richieste dei client e dei server che si baseranno sulla nostra CA.
Per installare easy-rsa, scarica lo strumento di gestione PKI da github usando wget:
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Quindi decomprimi il file tgz:
$ tar xvf EasyRSA-3.0.8.tgz
Per limitare l'accesso al solo utente, utilizzare:
$ chmod 700 EasyRSA-3.0.8
Ora sposta EasyRSA su opt
directory
$ sudo mv EasyRSA-3.0.8 /opt/
Stiamo utilizzando EasyRSA 3.0.8 versione per questa configurazione.
Crea CA utilizzando EasyRSA
Per prima cosa, devi creare un file chiamato vars
per memorizzare le informazioni sull'organizzazione. Per questo, possiamo utilizzare il file di esempio disponibile nella directory EasyRSA-3.0.8.
Per elencare i file nella directory EasyRSA, utilizzare:
$ cd EasyRSA-3.0.8/ && ls -l
Uscita:
-rw-rw-r-- 1 malain malain 1305 Sep 9 2020 COPYING.md
-rw-rw-r-- 1 malain malain 5056 Sep 9 2020 ChangeLog
-rw-rw-r-- 1 malain malain 2049 Sep 9 2020 README.md
-rw-rw-r-- 1 malain malain 3335 Sep 9 2020 README.quickstart.md
drwxrwxr-x 2 malain malain 4096 Sep 9 2020 doc
-rwxrwxr-x 1 malain malain 76946 Sep 9 2020 easyrsa
-rw-rw-r-- 1 malain malain 18093 Sep 9 2020 gpl-2.0.txt
-rw-rw-r-- 1 malain malain 1036 Sep 9 2020 mktemp.txt
-rw-rw-r-- 1 malain malain 4616 Sep 9 2020 openssl-easyrsa.cnf
-rw-rw-r-- 1 malain malain 8925 Sep 9 2020 vars.example
drwxrwxr-x 2 malain malain 4096 Mar 28 14:14 x509-types
Crea una copia del file vars.example come vars:
$ cp vars.example vars
Ora apri il file vars e aggiungi le informazioni sull'organizzazione alla fine del file:
$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Littoral"
set_var EASYRSA_REQ_CITY "Douala"
set_var EASYRSA_REQ_ORG "OPEN-SHARE"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Ora inizializza la nostra PKI sul nostro server CA che creerà la cartella pki.
$ ./easyrsa init-pki
Ora possiamo generare il pubblico root e coppia di chiavi private per il nostro CA. Durante il processo, normalmente ti verrà chiesto di inserire una passphrase per la coppia di chiavi ogni volta che dovrai firmare o revocare un certificato. Nel nostro caso, useremo il comando in modo che non ci venga richiesta una passphrase. Ti verrà anche chiesto di indicare un Nome comune (CN) ma lasceremo quello predefinito premendo il tasto Invio.
$ ./easyrsa build-ca nopass
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
read EC key
writing EC key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/EasyRSA-3.0.8/pki/ca.crt
Questo creerà un certificato radice denominato ca.crt nella directory pki e la pchiave rivettata ca.key nella directory pki/private.
$ ls -l pki/
total 52
-rw------- 1 malain malain 749 Mar 28 14:30 ca.crt
drwx------ 2 malain malain 4096 Mar 28 14:29 certs_by_serial
drwx------ 2 malain malain 4096 Mar 28 14:29 ecparams
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt.attr
drwx------ 2 malain malain 4096 Mar 28 14:29 issued
-rw------- 1 malain malain 4616 Mar 28 14:24 openssl-easyrsa.cnf
drwx------ 2 malain malain 4096 Mar 28 14:30 private
drwx------ 5 malain malain 4096 Mar 28 14:29 renewed
drwx------ 2 malain malain 4096 Mar 28 14:24 reqs
drwx------ 5 malain malain 4096 Mar 28 14:29 revoked
-rw------- 1 malain malain 4575 Mar 28 14:24 safessl-easyrsa.cnf
-rw------- 1 malain malain 3 Mar 28 14:29 serial
$ ls -l pki/private/
total 4
-rw------- 1 malain malain 288 Mar 28 14:29 ca.key
Con questo, il nostro server CA è pronto.
Installa e configura il server Openvpn
Passiamo al secondo server per installare e configurare openvpn. Dovrai anche creare un utente non root in questo server e dargli il sudo
privilegi.
Per installare openvpn su Ubuntu, esegui i seguenti comandi:
$ sudo apt update
$ sudo apt install openvpn
Sul server openvpn, easyrsa verrà utilizzato per generare una richiesta di certificato che verrà verificata e firmata dal CA Server. Segui gli stessi passaggi che abbiamo seguito nell'ultima sezione per installare Easyrsa.
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Ora decomprimi il file tgz scaricato:
$ tar xvf EasyRSA-3.0.8.tgz
Limitare l'accesso al solo utente:
$ chmod 700 EasyRSA-3.0.8
Sposta EasyRSA-3.0.8 su opt
directory:
$ sudo mv EasyRSA-3.0.8 /opt/
Crea una PKI
Ora dobbiamo creare PKI che aiuterà a richiedere e gestire i certificati TLS per i client e gli altri server che si collegheranno alla nostra VPN.
Creiamo un file vars usando il file di esempio già disponibile:
$ cp vars.example vars
Ora modifica il file vars aggiungendo le seguenti righe alla fine del file:
$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Per creare la cartella PKI sul server openvpn, esegui easyrsa
file di script:
$ ./easyrsa init-pki
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /opt/EasyRSA-3.0.8/pki
Crea la richiesta del certificato del server e la chiave privata
Ora genereremo una chiave privata e richiesta di certificato sul server OpenVPN. Quindi trasferiremo il file di richiesta del certificato al server CA da firmare per creare il certificato richiesto
Essendo nella stessa cartella, possiamo generare la richiesta con il nopass
opzione. Il comando seguente crea un file di chiave privata denominato openvpn-server.key e un file di richiesta di certificato denominato openvpn-server.req.
$ ./easyrsa gen-req openvpn-server nopass
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Generating an EC private key
writing new private key to '/opt/EasyRSA-3.0.8/pki/easy-rsa-4737.CGhQHN/tmp.UGQ9wi'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [openvpn-server]:
Keypair and certificate request completed. Your files are:
req: /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req
key: /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key
Ora, copia il file della chiave del server denominato openvpn-server.key nella directory denominata /etc/openvpn/server.
$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server
Quindi copia il file di richiesta del certificato sul server CA :
$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req [email protected]:/tmp
Sul server CA, passare alla directory easyrsa,
$ cd /opt/EasyRSA-3.0.8/
Per importare la richiesta , esegui il comando seguente:
$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: openvpn-server
You may now use this name to perform signing operations on this request.
Ora firma la richiesta. Poiché stiamo firmando la richiesta del server, dovremmo usare la direttiva server
prima del nome comune del nostro server openvpn. Se fosse una richiesta di un cliente, dovremmo usare la direttiva client
invece.
Per firmare la richiesta :
$ ./easyrsa sign-req server openvpn-server
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject=
commonName = openvpn-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-4100.IbygpP/tmp.hJY2T5
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'openvpn-server'
Certificate is to be certified until Jul 1 19:50:36 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/openvpn-server.crt
Ora la richiesta di certificato del server OpenVPN è stata firmata dal server CA, dobbiamo trasferire la richiesta firmata e il certificato pubblico al server OpenVPN.
$ scp pki/{ca.crt,issued/openvpn-server.crt} [email protected]:/tmp
$ sudo cp /tmp/{ca.crt,openvpn-server.crt} /etc/openvpn/server
Ora genereremo la chiave precondivisa tls-crypt per garantire che il nostro server OpenVPN sia in grado di far fronte a traffico non autenticato, scansioni delle porte e alcuni attacchi che possono utilizzare molte delle risorse del server.
$ ./easyrsa gen-dh
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ....................................+.......................... ............................................................... ............................................................... ...........................................+.......+.......+... .....+.......................................................... ...............................++*++*++*++* DH parameters of size 2048 created at /opt/EasyRSA-3.0.8/pki/dh.pem
$ openvpn --genkey --secret ta.key
Ora copia la chiave e i file pem nella directory /etc/openvpn/server:
$ sudo cp ta.key pki/dh.pem /etc/openvpn/server
Genera un certificato client e una coppia di chiavi
Dovremo creare una directory per conservare i certificati e le chiavi dei client. Assicurati di concedere l'autorizzazione all'utente non root.
$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs
Genera la richiesta del certificato client:
$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating an EC private key writing new private key to '/opt/EasyRSA-3.0.8/pki/easy-rsa-6961.m7fBMu/tmp.dkqaZI' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [my-pc]: Keypair and certificate request completed. Your files are: req: /opt/EasyRSA-3.0.8/pki/reqs/my-pc.req key: /opt/EasyRSA-3.0.8/pki/private/my-pc.key
Ora copia la chiave client nella directory client-configs:
$ cp pki/private/my-pc.key /opt/client-configs/keys/
Copia il file di richiesta del certificato client sul server CA:
$ scp pki/reqs/my-pc.req [email protected]:/tmp
Sul server CA, importa la CSR:
$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa import-req /tmp/my-pc.req my-pc
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: my-pc
You may now use this name to perform signing operations on this request.
Ora dovremmo firmare la richiesta per il cliente, digitare:
$ ./easyrsa sign-req client my-pc
Uscita:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a client certificate for 825 days:
subject=
commonName = my-pc
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-5511.IwDcbS/tmp.doUbCv
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'my-pc'
Certificate is to be certified until Jul 1 21:33:52 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/my-pc.crt
Copia il certificato client sul server openvpn:
$ scp pki/issued/my-pc.crt [email protected]:/tmp
Ora sul server openvpn, dobbiamo copiare tutti i file client nella directory client che abbiamo creato in precedenza.
$ sudo cp /tmp/my-pc.crt /opt/client-configs/keys/
$ sudo cp /etc/openvpn/server/ca.crt /opt/client-configs/keys/
$ cp /opt/EasyRSA-3.0.8/ta.key /opt/client-configs/keys/
Assicurati che l'utente non root abbia i permessi sui file.
$ sudo chown franck:franck /opt/client-configs/keys/*
Configura il servizio VPN
Dovremmo prima fare una copia del modello da usare
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Quindi decomprimi il file
$ sudo gzip -d /etc/openvpn/server/server.conf.gz
E accedi alla cartella
$ cd /etc/openvpn/server
Alcune linee verranno sostituite per corrispondere alla nostra configurazione::
- Le cifre crittografiche verranno impostate su
AES-256-CBC
- L'algoritmo di digest del messaggio HMAC sarà
sha256
- Poiché utilizziamo anche un parametro Diffie-Hellman, lo imposteremo su
dh.pem
- Utilizzeremo l'utente nessuno e il gruppo nogroup per eseguire openvpn senza privilegi una volta avviato
- Invieremo le modifiche al DNS per reindirizzare tutto il traffico attraverso la VPN con i valori
push redirect-gateway def1 bypass-dhcp
,push dhcp-option DNS 208.67.222.222
,push dhcp-option DNS 208.67.220.220
- Manterremo la porta predefinita
1194
- Utilizzeremo
udp
protocollo - dovremmo indicare la chiave
openvpn-server.key
e certificatoopenvpn-server.crt
da utilizzare come credenziale
Quindi il file dovrebbe apparire come di seguito:
$ sudo vim /etc/openvpn/server/server.conf
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
port 1194
proto udp
explicit-exit-notify 1
cert openvpn-server.crt
key openvpn-server.key
Dovresti attivare l'inoltro IP modificando il valore net.ipv4.ip_forward in /etc/sysctl.conf.
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Per rendere effettive le modifiche apportate in /etc/sysctl.conf, eseguire:
$ sudo sysctl -p
net.ipv4.ip_forward = 1
Ora devi consentire a OpenVPN attraverso il tuo firewall abilitando il masquerading. Per farlo, devi identificare il nome della tua interfaccia di rete pubblica:
$ ip route | grep default
default via X.X.X.X dev eth0 proto static
Nel nostro caso è eth0. Ora dovremmo aggiungere le regole di mascheramento nella configurazione del firewall, quindi aggiungeremo la riga seguente nella parte superiore dei file delle regole:
$ sudo vim /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to the public server interface eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
Ora modifichiamo ufw per consentire i pacchetti inoltrati per impostazione predefinita.
$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
Apri la porta openvpn sul firewall:
$ sudo ufw allow '1194/udp'
Per riavviare il servizio ufw, digita:
$ sudo ufw disable && sudo ufw enable
Per abilitare l'avvio del servizio openvpn all'avvio del sistema, digita:
$ sudo systemctl enable openvpn-server@server
Per avviare openvpn, digita:
$ sudo systemctl start openvpn-server@server
Puoi controllare lo stato di openvpn:
$ sudo systemctl status openvpn-server@server
Uscita:
● [email protected] - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-03-28 23:30:57 UTC; 8s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 78132 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 1073)
Memory: 1.0M
CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
└─78132 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Mar 28 23:30:57 localhost systemd[1]: Starting OpenVPN service for server...
Mar 28 23:30:57 localhost systemd[1]: Started OpenVPN service for server.
Per controllare l'interfaccia del tunnel, digita:
$ ip addr show tun0
Uscita:
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::c3d9:85d1:e2a9:6b2c/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Configura i file VPN per i client
$ sudo mkdir -p /opt/client-configs/files
Ora dovremmo copiare il file di configurazione di esempio
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /opt/client-configs/base.conf
Concedi il permesso all'utente non root
$ sudo chown franck:franck -R /opt/client-configs/
Modifica il file base.conf
$ vim /opt/client-configs/base.conf
remote your_server_ip 1194
proto udp
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
#ca ca.crt
#cert client.crt
#key client.key
#tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
key-direction 1
# For the clients using resolvconf for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
# Instead for the clients using systemd-resolved for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Ora creeremo uno script per generare i certificati e i file crittografati sul client. Lo script eseguirà anche una copia del file base.conf e raccoglierà tutte le chiavi e i certificati creati per i client. Per ogni client, dovremmo generare un certificato e una chiave prima di eseguire lo script
$ vim /opt/client-configs/make_config.sh
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/opt/client-configs/keys
OUTPUT_DIR=/opt/client-configs/files
BASE_CONFIG=/opt/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Assicurati che solo l'utente non root possa eseguire lo script.
$ chmod 700 /opt/client-configs/make_config.sh
Ora puoi generare il file di connessione del client in base alla chiave client e alla configurazione del certificato (my-pc.crt e my-pc.key)
$ cd /opt/client-configs
Ora esegui lo script seguito dal nome comune utilizzato per il client che creerà il file vpn del client da utilizzare.
$ ./make_config.sh my-pc
Puoi controllare il risultato:
$ ls -l files/
total 12
-rw-rw-r-- 1 franck franck 8598 Mar 30 11:12 my-pc.ovpn
Collega il client alla connessione OpenVPN
Installa openvpn sul client. Questo verrà utilizzato per stabilire la connessione VPN con il server
$ sudo apt update && sudo apt install openvpn -y
Ora copia il file del client OpenVPN che si trova sul server sul tuo computer client. Quindi, sul tuo computer client esegui il seguente comando:
$ rsync -av [email protected]:/opt/client-configs/files/my-pc.ovpn .
Prima di modificare il file di configurazione OpenVPN del client, dobbiamo verificare se utilizziamo resolvconf o systemd-resolved per la risoluzione DNS
$ cat /etc/resolv.conf
OUTPUT:
# This file is managed by man:systemd-resolved(8). Do not edit.
. . .
nameserver 127.0.0.53
options edns0
Con il valore nameserver 127.0.0.53
, mostra che usi systemd-resolved. Quindi, installa un pacchetto che aiuterà systemd-resolved a utilizzare la VPN per la risoluzione DNS quando connesso.
$ sudo apt install openvpn-systemd-resolved
Ora possiamo modificare il file del client vpn decommentando le righe necessarie per systemd-resolved
$ vim my-pc.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Per il sistema che utilizza update-resolv-conf, decommenterai le righe
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Ora proviamo a connetterci alla VPN utilizzando il comando openvpn nel file di configurazione del client:
$ sudo openvpn --config my-pc.ovpn
Puoi controllare le informazioni IP per l'interfaccia del tunnel
$ ip a
Questo mostrerà un indirizzo IP del tunnel e possiamo fare un ping al server OpenVPN. Con questo, puoi confermare che sei in grado di raggiungere il tuo server come se fossi nella stessa rete privata.
Conclusione
È facile configurare una connessione VPN quando si utilizza OpenVPN. Questa è una buona soluzione quando desideri configurare una soluzione VPN sul tuo server cloud senza utilizzare alcuna soluzione specializzata come un firewall virtuale o altro. È una soluzione rapida e sicura.