Introducción
A grandes rasgos, cuando nos conectamos a un servidor VPN, todo el trafico de datos que se genera entre nosotros y el servidor VPN irá encriptado a través de un túnel, da igual que estemos conectados dentro de nuestra casa que desde una red publica, todos los datos irán encriptados.Por ejemplo, si queremos consultar nuestro correo electrónico o acceder a nuestra red social favorita desde nuestro dispositivo ( teléfono, ordenador, tablet, etc. ) primero se conectará hasta el servidor VPN, que como he dicho antes se hará de una forma enccriptada, y el servidor VPN será el que nos dé el acceso a Internet, ya si encriptar, y nos devolvera la información solicitada otra vez a través del túnel encriptado.
Posibles usos
Te puedes preguntar “Vale ¿ y para que quiero yo esto?”, pues muy fácil, imagínate que estàs en el hotel disfrutando de tus vacaciones y el hotel tiene un red wifi publica, la cual quieres usar, pero claro, como vas a consultar tu correo o red social en una red publica, puede haber alguien husmeando el tráfico de esa red, y ya te puedes imaginar las consecuencias.Pero si disponemos de una VPN , podemos conectarnos tranquilamente a esa red publica, ya que nuestro trafico irá encriptado hasta nuestro servidor VPN, que en nuestro caso será nuestra rpi que esta en nuestra casa, parecerá que estamos navegando por internet desde nuestra casa, ya que es la VPN quien nos da el acceso a internet, la red wifi publica solo la usaremos para conectarnos de una forma segura hasta nuestra rpi.
También podemos usar una VPN para evitar bloqueos por geolocalización (podemos simular que estamos en Suiza utilizando una VPN que esté allí ), o tener varios dispositivos en diferentes sitios físicamente, y utilizando la misma VPN formaran parte de una misa red local, etc.
VPN desde cualquier lugar
Por defecto el servidor VPN de la rpi escuchará las peticiones de conexión por el puerto 4441 si es trafico UDP o 1194 si es TCP. por lo que deberemos redirigir todas las peticiones de ese puerto a la dirección IP de la rpi. Esto lo haremos dentro de la conflagración del router, como vimos en el articulo anterior.Evidentemente cuando estamos fuera de casa debemos de conocer la dirección IP publica de nuestro router para poder conectarnos a la VPN, el problema es que salvo que tengas una IP pública fija, es decir que siempre sea la misma, la mayoría de los proveedores de Internet utilizan IP dinámicas, cada cierto tiempo cambian la direccion IP asignada a nuestro router.
Para solucionar esto podemos darnos de alta en servicios como duckdns o noip, que mediante un nombre de dominio tipo micasa.duckdns.com nos permitirá acceder al router de nuestra casa sin necesidad saber su dirección IP, tal y como vimos en este otro artículo.
Ip fija para la rpi
Todo lo explicado en el paso anterior no servirá de nada si nuestra rpi no tiene una IP fija dentro de nuestra red local, ya que el router debe redirigir el trafico que le llegue al puerto que hemos configurado en el servidor VPN, hacia nuestra rpi que es la que hace de servidor VPN.Si la dirección IP de la rpi va cambiando, el router puede mandar las peticiones a otro equipo que no sea el servidor VPN, por ejemplo, si apagas la rpi, el router puede asignar esa IP que acaba de quedar libre a otro dispositivo que se conecte a nuestra red local, cuando volvamos a encender la rpi, el router le asignará otra dirección IP a la que tenia anteriormente porque ya está siendo utilizada por otro dispositivo.
Hay mucha gente que configura la rpi dándole un IP fija desde el sistema pero se pueden encontrar con el problema que acabo de explicar.
La mejor forma es asignar y reservar una dirección IP al la rpi desde el router.
Utilizando PiVPN para montar nuestra VPN
Tras esta pequeña introducción de lo que es una VPN, sus posibles usos, y preparación de la rpi, vamos a ver como crear nuestra propia VPN en la rpi.La forma mas fácil es utilizando el script PiVPN, que mediante la ayuda de una serie de pantallas que debemos ir rellenando nos permitirá crear de forma sencilla una VPN en cuestión de minutos.
Instalacion
Como siempre lo primero que debemos actualizar el sistema antes de comenzar con la instalación, nos conectamos mediante ssh a la rpi y actualizamos:sudo apt-get update && sudo apt-get upgrade -y
curl -L https://install.pivpn.io | bash
La siguiente pantalla nos avisa de que nuestro servidor VPN debería de tener una dirección IP fija, tal y como explique antes.
Nos pregunta si queremos usar la actual confguración de red como nuestra dirección IP fija.
Nos avisara que de que si no hemos reservado la dirección IP de la rpi en el router, es posible que el router le asigne dicha dirección IP a otro dispositivo, como explique párrafos atrás.
Nos informa de que deberemos elegir un usuario local de la rpi para la configuración del servidor.
En este caso vamos a utilizar el usuario que viene por defecto, aunque se puede utilizar cualquier otro, siempre y cuando no sea un administrador del sistema por motivos seguridad.
Nos informa que es recomendable activar las actualizaciones desatendidas y de que ademas de vez en cuando es bueno reiniciar el servidor para que estas actualizaciones se instalen completamente.
Ahora nos pregunta se queremos activar las actualizaciones desatendidas.
Al decirle que si, buscara si hay alguna actualización antes de continuar.
Debemos de elegir el protocolo que vamos a usar, en mi caso elijo UDP.
Elegimos el puerto por el que escuchara el servidor VPN, por defecto es el 1194, yo recomiendo cambiarlo, primero por seguridad y segundo porque hay sitios que bloquean el trafico hacia ese puerto ya que es el habitual en VPNs
Confirmamos el puerto
Elegimos el tamaño de la clave, seleccionamos la recomendada, 2048 bits.
Nos avisa de que se van generar la claves
Comienza la generación de claves, tardara un buen rato.
Una vez terminado el proceso de generación de claves, nos preguntará la forma en la que se acederá al servidor, bien mediante la IP publica que nos da nuestro proveedor de Internet, que normalmente suele cambiar con el problema de que el servidor sea inaccesible, o mediante un nombre de dominio, que seria la opción mas correcta.
Te recuerdo que en este articulo explico como instalar duckdns en la rpi. En el ejemplo elegimos usar un DNS publico
Introducimos nuestro DNS
Confirmamos los datos
Ahora seleccionamos el servidos de DNS de Internet que usará nuestra VPN, yo suelo utilizar las DNS de google.
Nos indica la forma de crear usuarios, la forma de obtener ayuda y la ruta del log de la instalación.
Para finalizar se nos recomienda reiniciar la rpi para terminar la instalación y nos pregunta si queremos reiniciar el sistema o seguir, reiniciamos.
Creacion de usuarios
Tras reiniciar deberemos crear los clientes que queremos que se conecten al servidor VPN.Lo haremos con el siguente comando
pivpn add
Enter a Name for the Client: carlos
Enter the password for the client:
Enter the password again to verify:
spawn ./easyrsa build-client-full carlos
Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
................................................................................................................................................+++
....................................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/carlos.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'carlos'
Certificate is to be certified until Jun 9 20:19:13 2027 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
Client's cert found: carlos.crt
Client's Private Key found: carlos.key
CA public Key found: ca.crt
tls-auth Private Key found: ta.key
========================================================
Done! carlos.ovpn successfully created!
carlos.ovpn was copied to:
/home/pi/ovpns
for easy transfer.
========================================================
Éste fichero es el que usará el cliente VPN para conectarse al servidor.
Este proceso lo deberemos hacer por cada nuevo usuario al que demos acceso al servidor.
Comentarios
Publicar un comentario