Cómo crear una VPN con OpenVPN en Windows. Parte 1: Servidor

Hace unos días nos han encargado realizar una VPN en un Windows Server 2008 R2. Como los usuarios podían no ser todos Windows (y también para probar), decidimos no usar la VPN de Windows y crearla con OpenVPN.
Os dejamos los pasos.
Puedes seguir el proceso en inglés también aquí. Y este vídeo está muy bien para ver los pasos (yo he hecho modificaciones al proceso, cuidado).

Configurar el servidor.

Primero hay que configurar el servidor al que se van a conectar los clientes, donde están las carpetas que queremos ver. En nuestro caso el Windows Server 2008, pero puede ser cualquier otro Windows (evidentemente mejor el servidor).

Instalar el programa OpenVPN en el servidor.

Vamos a descargarnos el programa de OpenVPN (es el mismo para servidor y para cliente). Puedes hacerlo aquí (la versión community es la gratuita). El programa más sencillo a descargar es el Windows Installer.
Descargamos el instalador, lo ejecutamos y damos a todas las opciones que si marcando la casilla de EasyRSA 2 Certificate…. (la necesitas para generar los certificados).


Cuando te pida instalar el adaptador TAP di que si y marca la opción de confiar en el fabricante.

Abre un terminal (cmd) y ve a la carpeta C:\Program Files\OpenVPN\easy-rsa  
Pon init-config y pulsa Enter.
Después hace copy vars.bat.sample a vars.bat


Edita el fichero creado con notepad vars.bat
Ve a las líneas siguientes y modifica la información con tus datos. Voy a poner unos de ejemplo:

set KEY_COUNTRY=US 
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@host.domain

Lo modificamos por

set KEY_COUNTRY=ES
set KEY_PROVINCE=MD
set KEY_CITY=Madrid
set KEY_ORG=TUEMPRESA (tb puedes dejarlo como OPenVPN)
set KEY_EMAIL=tucorreo@tucorreo.com

Guarda el fichero y ejecuta (Enter después de cada comando):
vars.bat
clean-all



Generar las claves y certificados del servidor.

  • Ahora vamos a generar las claves y certificados que necesita el servidor. En la misma carpeta de Easy-rsa ejecutamos el comando para crear la entidad certificadora:
    build-ca

Va a preguntar unos valores pero son los anteriores que has puesto en el fichero. Así que con que des a Enter se quedan esos valores.
Salvo cuando pregunte: Common Name (eg, your name or your server’s hostname) [] que yo suelo poner el nombre completo del servidor (aunque OpenVPN lo deja como OpenVPN-CA).

  • Creemos las claves con:
    build-key-server server

Vuelve a preguntar los mismos datos, das como antes a Enter salvo cuando pregunte «Common Name» pones server. Responde y a las dos preguntas y ya está.

  • Ahora genera la encriptación con
    build-dh

Configuración del servidor.

  • Ahora copia el fichero server.ovpn de la carpeta C:\Program Files\OpenVPN\sample-config al directorio C:\Program Files\OpenVPN\config
  • Edita el fichero server.ovpn. Recomiendo Notepad++ o, en Windows Server, Wordpad («abrir con», elegir programa, Wordpad). No uses notepad, te va a descolocar las líneas.

Vamos a modificar las siguientes secciones:

  • Poner el túnel como dev tap. No hace falta hacer la parte de Bridge (puente) en los interfaz de red que dice el vídeo mencionado arriba. Pero por lo que leo tap admite más protocolos que tun (aunque tun requiere menos recursos). Tu elijes, nosotros usamos tap pero sin modo bridge.
  • Donde pone:
ca ca.crt 
cert server.crt
key server.key

Pon:

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\server.crt" key "C:\\Program Files\\OpenVPN\\config\\server.key"
  • Donde pone: dh dh1024.pem pon: dh «C:\\Program Files\\OpenVPN\\config\\dh2048.pem»

Nota: en la generación de mis certificados me creó el fichero dh2048.pem en
C:\Program Files\OpenVPN\easy-rsa\ La cifra puede variar y podéis tener dh4096.pem, verifícalo.

  • Donde pone server 10.8.0.0 255.255.255.0 elije la red de tu VPN. Puedes poner cualquier red privada pero te recomiendo que no uses las de telefónica típicas (192.168.1.X ni 192.168.0.X). Yo suelo usar las 10, como la que viene en el fichero por ejemplo, o 192.168.2.X, 192.168.3.X etc). También, por lo tanto, puedes dejar la red que viene por defecto. Esto quiere decir que tu servidor VPN tendrá IP de VPN 10.8.0.1 y tus clientes tendrán la 10.8.0.X (según la máscara que elijas).
  • Verifica que la línea tls-auth ta.key 0 pone 0 en el servidor. Quita lo de # This file is kept secret de detrás. En los clientes tiene que ser: tls-auth ta.key 1.
  • Salva el fichero.
  • Copia los ficheros de clave. Ve a C:\Program Files\OpenVPN\easy-rsa\ y copia los ficheros siguientes a C:\Program Files\OpenVPN\config\
ca.crt 
dh1024.pem
server.crt
server.key
server.ovpn
  • En la misma carpeta easy-rsa pon openvpn –genkey –secret ta.key  y copia ese fichero también a la carpeta C:\Program Files\OpenVPN\config\

El servidor ya está. Sólo tendrías que abrir el puerto 1194 UDP en el router apuntando a la IP (fija) de tu servidor. Recomiendo también abrir el firewall de Windows, si está activado, para ese puerto.

Si tienes IP dinámica tendrás que activar un servicio de DNS dinámicon tipo DYNDNS.

Puedes probar a ejecutar el icono de OpenVPN que te ha creado en el escritorio y darle botón derecho>Connect para que se empieze a ejecutar el servidor VPN.

Si todo va bien está preparado para recibir llamadas. Queda configurar a los clientes (en otro artículo).

Nota: si quieres que los clientes remotos vean los clientes de la oficina tienes que activar la opción client-to-client en el fichero de configuración del servidor.
Nota2: si quieres dirigir todo el tráfico del cliente por la VPN activa la opción push «redirect-gateway def1 bypass-dhcp» en el fichero de configuración del servidor.

Nosotros encontramos un error en Windows Server 2008 R2, que al arrancar la primera vez funcionaba, pero si reiniciábamos la GUI el TAP no cogía IP en Windows (OpenVPN decía que si). Y no sabía enrutar. Lo arreglamos instalando OpenVPN como servicio (otro artículo) y, si ocurre (que no debería al ser un servicio) con desactivar el TAP un momento y volver a activarlo cogía IP de nuevo.

6 pensamientos en “Cómo crear una VPN con OpenVPN en Windows. Parte 1: Servidor

  1. Jordi

    Hola muchas gracias por la información me podríais ayudar con este problema:
    he configurado el servidor y el cliente y conectan, pero no se ven cuando lanzo ping ni un terminal
    el servidor tiene la ip 192.168.10.1 gate 192.168.10.100
    servidor VPN server 10.8.0.0 255.255.255.0
    la opción client-to-client esta sin el ;

    gracias por todo

  2. Jordi

    Hola he deshabilitado la tarjeta en el servidor tab y la he vuelto a habilitar y he conectado el servidor ya funciona el ping, me gustaría poder hacer un ping desde el cliente que tiene la ip 10.8.0.x al servidor 192.168.10.1
    tengo habilitado esta opcion el la configuracion del servidor vpn
    push «route 192.168.10.0 255.255.255.0»

    1. David G. Smyth (SmythSys) Autor

      Push route hace que el servidor «anuncie» esa red al cliente. Pero no tiene por qué hacer ping. Tienes que ver primero a) si se está de verdad publicando las rutas. Puedes ver las rutas en el cliente con un comando de Windows.
      Después tienes que ver si, una vez sabe llegar, el ping está habilitado o deshabilitado. Y si hace ping a otras máquinas.

      1. David G. Smyth (SmythSys) Autor

        Por cierto, si la LAN del cliente (no la IP de VPN) es también 192.168.10.X te va a dar problemas.

  3. Duntari

    Using this settings on Windows 10 :
    Start -> Right-click My Computer -> Manage
    Services
    Right-click Routing and Remote Access -> Properties -> Automatic Right-click Routing and Remote Access -> Start
    Next:
    Control Panel
    Network and Sharing Center
    Local Area Connection
    Properties
    Sharing
    Tick the box «Allow other network users to connect through this computer’s Internet connection» From the drop-down list select «Local Area Connection 2», or whatever is the connection name of your TAP server connection.
    regedit
    Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Value: IPEnableRouter
    Type: REG_DWORD
    Data: 0x00000001 (1)
    Buenas, indicar que si quieres que todo el tráfico vaya por la vpn edites el archivo del servidor indicando las DNS que tiene que usar. Sintu windows no tiene servidor dns usa las de google por ejemplo.
    Para que funcione en windows 10, hay que modificar unas cosas para que permita el enrutamiento de los datos del cliente:

    Si no haceis esto en el servidor no sereis capaces de hacer que funcione el “redirect-gateway”

    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).

Time limit is exhausted. Please reload CAPTCHA.