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:
- Características de la maquina virtual.
- Instalación Sistema Operativo.
- Instalación de Webmin.
- Instalación de OpenVPN.
- Instalación de Easy-RSA necesaria para crear los certificados.
- Generación de certificados.
- Configuración Servidor OpenVPN.
- Configuración Clientes.
- Configuración Router y Firewall apertura de puertos.
- 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.