En esta entrada vamos a relalizar la instalación de un servidor de OpenVPN, utilizaremos las instalacion de virtualbox como medio para crear una maquina virtual y realizaremos las diferentes configuraciones necesarias, ademas mostrare como configurar algunos clientes ya sea windows, mac, linux, tablets o móviles.

La instalación constará de lo siguiente:

  1. Características de la maquina virtual.
  2. Instalación Sistema Operativo.
  3. Instalación de Webmin.
  4. Instalación de OpenVPN.
  5. Instalación de Easy-RSA necesaria para crear los certificados.
  6. Generación de certificados.
  7. Configuración Servidor OpenVPN.
  8. Configuración Clientes.
  9. Configuración Router y Firewall apertura de puertos.
  10. Configuración de clientes Mac, Linux o Windows.

1. Características de la máquina virtual.

Para esta maquina virtual vamos a configurar las siguientes opciones.

Nombre de la maquina virtual: Server Web
Tipo: Linux (Solo se aplica en virtualbox)
Versión: Ubuntu (64-bit) (Solo se aplica en virtualbox)
Procesadores: 2 a 4 (No son necesarios mas)
Memoria: 4096 (Dependerá luego de su uso para ampliarla)
Tamaño Disco Duro: 50 Gb. (Podréis ampliarlo si hiciera falta. Podéis comprobar como se realiza en Aumentar capacidad de vuestro Disco Duro)
Red: Adaptador Puente (en otros virtualizadores recomiendo VirtIO)

Si vais a probar con el Firewall aquí creado y bajo virtualbox la tarjeta de red debe conectarse a Red Interna y llamarse Intnet1 de esta forma estará bajo el Firewall y podréis crear la configuración correcta de puertos. Esta configuración se encuentra detallada al final de articulo donde explico que puerto necesitareis abrir y como asignarle una IP fija a vuestro servidor.

2. Instalación del sistema operativo.

Ya hemos completado la configuración de nuestra maquina virtual y ahora comenzaremos con la instalación. Ahora seleccionaremos en el menú de arriba “Iniciar” esta iniciara nuestra maquina para su configuración. Y seleccionaremos el idioma cuando se nos pida, como veis pueden salir 2 tipos de imagen, las muestro a continuación. Para seleccionar el idioma nos movemos con las flechas arriba y abajo, una vez seleccionado pulsamos la tecla enter.

En la siguiente ventana si existe una nueva versión de Ubuntu os lo indicara por lo que podéis seguir con la instalación sin actualizar o realizar a instalación de la nueva versión.

Ahora seleccionaremos la distribución de nuestro teclado, o sea el idioma, nos vamos con la tecla de dirección hacia “Layout“, presionamos intro seleccionamos el idioma y volvemos a “Hecho“.

Las siguientes 3 ventanas son practicamente seleccionar “hecho” hasta llegar a la configuración del Disco Duro. También si lo deseas y tenéis conocimientos poder seleccionar establecer una IP fija en vez por DHCP, aunque ya la mayoría de routers funcionan como DNS interno el echo de dejarlo en DHCP no afecta para nada en nuestro trabajo.

Ahora en este apartado deberemos seleccionar como queremos distribuir nuestro disco duro, yo para principiantes recomiendo utilizar el disco duro entero “Use An Entire Disk“, en el caso de querer otro tipo de distribución es cuestión de seleccionar la opción adecuada y realizar la configuración a vuestro gusto, acto seguido pulsamos sobre “Hecho“.

Seleccionamos el Disco Duro donde vamos a realizar la instalación y presionamos intro.

A continuación nos muestra la configuración realizada en nuestro disco duro, y seleccionamos “Hecho” para continuar, “Restablecer” para eliminar los valores y comenzar de nuevo o “Atrás” para seleccionar otra forma de configurar nuestra unidad.

Si estamos de acuerdo con los cambios al pulsar “Hecho” nos preguntara si estamos de acuerdo con lo seleccionado y que procederá a guardar los cambios, siendo “No” para volver o “Continuar” para pasar al siguiente proceso.

Tras presionar “Continuar“, el servidor nos muestra una ventana en la que se nos solicita una serie de datos que debemos rellenar correctamente.
Your name: Administrator (Nombre con el que se nos reconocerá al acceder al sistema, puede escribir el que desee).
Your server’s name: serverweb (Este es el nombre con el que reconocerá a nuestro servidor en la Red, puede ser cambiado por otro pero no olvidar que siempre ha de ser escrito en minúsculas, hacerlo en mayúsculas podría genera luego algunos problemas, puede escribir el que desee).
Pick a username: administrator (Este es el nombre con el que nos registraremos en el sistema que no tiene nada que ver con el nombre con el que nos reconocerá el sistema, puede ser cambiado por otro pero no olvidar que siempre ha de ser escrito en minúsculas, hacerlo en mayúsculas podría genera luego algunos problemas, puede escribir el que desee).
Choose a password: *********** (Contraseña con la cual se accederá al sistema, recomiendo poner una contraseña compleja ya que esta permite realizar luego con el servidor todo tipo de tareas y no querremos tener un servidor inseguro, no?).
Confirm your password: *********** (Repetir la contraseña anterior).

Presionamos sobre “Hecho” y continuamos.

Seleccionar en esta ventana la opción Install OpenSSH server, ya que esto nos servirá para acceder a la linea de comandos del servidor desde fueran cuando fuera necesaria para realizar algún tipo de modificación, ya sea actualizaciones, modificaciones o instalaciones en el servidor. Presionamos sobre “Hecho” y continuamos.

En la siguiente ventana al no requerir en este caso ninguna de las opciones que aquí se presenta simplemente presionamos sobre “Hecho” y continuamos.

Ya solo cabe esperar a que la instalación junto con sus actualizaciones se complete hasta llegar a la siguiente ventana en la que se nos pide reiniciar, presionando sobre “Reboot” y esperando a que este se inicie de nuevo para continuar con el siguiente proceso.

Presionamos simplemente enter y listo la maquina se reiniciará y pasaremos al siguiente punto.

3. Instalación de Webmin.

En este apartado procederemos a instalar Webmin, es una forma de acceder a vuestro servidor mediante web y poder realizar con el todo tipo de configuraciones algunas esenciales con la que mejorar tu servidor y poder evitar un poco utilizar la linea de comandos, no pasa siempre depende del tipo de instalación bajo Webmin algunas no funcionan debido a los procesos que requieren, también indicar que solo mostraré la instalación utilizando como base la ayuda de la página de Webmin, para mas información es importante remitirse a ella o a otras páginas que indique como utilizar algunas de sus funciones ya que es bastante extenso y solo sería copiar y pegar lo que ya tienen en sus páginas.

Accedemos a nuestro servidor con los datos de registro proporcionados anteriormente y a continuación procedemos pues a acceder a la pagina de Webmin.

Como veis al escribir los datos de registro la contraseña queda oculta aunque creáis que no la estáis escribiendo no es así, es uno de los sistemas de seguridad de Linux para que esos mirones que tenemos sobre el hombro no puedan ver cual es la que hemos escrito, al acceder a nuestro servidor también recibimos algo de información sobre este, como es Procesos abiertos, espacio de disco duro usado, si hay algún usuario logueado ( SSH o Webmin ), memoria usada, memoria de intercambio usada (Swap) y lo mas importante que nos hará falta luego para comprobar nuestro servidor la IP que ha obtenido por DHCP o has configurado.

Ya hemos accedido al servidor ahora accederemos como usuario root, para poder hacer todas estas instalaciones tienes que tener privilegios de administrador es por ello que introduciremos el comando “sudo -i” e introduciremos la contraseña de administrador, con ello nos aseguraremos que podremos realizar las instalaciones. Procedemos con Webmin, en su página web seleccionamos en la izquierda en la sección “Webmin Installation” installing on Debian, porque Debian? el paquete es el mismo para Ubuntu y Debian, y escribiremos en la linea de comandos lo siguiente.

apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Es recomendable comenzar por instalar los requisitos que necesita Webmin para su funcionamiento ya que si se hace al revés en ocasiones da error de instalación porque le faltan componentes para la instalación. el echo de acceder a la página web es seleccionar la última versión que tenga en estos momentos Webmin ya que es un software que se actualiza constantemente y puede ser que no se muestre aquí la última versión.
Cuando se nos pregunte por si queremos instalar los componentes escribimos “S” y pulsamos intro, esperamos a que termine y pasamos a descargar la última versión de Webmin.

Descargamos la version actual que nos indique la página de Webmin, escribimos lo siguiente y pulsamos intro, a continuación comenzara la descarga y esperamos que termine.

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.941_all.deb

Para evitar problemas de dependencia al instalar Webmin es recomendable instalar también “unzip“.
apt-get –install unzip

Una vez finalizado las instalaciones previas y descargado el archivo ejecutamos la instalación.

dpkg --installieren webmin_1.941_all.deb

Cuando se haya completado ya podemos acceder a nuestro servidor utilizando la IP o el nombre del servidor.

Https://IPSERVER:10000 o Https://NOMBRESERVIDOR:10000

Si el nombre no accede y habéis olvidado la IP no os preocupéis, escribid en la linea de comandos “ip a” y os mostrara la IP que actualmente tiene el servidor, en ocasiones el router es capaz de reconocer el nombre de nuestro servidor y que este lo memorice en las DNS internas, pero esto no siempre pasa. Os saldrá una advertencia de seguridad, pulsamos sobre “avanzado” y a continuación “Aceptar el riesgo y continuar“.

Y listo ya tenéis Webmin instalado en vuestro servidor. Ahora para acceder a él escribir el nombre de usuario y contraseña del servidor, realizaremos una última configuración y podremos pasar al siguiente punto.

Acercamos el ratón a los números de la versión que se indican en “Authentic theme version“, veréis que sale un icono mas llamado “configurable options for Authentic theme“, presionamos ahí y accedemos a una siguiente ventana.

En la parte de abajo tenéis la opción “Check for Authentic Theme updates“, suele estar marcada en “No“, pasamos a marcar “Yes” y salvamos “Save“. Volvemos al menú principal pulsando arriba a la izquierda Webmin o Dashboard. Si hubiese alguna actualización de Webmin este se mostraría en unos segundos y solo tendríamos que pulsar para que se actualizara dando en “Update”. Algo también importante es comprobar 2 dependencias puesto que sin ellas el sistema de actualización de Webmin da error, estas son “Curl” y “Perl“. Estas se instalan desde la linea de comando del servidor. si ejecutáis el comando y están instaladas os lo indicará, pero sino hará la instalación correspondiente.

apt-get install curl perl

Como podéis comprobar posiblemente tengáis actualizaciones pendientes, aprovechar tras la instalación de las dependencias indicadas para realizar la actualización desde Webmin (Estas actualizaciones se pueden realizar en cualquier caso, no dependen de Curl o Perl).

Presionamos sobre las actualizaciones, elegimos luego “Update Seleted Packages” y a continuación “Install Now“, comienza la instalación, si hubiera algún error nos indicaría cual y como solucionarlo aproximadamente, cuando finalice pulsamos arriba a la izquierda sobre Webmin o Dashboard y si hubiera que reiniciar el servidor en la propia web no lo indicaría abajo en amarillo “Reboot“.

Nunca intentar volver antes de que finalice la instalación ya que podríais provocar un fallo en esta y luego tener algunos problemas para solucionarlo, esperar siempre a que termine y salga la opción “Return to package list” al final de la instalación.

Con Webmin podrás realizar muchas de las operaciones a golpe de clic, sin tener que escribir todos los comando de forma manual, actualizaciones, búsqueda de archivos, modificaciones, subidas, descargas, eliminar archivos y muchas mas operaciones que tienes para mayor control de tu servidor en esta pagina encontrareis información sobre su funcionamiento y posibilidades Raiolanetworks. Hasta aquí la instalación de Webmin.

4. Instalación de OpenVPN.

Vamos a proceder a la instalación de OpenVPN, para ello desde el terminal y como administrador (tenemos que usar la función sudo -i para activar el modo administrador) escribiremos lo siguientes.

apt install -y OpenVPN

Como veis la instalacion de OpenVPN no tiene mucha complegidad, el sistema realizara la instalación de los paquetes necesesarios y las dependencias.

5. Instalación de Easy-RSA necesaria para crear los certificados.

La instalación se realiza bajando los archivos de GitHub, teneis que tener en cuenta que la versión que he utilizado es la actual, pero que podria haber una mas actualizada en el momento de realizar vuestra instalación si pulsais aqui Easy-RSA podreis ver cual es la ultima versión en uso y cambiar solo los datos de la versión a la hora de descargarla. Para descargar EasyRSA escribimos en el terminal lo siguiente.

wget https://github.com/OpenVPN/easy‐rsa/releases/download/v3.0.8/EasyRSA‐3.0.8.tgz
tar xvf EasyRSA‐3.0.8.tgz (Descomprimimos el archivo)
cp -R /EasyRSA‐3.0.8 /etc/OpenVPN/Easy-Rsa (Lo copiamos dentro de la carpeta OpenVPN desde la que trabajaremos)

Completada la descarga y copia de los archivos en el lugar correcto podemos eliminar el archivo descargado

rm EasyRSA‐3.0.8.tgz
rm -R /EasyRSA‐3.0.8

6. Generación de certificados.

A) Certificados del Servidor.

Ahora vamos a proceder a crear los certificados del servidor y de los clientes, para ello lo primero que vamos a hacer es un archivo con el siguiente contenido todo ello desde el terminal.

cd /etc/OpenVPN/Easy-Rsa
nano vars

Su contenido será el siguiente:

set_var EASYRSA_REQ_COUNTRY    "US" #(Iniciales del pais)
set_var EASYRSA_REQ_PROVINCE   "NewYork" (Estado)
set_var EASYRSA_REQ_CITY       "New York City" #(Ciudad)
set_var EASYRSA_REQ_ORG        "DigitalOcean" #(Organización o Empresa)
set_var EASYRSA_REQ_EMAIL      "admin@example.com" #(Email de la cuenta de administrador)
set_var EASYRSA_REQ_OU         "Community" #(Unidad Organizativa)

No olvideis que las comillas con muy importantes, todo lo que esta tras # son comentarios de ayuda y no se utilizan para la configuración. Una vez creado el archivo para salir de el editor pulsamos primero sobre “control+o” para grabar y luego “control+x” para salir del archivo. Ahora procedemos a la configuración de los certificados.

Iniciamos PKI con el siguiente comando dentro de la carpeta Easy-RSA

./easyrsa-pki

Dara como resultado lo siguiente

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

Ahora crearemos el certificado CA con el siguiente comando

./easyrsa build-ca nopass

dará como resultado lo siguiente

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................+++++
..............+++++
e is 65537 (0x010001)
Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
140449484268672:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rnd
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]:server

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

Procedemos a crear la llave del servidor

./easyrsa gen-req server nopass

Presionaremos intro en la pregunta y tomará el nombre server como predeterminado dando como resultado lo siguiente

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating a RSA private key
...+++++
................................................................................................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/server.key.uQ7rqU8ryK'
-----
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) [server]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/pki/private/server.key

Crearemos el certificado del servidor con la siguiente orden

./easyrsa sign-reg server server

como resultado nos dará lo siguiente y en la pregunta Confirm request details: escribiremos yes

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019


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 1080 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Sep  5 15:43:29 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt

Generaremos la llave de intercambio, no os preocupeis por lo que dura en ocasiones es rapido o requiere de algunos minutos, solo esperar a que termine, pondremos la siguiente orden

./easyrsa gen-dh

obtendremos como respuesta lo siguiente

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
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 /etc/openvpn/easy-rsa/pki/dh.pem

Ya completada la creación del certificado del servidor procederemos a crear una llave secreta utilizando la siguiente orden

openvpn –genkey –secret ta.key

Y ahora copiaremos todos los certificados creados en la carpeta correcta

cp ta.key /etc/openvpn
cp pki/ca.crt/etc/openvpn
cp pki/private/server.key /etc/openvpn
cp pki/issued/server.crt /etc/openvpn
cp pki/dh.pem /etc/openvpn

Completado todos los certificados del Servidor ahora iniciaremos el trabajo para realizar los certificados del cliente

B) Certificados Cliente.

Procedemos con los certificados del cliente para ello introducimos la siguiente orden para crear llave del cliente

./easyrsa gen-req client nopass

obtenemos el siguiente resultado

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating a RSA private key
..........................................+++++
...............+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client.key.wU45j6E0Dt'
-----
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) [client]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client.req
key: /etc/openvpn/easy-rsa/pki/private/client.key

escribimos la siguiente orden y obtendremos el certificado del cliente

/.easyrsa sign-req client client

obtenemos el siguiente resultado

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019


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 1080 days:

subject=
    commonName                = client


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Sep  5 12:28:25 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

Y por último copiamos todos los archivos necesarios para poder poner en marcha un cliente

cp ta.key /etc/openvpn/client
cp pki/ca.crt/etc/openvpn/client
cp pki/private/client.key /etc/openvpn
cp pki/issued/client.crt /etc/openvpn

Ya tenemos todos los certificados necesarios tanto para el cliente como para el servidor, ahora procederemos a configurar y levantar el servidor de VPN.

7. Configuración Servidor OpenVPN.

Antes de comenzar con la configuración de OpenVPN vamos a modificar una archivo, este hará que se pueda comunicar entre nuestras subredes a través del puerto de red de la VPN.

nano/etc/sysctl.conf
y cambiar #net.ipv4.ip_forward=1
por net.ipv4.ip_forward=1 ( como veis solo le hemos quitado la #, pero en caso de que tuviese otro numero o no estuviera basta con ponerlo sin #)

Una vez modificado el archivo para salir de el editor pulsamos primero sobre “control+o” para grabar y luego “control+x” para salir del archivo
ahora ejecutamos la orden sysctl -p para activar la confuración de los cambios realizados.

Procederemos a crear un archivo dentro de la carpeta de OpenVPN y le introduciremos los datos a continuación de la siguiente forma

nano /etc/openvpn/server.conf

en el introduciremos la siguiente información

port 1194 # El puerto puede ser cambiado por otro, no olvideis tambien cambiarlo en el Firewall y/o Router
proto udp4 # Es mejor utilizar este puerto es mas rapido y mejor que usar TCP
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0 # Esta es la ip que le assignará el servidor a tu ordenador bajo la VPN
push "route 192.168.0.0 255.255.255.0" # Este debes modificarlo por la IP de tu red local para tener acceso
keepalive 10 120
tls-auth ta.key 0 # Este fichero es el que contiene la clave secreta
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1

No olvideis comprobar la información, todo lo que esta tras # son comentarios de ayuda y no se utilizan para la configuración. Una vez creado el archivo para salir de el editor pulsamos primero sobre “control+o” para grabar y luego “control+x” para salir del archivo. Ahora procedemos a poner en marcha el servidor con la siguiente orden

systemctl start openvpn@server # esto es para iniciar el servidor.

systemctl stop openvpn@server # esto es para detener el servidor.
systemctl restart openvpn@server # esto es para reiniciar el servidor.

Si escribís la siguiente orden sabreis si el servidor esta activo y funcionando

systemctl status openvpn@server # esto es para conocer el estado del servidor y dará como resultado lo siguiente.

? openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-09-21 08:46:47 EDT; 6s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 5040 (openvpn)
   Status: "Initialization Sequence Completed"
    Tasks: 1 (limit: 1138)
   Memory: 1.7M
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           ??5040 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.

Sep 21 08:46:47 debian systemd[1]: Starting OpenVPN connection to server...
Sep 21 08:46:47 debian systemd[1]: Started OpenVPN connection to server.

8. Configuración Clientes.

Una vez completado el servidor y activo procedemos a crear una configuración para los clientes

nano /etc/openvpn/client/client.ovpn

Dentro introducimos los siguientes datos

client
dev tun
proto udp
remote 192.168.0.103 1194 # La ip debe ser cambiada por tu IP publica o tu dominio ejemplo.com
resolv-retry infinite
nobind
#user nobody
#group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

Con esta orden prodras ver la ip asignada a tu tarjeta mediate OpenVPN en el servidor.

ifconfig

Dará como resultado algo parecido a esto

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::a00:27ff:fe99:dc40  prefixlen 64  scopeid 0x20
        ether 08:00:27:99:dc:40  txqueuelen 1000  (Ethernet)
        RX packets 447  bytes 42864 (41.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 334  bytes 47502 (46.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 57  bytes 9754 (9.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 57  bytes 9754 (9.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.6  netmask 255.255.255.255  destination 10.8.0.5
        inet6 fe80::52b5:a1d2:fa23:f51e  prefixlen 64  scopeid 0x20
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 472 (472.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Con esta otra orden podreis ver los errores que se produzcan o los usuarios que se conecten y que IP les ha sido asignadas

tail -f /var/log/openvpn/openvpn.log

Dando un resultado parecido a esto

Sun Sep 22 19:46:08 2019 192.168.0.103:45700 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA
Sun Sep 22 19:46:08 2019 192.168.0.103:45700 [_] Peer Connection Initiated with [AF_INET]192.168.0.103:45700
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI: Learn: 10.8.0.6 -> _/192.168.0.103:45700
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI: primary virtual IP for _/192.168.0.103:45700: 10.8.0.6
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 PUSH: Received control message: 'PUSH_REQUEST'
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 SENT CONTROL [_]: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' (status=1)
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Data Channel: using negotiated cipher 'AES-256-GCM'
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key

Una vez completada esta configuración procedemos a hacer una copia de los siguientes archivos en un USB. Si conoceis Webmin a través de él tambien podeis hacerlo, recordad que lo hemos instalado en este servidor.

/etc/openvpn/client/ca.crt
/etc/openvpn/client/client.crt
/etc/openvpn/client/client.key
/etc/openvpn/ta.key

Una vez copiado los archivos ya solo nos falta configurar el cliente ya sea un ordenador, un portatil, tablet o movil con windows, android o linux.

9. Configuración Router y Firewall apertura de puertos.

Para un correcto funcionamiento de nuestro servidor debemos de abrir los puertos necesarios apuntando a nuestro servidor de VPN, tanto en el router como en el Firewall, si habeis instalado Pfsense en el manual de este podeis ver como realizar esa configuración y en el router como depende de cada modelo pues recomiendo leerse el manual del fabricante para poder realizar la apertura de puertos. El puerto que tenemos que abrir es el 1194 udp.

10. Configuración de clientes Mac, linux o Windows.

macOS

Instalación

Tunnelblick es un cliente de codigo abierto gratuito para macOS. Puede realizar la descarga del cliente desde el siguiente enlace Tunnelblick-Download. Haga doble clic en el archivo .dmg descargado y siga las instrucciones de instalación.

Cuando termine el proceso de instalación de Tunnelblick pregunta si tiene archivos de configuración. Responda tengo archivos de configuración y espere a que termine la instalación. abra la ventana de busque y seleccione el archivo client.ovpn. Tunnelblick instalará el prefil del cliente. Se requieren derechos de administrador

1. la versión estable más reciente del sitio web de Tunnelblick e instálela en su Mac.

2. La primera vez que abra Tunnelblick aparecerá un mensaje diciendo que necesitará archivos de configuración VPN. Haga clic en «Tengo archivos de configuración».

3. En la siguiente ventana se explica cómo instalar los archivos de configuración de VPN. Haz clic en «Aceptar».

4. Los archivos de configuración mencionados anteriormente deben estar disponibles a través de su proveedor de VPN en forma de una lista de archivos con la extensión.ovpn.

5. Una vez descargados los archivos, abra la pantalla de configuración de Tunnelblick haciendo clic en su icono en la barra de menú y seleccionando «Detalles VPN…».

6. Para añadir archivos de configuración a Tunnelblick, arrastre y suelte los archivos.ovpn en el panel izquierdo del menú desde Finder.

7. Marque «Apply to All» y haga clic en «Only Me» en la siguiente ventana.

8. Las configuraciones se añadirán automáticamente al sistema y estarán disponibles para su conexión.

Establecer la conexión

Inicie Tunnelblick haciendo doble clic en el símbolo Tunnelblick en la carpeta Aplicaciones. Después de iniciar Tunnelblick, hay un símbolo de Tunnelblick en la barra de menú en la parte superior derecha de la pantalla para controlar las conexiones. Haga clic en el símbolo y luego en el elemento de menú Conectar cliente para establecer la conexión VPN.

Conectando y desconectando

1. Para abrir una nueva conexión VPN, haga clic en el icono de la barra de menú Tunnelblick y seleccione una configuración.

2. Introduzca su nombre de usuario y contraseña para su proveedor de VPN y haga clic en «Aceptar», siempre y cuando este lo requiera.

3. Aparecerá una pequeña ventana de gruñido en la parte superior derecha del monitor que muestra el estado de la conexión. Una vez finalizada la conexión, la ventana de notificación desaparecerá.

4. Si el icono de Tunnelblick es ahora negro en lugar de gris claro, se ha conectado correctamente.

5. Para ver el estado de su conexión y la dirección IP externa, haga clic en el icono de Tunnelblick y mire la primera línea. Para desconectarse, haga clic en el mismo elemento del menú.

Compartir credenciales entre configuraciones

Si su proveedor de VPN tiene varios puntos de salida, puede configurar Tunnelblick para que utilice las mismas credenciales de acceso para todos ellos. De lo contrario, le pedirá su información de acceso una vez por configuración, lo que puede resultar molesto. Si puede, configúrelo antes de conectarse a la VPN por primera vez, ya que reducirá los posibles errores.

1. Haga clic en el icono Tunnelblick.

2. Seleccione «Detalles VPN…» para abrir el menú de configuración.

3. En la pantalla del menú resultante, haga clic en la pestaña «Ajustes» y, a continuación, haga clic en el botón «Avanzado…».

4. En la pestaña «Credenciales VPN», marque «Todas las configuraciones utilizan credenciales comunes». Esto configurará todas sus conexiones VPN para que utilicen el mismo nombre de usuario y contraseña.

5. Para establecer el nombre de usuario y la contraseña que utilizarán las credenciales, inicie sesión en una conexión VPN que no tenga ya las credenciales guardadas.

6. Escriba su nombre de usuario y contraseña y asegúrese de marcar «Savein Keychain» bajo el nombre de usuario y la contraseña.

7. Después de iniciar sesión, la aplicación guardará esas credenciales y las aplicará a cualquier otra conexión VPN que inicie.

Linux

Instalación

Si está usando Linux, hay una variedad de herramientas que puede usar dependiendo de su distribución. Su entorno de escritorio o administrador de ventanas también puede contener utilidades de conexión. Sin embargo, la forma más universal de conectarse es simplemente usar el software OpenVPN. En Ubuntu o Debian, puede instalarlos como lo haría en el servidor escribiendo:

sudo apt update
sudo apt install openvpn

En CentOS, puede activar y luego instalar los repositorios EPEL escribiendo:

sudo yum install epel-release
sudo yum install openvpn

Configuración

Compruebe que su distribución incluye el script /etc/openvpn/update-resolv-conf:

ls /etc/openvpn
Outputupdate-resolv-conf

A continuación, edite el archivo de configuración del cliente OpenVPN que transfirió:

nano client.ovpn

Si encontró un archivo update-resolv-conf, comente las tres líneas que agregó para ajustar la configuración de DNS: client.ovpn

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Si está utilizando CentOS, cambie la directiva de grupo de nogroup a nadie para que coincida con los grupos disponibles de la distribución: client.ovpn

group nobody

Guarde y cierre el archivo.

Ahora puede conectarse a la VPN apuntando al archivo de configuración del cliente con el comando openvpn:

sudo openvpn --config client1.ovpn

Esto debería conectarte a tu VPN.

Windows

Acceda al sitio web OpenVPN para descargar la aplicacion para windows seleccione el archivo Windows 64-bit MSI installer o Windows 32-bit MSI installer según la versión de su sistema operativo.

Instale la aplicacion completamente, se requieren derechos de administrador, acepte todo lo que se va a instalar incluido la creación de una nueva tarjeta de red llamada TAP-windows adapter, es la que utilizará para establecer la conexión a su VPN.

Establecer conexión

Una vez completada la instalación copie los archivos de su VPN en “c:\archivos de programa\OpenVPN\config” necesitara privilegios de administrador. En el escritorio tendrá un nuevo acceso directo llamado OpenVPN ejecútelo con doble click, abajo a la derecha en la barra de tareas tendra u nuevo icono con un simbolo de candado en la parte derecha, presione con el boton derecho del raton sobre él y seleccione conectar, puede tener varias conexiones solo debe elegir la deseada.

Si todo ha ido correcto tras iniciar la conexión el simbolo del monitor pasará de amartillo a verde una vez conectado y ya tendrá acceso a su servidor mediante VPN. Para desconectar pulse sobre el icono del monitor de nuevo y seleccione desconectar.

Hasta aqui toda la configuración de OpenVPN ahora disfruten de su servidor.

07-Servidor de OpenVPN y configuración de clientes

Deja una respuesta