en Podcast

Tener una VPN siempre es bueno, es bueno porque os permitirá navegar por wifis públicas con una garantía, es bueno porque dispondréis siempre que lo necesitéis de una IP fíja para acceder a servicios especiales.

Pero realmente lo bueno no es tener una VPN, es que tengáis vuestra propia VPN en vuestro propio servidor, sólo de esta forma tendréis un control adecuado y total.

Muchas veces vemos aplicaciones que nos ofrecen una VPN para no exponer nuestros datos, pero ¿quien nos da esas VPNs?, ¿podemos confiar?, como os he comentado hace unos segundos, lo mejor es crear vuestra propia VPN.

En el programa de hoy vamos a hablar de OpenVPN, una de las opciones de VPN más extendidas, voy a mostraros como configurar un servidor con OpenVPN y como conectaros desde vuestro PC o teléfono y usar esa VPN.

Para crear vuestra propia VPN vais a necesitar un servidor en un CPD, lo optimo será un cloud, pues es lo más barato, si es que sólo vais a utilizar ese servidor para OpenVPN. Obviamente si estamos hablando de 10.000 usuarios tendremos que escalar la solución.

En mi caso para este ejercicio he desplegado un servidor con Ubuntu, aunque podría ser cualquier cosa.

Lo primero será instalar openvpn y easy-rsa tras actualizar la base de datos de paquetes y actualizar el sistema.

Una vez instalado el software tendremos que generar nuestros certificados. Lo primero será crear las plantillas, esto lo haremos creando un directorio con ellas usando el comando make-cadir en el directorio openvpn-ca, aunque puede llevar cualquier otro nombre.

Realmente make-cadir lo que hace es crear un directorio con enlaces simbólicos a /usr/share/easy-rsa/, no hace otra magia, hay gente que prefiere trabajar directamente en ese directorio, realmente es lo mismo.

Otra cosa extra que podemos hacer además de crear ese directorio es modificar el fichero vars para que los datos por defecto sean los nuestros, eso es cambiando estas líneas:

Por estas, o similares, las que correspondan:

Una vez creada la plantilla vamos a proceder a crear el CA

Y ya tenemos nuestro CA creado dentro de nuestro directorio keys.

Ahora procedemos a generar el certificado del servidor, también una llave Diffie-Hellman para el intercambio de llaves y generamos la firma HMAC para verificar el TLS del servidor:

En el directorio openvpn-ca/keys tendremos los siguientes ficheros:

Si os parece vamos a proceder a generar certificados para los clientes, los cuales los haremos todos de la misma manera:

El proceso completo será el siguiente:

Al llegar aquí ya tendremos todos los certificados generados y sólo nos quedará configurar tanto la parte servidor como la del cliente, así que vamos a por ello.

La parte servidor se configurará en el directorio /etc/openvpn/ donde copiaremos ca.crt, ca.key, server.crt, server.key, ta.key y dh2048.pem quedando así:

Ahora vamos a proceder a configuar el fichero de configuración creando /etc/openvpn/server.conf.

El fichero debería de quedar como este:

Con esto ya tendremos configurado nuestro openvpn, ahora nos quedará simplemente permitir que nuestro servidor haga forwarding, y para eso modificaremos el fichero /etc/sysctl.conf y descomentaremos la línea

Le quitaremos el numeral y recargaremos con

Escribir un comentario

Comentario

  1. Hola Eduardo,

    He configurado OpenVPN en mi raspberryPi utilizando Webmin. Consigo que conecte pero tengo el problema de que en mi router de internet no puedo definir rutas para otras redes diferentes a las de la LAN. Esto me obliga a utilizar NAT.

    Lo he intentado configurar pero no consigo acceder a Internet. Al servidor VPN sí que llego con un ping. A ver si puedes hablar en algún capítulo sobre IP masquerade.

    Un abrazo

    • Pues es un buen tema, me lo anoto y lo preparo, mientras, en tu Rasberry PI.

      Mientras tando (espero que te sirva) te copio la configuración del NAT que yo uso en casa, tienes que cambiar red_privada_que_quieres_natear por tu red tipo 192.168.14.0/24 y el interfaz_de_salida por el interfaz tipo eth0 o lo que tengas.

      iptables -t nat -A POSTROUTING -s red_privada_que_quieres_natear -o interfaz_de_salida -j MASQUERADE

      Y luego (aunque esto seguramente ya lo tengas)

      echo 1 > /proc/sys/net/ipv4/ip_forward