GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare OpenVPN su Ubuntu 20.04

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 certificato openvpn-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.


Ubuntu
  1. Come configurare gli host virtuali Apache su Ubuntu 18.04

  2. Come installare Redis su Ubuntu 20.04 / 18.04

  3. Come impostare il server dei nomi DNS su Ubuntu 20.04

  4. Ubuntu:come impostare un IP statico in Ubuntu?

  5. Come impostare un servizio?

Come configurare OpenVPN su Ubuntu Server

Come configurare e configurare un server OpenVPN su Ubuntu 22.04

Come impostare un IP statico su Ubuntu 20.04 (desktop)

Come configurare NordVPN su Ubuntu

Come installare OpenVPN in Ubuntu 20.04

Come impostare e configurare una VPN con OpenVPN su Ubuntu 18.04