Crear una VPN con OpenVPN en Windows – Configuración Servidor

En esta entrada voy a enseñaros a crear una VPN en Windows utilizando la aplicación gratuita OpenVPN.

Requisitos

  • Ordenador con Windows 10 o Servidor con Windows Server 2016/2019.
  • Conexión a Internet para descargar OpenVPN.

Instalación de la aplicación

En primer lugar nos iremos a la página oficial de OpenVPN para descargar el instalador.

En el momento de escribir la entrada la última versión estable es la 2.49 por lo que procedemos a su descarga.

Una vez descargada ejecutamos el instalador y en las opciones seleccionamos todas las opciones tal y como se aprecia en la imagen.

Importante: Marcar la opción EasyRSA 2 Certificate Management Scripts ya que más adelante nos hará falta para la generación de los certificados.

Continuamos con el asistente hasta su finalización.

Configuración Inicial OpenVPN

Una vez instalado el siguiente paso es realizar la configuración del servidor OpenVPN, para ello:

  1. Abrimos una consola MD-DOS con permisos de administrador.
  2. Nos dirigimos al siguiente directorio cd «C:\Program Files\OpenVPN\easy-rsa»
  3. Ejecutamos init-config
C:\Windows\system32>cd "C:\Program Files\OpenVPN\easy-rsa"

C:\Program Files\OpenVPN\easy-rsa>init-config

C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
        1 archivo(s) copiado(s).

Editamos el fichero var.bat que podemos encontrar dentro de la ubicación «C:\Program Files\OpenVPN\easy-rsa» con el bloc de nota o el editor que solamos utilizar y modificamos las siguientes líneas con nuestra información. Os pongo un ejemplo para que veáis como quedaría.

set KEY_COUNTRY=ES
set KEY_PROVINCE=SE
set KEY_CITY=Sevilla
set [email protected]

Guardamos los cambios y en la consola MS-DOS que teníamos abierta ejecutamos el fichero vars.bat y a continuación el comando clean-all

C:\Program Files\OpenVPN\easy-rsa>vars.bat

C:\Program Files\OpenVPN\easy-rsa>clean-all
El sistema no puede encontrar el archivo especificado.
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).

Generación de claves y certificados del servidor

El siguiente paso es generar las claves y certificados que hará segura nuestra conexión VPN.

Nuevamente en la consola MS-DOS, y en el mismos directorio que nos encontramos (C:\Program Files\OpenVPN\easy-rsa), ejecutamos el comando build-ca para crear la entidad certificadora.

Dejamos los valores por defecto que previamente configuramos cuando editamos el fichero vars.bat excepto el parámetro Common Name donde pondremos el nombre completo de nuestro servidor.

C:\Program Files\OpenVPN\easy-rsa>build-ca
Can't load C:\Program Files\OpenVPN\easy-rsa/.rnd into RNG
4492:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=C:\Program Files\OpenVPN\easy-rsa/.rnd
Generating a RSA private key
.......++++
.......................................................................++++
writing new private key to 'keys\ca.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.
-----
Country Name (2 letter code) [ES]:
State or Province Name (full name) [SE]:
Locality Name (eg, city) [Sevilla]:
Organization Name (eg, company) [OpenVPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:servidor.tipstecnologicos.es
Name [changeme]:
Email Address [[email protected]]:

A continuación tenemos crear las claves para ello ejecutamos el comando build-key-server servidor

Nuevamente vamos pulsando Enter para dejar los valores por defecto excepto en el parámetro Common Name donde pondremos el nombre completo de nuestro servidor. En las 2 preguntas que nos hace al final, donde tenemos que responder y/n, pulsamos en y.

C:\Program Files\OpenVPN\easy-rsa>build-key-server servidor
Ignoring -days; not generating a certificate
Generating a RSA private key
..........................................................................................................................................................++++
................................................++++
writing new private key to 'keys\servidor.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.
-----
Country Name (2 letter code) [ES]:
State or Province Name (full name) [SE]:
Locality Name (eg, city) [Sevilla]:
Organization Name (eg, company) [OpenVPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:servidor.tipstecnologicos.es
Name [changeme]:
Email Address [[email protected]]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ES'
stateOrProvinceName   :PRINTABLE:'SE'
localityName          :PRINTABLE:'Sevilla'
organizationName      :PRINTABLE:'OpenVPN'
organizationalUnitName:PRINTABLE:'changeme'
commonName            :PRINTABLE:'servidor.tipstecnologicos.es'
name                  :PRINTABLE:'changeme'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Sep 20 14:39:12 2030 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Por último vamos a generar la encriptación ejecutando el comando build-dh

C:\Program Files\OpenVPN\easy-rsa>build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
...................................................................................................+..........................................+.....................................................+......................................................+...........+.............+..............................................................................................................................................................................................+....+......................+.....................................................................................................................................................................................................................................................................................+.............+.................................................................................................................+..........+.....................................................................................................+.............................................................................................................................................+..+............+.................................................................+.......+.+..................................................................................................+......................+........................++*++*++*++*

Configuración final OpenVPN

Para finalizar con la configuración del servidor copiaremos el fichero server.ovpn que podemos encontrar en la ruta C:\Program Files\OpenVPN\sample-config a la ruta C:\Program Files\OpenVPN\config

C:\Program Files\OpenVPN\easy-rsa>copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config"
        1 archivo(s) copiado(s).

Ejecutamos el comando openvpn –genkey –secret ta.key

C:\Program Files\OpenVPN\easy-rsa>openvpn --genkey --secret ta.key

C:\Program Files\OpenVPN\easy-rsa>

Copiamos los ficheros ca.crt, dh2048.pem, servidor.crt, servidor.key y ta.key que se encuentra en la ubicación C:\Program Files\OpenVPN\easy-rsa\keys a C:\Program Files\OpenVPN\config. En la ubicación de destino deberían quedarnos los siguientes ficheros:

Editamos el fichero server.ovpn que hemos copiado (te recomiendo utilizar la aplicación Notepad ++ o similar ya que el bloc de notas de Windows descolocará todo el formato).

Realizaremos siguientes cambios:

Ponemos el túnel en modo tap, para ellos descomentamos la línea dev tap y comentamos o borramos la línea dev tun.
dev tap ->Descomentar
;dev tun ->Comentar

Indicaremos a OpenVPN la IP por la que tiene que escuchar, esto es especialmente útil si en el servidor disponemos de más de una tarjeta de red, en caso de no ser así no es necesario cambiar este parámetro.
Cambiamos
local a.b.c.d
por
local IP_Servidor

Modificamos el siguiente bloque:
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

Por lo siguiente:
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" 
cert "C:\\Program Files\\OpenVPN\\config\\servidor.crt" 
key "C:\\Program Files\\OpenVPN\\config\\servidor.key"

Modificar:
dh dh2048.pem
por:
dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"

Modificar:
server 10.8.0.0 255.255.255.0
por la red que utilizará nuestra VPN (no tiene que ser la misma red que la del equipo sino que puede valer cualquiera)
server 192.168.200.0 255.255.255.0

Guardamos el fichero

Apertura de Firewall

Abrir el puerto 1194 UDP en el Firewall de Windows o en el que utilicemos en el equipo para permitir el tráfico de la VPN.

Redirección puerto 1194 UDP en el router de internet

En el router de internet tenemos que redireccionar todas las peticiones que lleguen al puerto 1194 UDP a la dirección IP privada del PC/Servidor donde hemos instalado OpenVPN.

Iniciar servicio OpenVPN

Cambiamos el tipo de inicio el servicio OpenVPNService para cambiar el tipo de inicio a Automático y lo iniciamos.

Y listo ya tenemos nuestro servidor OpenVPN preparado para recibir peticiones de conexión. En la próxima entrada os explicaré como realizar la instalación y configuración de los clientes.

Espero os haya sido de utilidad.

Entradas relacionadas

3 comentarios en «Crear una VPN con OpenVPN en Windows – Configuración Servidor»

  1. Buen día Sergio os esperando que te encuentres de lo mejor, igual que siempre leyéndote con los aportes que vos tienes, muy buenos.

    mira que he seguido los pasos, pero en la parte de identidad certificadora me manda un mensaje de error, ojala que podéis ayudarme.

    Microsoft Windows [Versión 10.0.17763.1518]
    (c) 2018 Microsoft Corporation. Todos los derechos reservados.

    C:\Windows\system32>cd C:\Program Files\OpenVPN\easy-rsa

    C:\Program Files\OpenVPN\easy-rsa>init-config

    C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
    1 archivo(s) copiado(s).

    C:\Program Files\OpenVPN\easy-rsa>vars.bat

    C:\Program Files\OpenVPN\easy-rsa>clean-all
    El sistema no puede encontrar el archivo especificado.
    1 archivo(s) copiado(s).
    1 archivo(s) copiado(s).

    C:\Program Files\OpenVPN\easy-rsa>build-ca
    req: Error on line 123 of config file «openssl-1.0.0.cnf»
    4580:error:0E065068:configuration file routines:str_copy:variable has no value:crypto/conf/conf_def.c:622:line 123

    C:\Program Files\OpenVPN\easy-rsa>

    Responder
    • Hola José Manuel,

      Para poder intentar ayudarte necesitaría saber el contenido de la línea 123 del fichero openssl-1.0.0.cnf

      Saludos.

      Responder
  2. Que tal Sergio

    Encontre tu tutorial, todo muy bien explicado, hasta ahora 2 servidores con OpenVPN trabajando de manera correcta.

    Saludos.

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.