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.batVe 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.domainLo modificamos porset 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.batclean-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 conbuild-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.