SmythSys IT Consulting

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

Nota: este artículo es válido hasta OpenVPN v. 2.3.x. que vienen con easy-rsa 2. A partir de OpenVPN v 2.4.x la generación de certificados se hace con Easy-rsa 3 y el proceso es diferente.

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).

Instalar y 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 haz copy vars.bat.sample 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 final 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 o tun (ver aquí). 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 salvo cuando la red del servidor coincide con la del cliente remoto. Entonces tun.
  • Donde pone:
ca ca.crt 
cert server.crt
key server.key

Pon (las dobles contrabarras y las comillas son importantes):

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\keys\ 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.

Tenéis la parte de la configuración de clientes en este artículo.

43 comentarios en «Cómo crear una VPN con OpenVPN en Windows. Parte 1: Servidor»

  1. 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

    Responder
  2. 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”

    Responder
    • 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.

      Responder
  3. 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

    Responder
  4. Hola,
    Tengo una duda. Yo tengo el servidor en una red remota (192.168.1.0/24) el servidor tiene la IP 210 de esa red. Cuando levanto el VPN, segun el archivo de configuración se puede poner qué subred usar para la VP, por defecto viene la 10.8.0.0/24, con esta red si que me conecta cliente-servidor, pero claro no puedo ver nada de los recursos de mi red remota original la 192.168.1.0/24.
    He probado con el puente de interficies en el servidor y nada, con los dos parámetros del fichero que decís al final y tampoco.
    ¿Qué debería hacer?
    Gracias

    Responder
    • Conectar la red de la VPN en la típica de los operadores no es buena idea. Se puede arreglar, nosotros lo hemos hecho en algún cliente, con rutas. Pero luego nos ha costado hacerlo.
      Lo mejor es que la red del servidor sea diferente (porque la de los clientes puede variar).

      Responder
  5. Y qué debo hacer para que cuando se conecte el cliente VPN le dé una dirección de la red que tengo yo que es la 192.168.1.0/24?? no puedo cambiar todas las direcciones todos…

    Responder
    • A ver aquí hay 3 redes.
      1) Red de la oficina donde esté la VPN. No debería estar en las que dan las operadoras 192.168.1.X o 192.168.0.X. Si no se puede cambiar ver abajo.
      2) Red del usuario. No puedes controlarla.
      3) Red de la VPN. Suele ponerla el sistema en una red totalmente diferente, sólo sirve de puente.
      El problema surge cuando el 1 y el 3 coinciden. Porque el ordenador en 3, si recibe orden de mandar a la (pongamos que es la del servidor remoto) 192.168.1.200 (suponemos que la de la 3 es 192.168.1.X), al ser de su red la mantiene en su LAN. Si fueran diferentes redes la 1 y la 3 no tiene duda sobre por dónde mandar la petición.
      Si no puedes cambiarlo (repito que te va a ahorrar mucha guerra), lo que tienes que hacer es poner rutas estáticas en la configuración de la VPN para que las IPs en 1 vayan por la interfaz de la VPN. Anunciar que tiene que meterlas por ahí. Cómo hacerlo depende de cada versión de OpenVPN. No puedo decírtelo pero ya te digo que lo hemos conseguido….peleando mucho cada vez que nos toca hacerlo.

      Responder
  6. Hola
    Si creo una partida local tanto de cs o battlefield 2, el que esta conectado por vpn, las puede visualizar?

    Me viene pasando que con la vpn de windows esto no sucede y solo puede ingresar al servidor si ingresa la ip manualmente (caso cs 1.6)

    Responder
    • Que ponga la IP en el archivo hosts durante la partida. Luego lo puede quitar. El problema que dices es de red, te va a pasar igual.

      Responder
  7. En primer lugar, gracias por el tutorial, es de lo más claro que he encontrado. A mí me ha aparecido un problema que seguro es una tontería, pero no logro pasar de ahí. Al intentar generar las claves me dice “openssl” no se reconoce como un comando interno o externo. No sé cómo pasar de ahí, porque intuyo que no logra llegar al openssl de la carpeta bin, pero no sé cómo hacer que lo haga. Si me puedes contestar te lo agradecería. Un saludo.

    Responder
    • Eso es que no se ha instalado bien y no ha añadido la ruta al path. Dos soluciones, ejecuta los comandos desde donde está el ejecutable de openssl y luego mueve los ficheros (un poco lioso), o añade la ruta del openssl al path de linux.

      Responder
  8. Hey corrige la linea de comando para la generacion del archivo “ta.key”, es openvpn –genkey –secret ta.key. Con doble guion.

    Cordial saludo desde Colombia!!!

    Responder
        • Estaba con doble guión desde un principio (obviamente si no no me hubiera generado los keys a mi). Pero WordPress los estaba juntando.
          Los he puesto como código y ya lo muestra, gracias por hacérnoslo saber.

          Responder
  9. Buenas tardes.

    Tengo una duda

    Donde pone 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\

    No encuentro ningún fichero que se llame así, podéis ayudarme?

    Gracias!

    Responder
    • Hola, no te lo genera porque en la (version openvpn-install-2.4.8-I602-Win10) la ruta es:

      C:\Program Files\OpenVPN\bin>openvpn –genkey –secret ta.key

      …y copia ese fichero también a la carpeta C:\Program Files\OpenVPN\config\

      Responder
  10. Hola, Buenas Tardes.

    Muchas gracoias por este tutorial paso a paso.

    Lo he seguido, en una maquina con windows server 2012 R2 y todo ha sido textual a la guia, salvo que no me ha creado los archivos server.crt ni server.key.

    Gracias de antemano

    Bernardo

    Responder
  11. hola!! por alguna razon no se me generar el archivo “ta.key” voy a la ubicacion en cmd con permisos de administrador pero no me funciona ¿que podria ser?

    openvpn –genkey –secret ta.key (doble guion)

    Responder
    • Hola, no te lo genera porque en la (version openvpn-install-2.4.8-I602-Win10) la ruta es:

      C:\Program Files\OpenVPN\bin>openvpn –genkey –secret ta.key

      …y copia ese fichero también a la carpeta C:\Program Files\OpenVPN\config\

      Responder
  12. Hola, David no se si te paso o les paso que cuando se instala el openvpn en win7 el TAP no se instala correctamente, sino que figura como que la firma digital no pudo ser chequeada y despues de probar lo basico para que no las chequee como deshabiltar dicho chequeo en ejecutar y bcdedit /set nointegritychecks ON >reiniciar ordenador y luego proceder a instalar sigue de la misma manera, algun iluminado que haya podido dar con el solucion exacta?????

    Responder
    • No nos ha pasado. Pero si tienes Windows 7 recomiendo que actualices a Windows 10. Todavía es gratis (aunque diga Microsoft que no).

      Responder
  13. Respondo la solucion por si alguno le paso, para win7 con la version de openvpn 2.6 el tap se instala perfecto y no tira el error de la firma digital.

    David te habia consultado anteriormente si sabes en que parte del server.conf ver el tema de alcanzar las pc de la LAN detras del openvpn server, ya que a la pc donde esta instalado el openvpn puedo ingresar poniendo en el “push” la red y la mascara de la LAN y descomenrando el client-to-client, pero sigo buscando y leyendo que mas puedo agregar para poder ver las otras pc en la red privada de esa LAN donde esta el openvpn server.

    Responder
    • Lucas…si puedes acceder a un equipo puedes acceder a todos.Si tienes la misma red en ambos sitios, el problema es que SIEMPRE va a intentar mandarlo por la LAN primero a menos que hagas un push manual de cada uno manualmente. Las redes funcionan así, y es por lo que no es buena idea tener 2 LANs con la mis IP.

      Responder
  14. David, donde tengo el openvpn client mi red es 192.168.0.0/24 y la Lan donde esta el openvpn server es 10.85.158.0/24, mientras que el tunel de la red del openVPN es la 10.8.0.0/24, no tendria problemas de conflicto, solo puedo acceder a la pc del openvpn server desde mi pc poniendo \\10.8.0.1 u o el nombre \\hostdelopenvpnserver, pero si quiero poner la ip de su lan que es la 10.85.158.91 no me deja, es raro y no puedo dar con la solucion aunque sigo investigando.

    Responder
  15. buenas tardes, tengo montado un servidor openvpn en windows 10, el cliente me conecta perfectamente, realizo ping a la ip 10.8.0.1, me conecto por escritorio remoto a la ip privada del servidor 192.168.9.100, pero si tengo activado el firewall no realizo ping ni accedo a los recursos compartidos, tengo otra maquina con windows 7 cuya ip es la 192.168.9.101, en la cual hay archivos compartivos, como tengo publicada la ruta accedo también si tengo el firewall desactivado accedo a dichos recursos, pero si lo activo no. Cual sería la regla especifica que podría crear en el firewall entrante para permitir dicha conexión y dejar el firewall activado.

    Responder
  16. Gracias por el manual, tal cual lo hice y funciona muy bien con varios usuarios recurrentes
    Lo que no logre fue vincular varios servidor para que sean vistos por mis usuarios, la manera que lo hice fue vincular los servidores como clientes también al servidor principal a nivel interno para no exponerlos a Internet.

    Me gustaría saber si hay alguna manera sin tener que ponerlos como clientes y si no hay manera, por lo menos se les puede asignar una IP fija, no se si con el tiempo que se re conecten como cliente cambien la IP ?

    Muchas gracias por ese gran aporte

    Responder
    • Puedes apuntar cualquier ruta a cualquier IP por la VPN. Pero si un servidor actúa como servidor VPN, todo lo demás de esa red son peers.

      Responder
  17. Hola. No sé porque, pero me he he atascado a las primeras de cambio. He instalado el OpenVPN con última versión a día 19.11.2020. Abro el cmd como administrador, pone cd C:\Program Files\OpenVPN\easy-rsa, me abre bien, pero cuando ejecuto el primer comando init-config, me dice que no se reconoce como un comando interno o externo… Porqué puede ser? entiendo que estoy en el directorio correcto, pero me da ese error. Gracias

    Responder
  18. Mi idea es conectar hacer una simple prueba de conexion entre el ordenador de la oficina de la empresa de donde trabajo y el personal de casa. AMBOS USAN RED DE OPERADOR TELEFONICO.

    La configuración completa del servidor en principio lo he echo todo menos abrir el puerto 1194 ya que no dispongo por ahora de las credenciales, y he mirado la configuración del cliente para realizarla cuando tenga el pc disponible. Su red es 192.198.1.0/24 y al ordenador le he asignado IP fija 192.168.1.100. En linea de server la mantengo igual (server 10.8.0.0 255.255.255.0). La otra red creo que es 192.168.0.0/24 pero no lo recuerdo, lo tengo que comprobar cuando tenga el pc disponible.

    Suponiendo que si pudiera haber echo ya el paso de los puertos en el router de la oficina que dispongo para internet y hubiera configurado tambien el cliente, y suponiendo que la otra red fuera la de 192.168.0.0/24(no coincide con la de la oficina) conectarían o dará problemas? ¿Y si la red coincidiera? O directamente con lo que dispongo no podre conectar con OpenVPN.

    Todo esto lo pregunto por los comentarios de arriba que al final no tengo claro si el problema que mencionas arriba es que la red VPN no debe ser como la del operador telefonico(que ya lo mencionas) o es que ademas las otras dos redes no pueden coincidir y por ello la router del servidor debe no ser de operador telefonico.

    Responder
    • El mayor problema que dan las VPN es que estén en la misma red (porque no entiende por qué tiene que irse fuera de la LAN si la dirección es de la misma red).
      Si tiene dos redes lo único otro que te puede dar problemas es un firewall o los puertos.

      Responder
  19. Creo que las últimas versiones de OpenVPN ya no llevan init-config (que crea vars.bat) porque ya puedes editar directamente y ejecutar vars.bat

    Responder
    • Si….OpenVPN ha cambiado la parte de certificados. Estoy pendiente de realizar alguna instalación para crear otro artículo.

      Responder

Deja un comentario

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).