
OpenVPN es una VPN de capa de sockets seguros (SSL) de código abierto rica en características. VPN permite conectarse de forma segura a redes no confiables, como la red WIFI en hoteles, aeropuertos o centros comerciales. VPN también permite una conexión segura a la red corporativa para acceder a los recursos. Los túneles están protegidos mediante autenticación SSL/TLS, certificados, credenciales.
En este tutorial, le mostraré cómo configurar una VPN usando OpenVPN en Ubuntu 20.04 .
Requisitos previos
Usaremos dos servidores Ubuntu que se ejecutan en la versión 20.04:
- Un servidor de autoridad certificadora (CA) que validará la solicitud y firmará los certificados de los clientes.
- La OpenVPN servidor en el que instalaremos la VPN.
Configurar servidor CA
Recomendó mantener un servidor independiente para que sirviera como su CA (autoridad de certificación). Esto se debe a razones de seguridad. Procedamos a configurar el servidor CA.
Primero asegúrese de que el sistema esté actualizado. Ejecute el siguiente comando:
$ sudo apt update
Deberá crear un usuario que no sea root para las configuraciones del servidor de la Autoridad de certificación.
$ sudo adduser malain
Ahora déle al usuario los privilegios sudo:
$ sudo usermod -aG sudo malain
Ahora cierre sesión y luego vuelva a iniciar sesión con el usuario no root.
Instalar EasyRSA en el servidor de CA
Easy-rsa es una utilidad CLI para construir y administrar una CA PKI. Easy-RSA será utilizado por el servidor de CA para generar una clave privada y un certificado raíz público que se utilizará para firmar las solicitudes de clientes y servidores que dependerán de nuestra CA.
Para instalar easy-rsa, descargue la herramienta de administración de PKI de github usando wget:
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Luego descomprima el archivo tgz:
$ tar xvf EasyRSA-3.0.8.tgz
Para restringir el acceso solo al usuario, utilice:
$ chmod 700 EasyRSA-3.0.8
Ahora mueva EasyRSA a opt
directorio
$ sudo mv EasyRSA-3.0.8 /opt/
Estamos usando EasyRSA 3.0.8 versión para esta configuración.
Crear CA usando EasyRSA
Primero, necesita crear un archivo llamado vars
para almacenar la información de la organización. Para ello, podemos utilizar el archivo de ejemplo disponible en el directorio EasyRSA-3.0.8.
Para listar archivos en el directorio EasyRSA, use:
$ cd EasyRSA-3.0.8/ && ls -l
Salida:
-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
Haga una copia del archivo vars.example como vars:
$ cp vars.example vars
Ahora abra el archivo vars y agregue la información de la organización al final del archivo:
$ 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"
Ahora inicialice nuestra PKI en nuestro servidor CA que creará la carpeta pki.
$ ./easyrsa init-pki
Ahora podemos generar el root public y par de claves privadas para nuestra CA. Durante el proceso, normalmente se le pedirá que ingrese una frase de contraseña para el par de claves cada vez que necesite firmar o revocar un certificado. En nuestro caso, usaremos el comando para que no se nos solicite una frase de contraseña. También se le pedirá que indique un Nombre común (CN) pero dejaremos el predeterminado presionando la tecla Enter.
$ ./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
Esto creará certificado raíz llamado archivo ca.crt en el directorio pki y la clave pprivada ca.key en el directorio 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 esto, nuestro servidor CA está listo.
Instalar y configurar el servidor Openvpn
Pasemos al segundo servidor para instalar y configurar openvpn. También deberá crear un usuario no root en este servidor y darle el sudo
privilegios.
Para instalar openvpn en ubuntu, ejecute los siguientes comandos:
$ sudo apt update
$ sudo apt install openvpn
En el servidor openvpn, easyrsa se utilizará para generar una solicitud de certificado que será verificada y firmada por el servidor CA. Siga los mismos pasos que seguimos en la última sección para instalar Easyrsa.
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Ahora descomprima el archivo tgz descargado:
$ tar xvf EasyRSA-3.0.8.tgz
Restringir el acceso solo al usuario:
$ chmod 700 EasyRSA-3.0.8
Mueva EasyRSA-3.0.8 a opt
directorio:
$ sudo mv EasyRSA-3.0.8 /opt/
Crear una PKI
Ahora necesitamos crear PKI que ayudará a solicitar y gestionar certificados TLS para los clientes y el resto de servidores que se conectarán a nuestra VPN.
Vamos a crear un archivo vars usando el archivo de ejemplos ya disponible:
$ cp vars.example vars
Ahora edite el archivo vars agregando las siguientes líneas al final del archivo:
$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Para crear la carpeta PKI en el servidor openvpn, ejecute easyrsa
archivo de secuencia de comandos:
$ ./easyrsa init-pki
Salida:
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
Cree la solicitud de certificado del servidor y la clave privada
Ahora generaremos una clave privada y solicitud de certificado en el servidor OpenVPN. Luego, transferiremos el archivo de solicitud de certificado al servidor de CA para que se firme a fin de crear el certificado requerido
Estando en la misma carpeta, podemos generar la solicitud con el nopass
opción. El siguiente comando crea un archivo de clave privada llamado openvpn-server.key y un archivo de solicitud de certificado llamado openvpn-server.req.
$ ./easyrsa gen-req openvpn-server nopass
Salida:
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
Ahora, copie el archivo de clave del servidor llamado openvpn-server.key al directorio llamado /etc/openvpn/server.
$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server
Luego copie el archivo de solicitud de certificado al servidor CA :
$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req [email protected]:/tmp
En el servidor de CA, cambie al directorio easyrsa,
$ cd /opt/EasyRSA-3.0.8/
Para importar la solicitud , ejecute el siguiente comando:
$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server
Salida:
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.
Ahora firma la solicitud. Como estamos firmando la solicitud del servidor, debemos usar la directiva server
antes del nombre común de nuestro servidor openvpn. Si fuera una solicitud de un cliente, deberíamos usar la directiva client
en su lugar.
Para firmar la solicitud :
$ ./easyrsa sign-req server openvpn-server
Salida:
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
Ahora que la solicitud de certificado del servidor OpenVPN ha sido firmada por el servidor CA, necesitamos transferir la solicitud firmada y el certificado público al servidor OpenVPN.
$ scp pki/{ca.crt,issued/openvpn-server.crt} [email protected]:/tmp
$ sudo cp /tmp/{ca.crt,openvpn-server.crt} /etc/openvpn/server
Ahora generaremos la clave precompartida tls-crypt para asegurarnos de que nuestro servidor OpenVPN pueda hacer frente al tráfico no autenticado, escaneos de puertos y algunos ataques que pueden usar una gran cantidad de recursos del servidor.
$ ./easyrsa gen-dh
Salida:
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
Ahora copie los archivos key y pem en el directorio /etc/openvpn/server:
$ sudo cp ta.key pki/dh.pem /etc/openvpn/server
Generar un certificado de cliente y un par de claves
Necesitaremos crear un directorio para guardar los certificados y las claves de los clientes. Asegúrese de dar permiso al usuario no root.
$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs
Genere la solicitud del certificado de cliente:
$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass
Salida:
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
Ahora copie la clave del cliente en el directorio de configuraciones del cliente:
$ cp pki/private/my-pc.key /opt/client-configs/keys/
Copie el archivo de solicitud de certificado de cliente en el servidor de CA:
$ scp pki/reqs/my-pc.req [email protected]:/tmp
En el servidor de CA, importe 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.
Ahora debemos firmar la solicitud de cliente, escriba:
$ ./easyrsa sign-req client my-pc
Salida:
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
Copie el certificado del cliente en el servidor openvpn:
$ scp pki/issued/my-pc.crt [email protected]:/tmp
Ahora en el servidor openvpn, necesitamos copiar todos los archivos del cliente al directorio del cliente que hemos creado antes.
$ 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/
Asegúrese de que el usuario no root tenga los permisos sobre los archivos.
$ sudo chown franck:franck /opt/client-configs/keys/*
Configurar servicio VPN
Primero debemos hacer una copia de la plantilla para usar
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Luego descomprima el archivo
$ sudo gzip -d /etc/openvpn/server/server.conf.gz
Y entra a la carpeta
$ cd /etc/openvpn/server
Algunas líneas serán reemplazadas para que coincidan con nuestra configuración::
- Los cifrados criptográficos se establecerán en
AES-256-CBC
- El algoritmo de resumen del mensaje HMAC será
sha256
- Como también usamos un parámetro Diffie-Hellman, lo estableceremos en
dh.pem
- Usaremos el usuario nadie y grupo ningún grupo para ejecutar openvpn sin privilegios una vez que haya comenzado
- Presionaremos los cambios de dns para redirigir todo el tráfico a través de la vpn con los valores
push redirect-gateway def1 bypass-dhcp
,push dhcp-option DNS 208.67.222.222
,push dhcp-option DNS 208.67.220.220
- Mantendremos el puerto predeterminado
1194
- Usaremos el
udp
protocolo - Deberíamos indicar la clave
openvpn-server.key
y certificadoopenvpn-server.crt
para usar como credencial
Por lo que el archivo debería tener el siguiente aspecto:
$ 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
Debe activar el reenvío de IP editando el valor de net.ipv4.ip_forward en /etc/sysctl.conf.
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Para que los cambios que hicimos en /etc/sysctl.conf sean efectivos, ejecute:
$ sudo sysctl -p
net.ipv4.ip_forward = 1
Ahora necesita permitir OpenVPN a través de su firewall habilitando el enmascaramiento. Para ello, debe identificar el nombre de su interfaz de red pública:
$ ip route | grep default
default via X.X.X.X dev eth0 proto static
En nuestro caso es eth0. Ahora debemos agregar las reglas de enmascaramiento en la configuración del firewall, por lo que agregaremos la siguiente línea en la parte superior de los archivos de reglas:
$ 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
Ahora editemos ufw para permitir paquetes reenviados de forma predeterminada.
$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
Abra el puerto openvpn en el firewall:
$ sudo ufw allow '1194/udp'
Para reiniciar el servicio ufw, escriba:
$ sudo ufw disable && sudo ufw enable
Para permitir que el servicio openvpn se inicie como el inicio del sistema, escriba:
$ sudo systemctl enable openvpn-server@server
Para iniciar openvpn, escriba:
$ sudo systemctl start openvpn-server@server
Puede verificar el estado de openvpn por:
$ sudo systemctl status openvpn-server@server
Salida:
● [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.
Para comprobar la interfaz del túnel, escriba:
$ ip addr show tun0
Salida:
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
Configurar archivos vpn para clientes
$ sudo mkdir -p /opt/client-configs/files
Ahora debemos copiar el archivo de configuración de muestra
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /opt/client-configs/base.conf
Otorgue el permiso al usuario no root
$ sudo chown franck:franck -R /opt/client-configs/
Edite el archivo 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 .
Ahora crearemos un script para generar los certificados y archivos cifrados en el cliente. El script también hará una copia del archivo base.conf y recopilará todas las claves y certificados creados para los clientes. Para cada cliente, necesitaríamos generar un certificado y una clave antes de ejecutar el 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
Asegúrese de que solo el usuario no root pueda ejecutar el script.
$ chmod 700 /opt/client-configs/make_config.sh
Ahora puede generar el archivo de conexión del cliente en función de la clave del cliente y la configuración del certificado (my-pc.crt y my-pc.key)
$ cd /opt/client-configs
Ahora ejecute el script seguido del nombre común usado para el cliente que creará el archivo vpn del cliente para usar.
$ ./make_config.sh my-pc
Puedes comprobar el resultado:
$ ls -l files/
total 12
-rw-rw-r-- 1 franck franck 8598 Mar 30 11:12 my-pc.ovpn
Conectar el cliente a la conexión OpenVPN
Instale openvpn en el cliente. Esto se usará para establecer la conexión vpn con el servidor
$ sudo apt update && sudo apt install openvpn -y
Ahora copie el archivo del cliente OpenVPN que está en el servidor a su computadora cliente. Entonces, en su computadora cliente, ejecute el siguiente comando:
$ rsync -av [email protected]:/opt/client-configs/files/my-pc.ovpn .
Antes de editar el archivo de configuración de OpenVPN del cliente, debemos verificar si usamos resolvconf o systemd-resolved para la resolución de 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 el valor nameserver 127.0.0.53
, muestra que usa systemd-resolved. Por lo tanto, instale un paquete que ayudará a systemd-resolved a usar la VPN para la resolución de DNS cuando esté conectado.
$ sudo apt install openvpn-systemd-resolved
Ahora podemos editar el archivo del cliente vpn descomentando las líneas necesarias para 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 .
Para el sistema que usa update-resolv-conf, quitará el comentario de las líneas
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Ahora intentemos conectarnos a la VPN usando el comando openvpn para el archivo de configuración del cliente:
$ sudo openvpn --config my-pc.ovpn
Puede verificar la información de IP para la interfaz del túnel
$ ip a
Esto mostrará una dirección IP de túnel y podemos hacer un ping al servidor OpenVPN. Con esto, puede confirmar que puede acceder a su servidor como si estuviera en la misma red privada.
Conclusión
Es fácil configurar una conexión VPN cuando se usa OpenVPN. Esta es una buena solución cuando desea configurar una solución VPN en su servidor en la nube sin usar ninguna solución especializada, como un firewall virtual o cualquier otra cosa. Es una solución rápida y segura.