{"id":19064,"date":"2018-08-28T01:00:24","date_gmt":"2018-08-27T23:00:24","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=19064"},"modified":"2020-09-01T13:18:53","modified_gmt":"2020-09-01T11:18:53","slug":"vpn-raspberry","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/vpn-raspberry\/","title":{"rendered":"Raspberry Pi VPN"},"content":{"rendered":"

Vamos a crear un servidor VPN en una Raspberry Pi<\/strong> gracias al proyecto Pi VPN<\/em>, que usa el software openVPN<\/strong>, y por medio de un protocolo personalizado, hace uso de SSL<\/em><\/strong>\/TLS<\/em><\/strong> para intercambios de claves.<\/h2>\n

 
\n\"\"<\/p>\n

 <\/p>\n

\u00bfQu\u00e9 es una VPN?<\/span><\/h3>\n

 <\/p>\n

Una VPN<\/a> es una red privada virtual que nos permite establecer un t\u00fanel entre nuestra red y otra.\u00a0nos permite interconectar redes que se encuentran geogr\u00e1ficamente separadas.
\nPara que funciona una VPN hace falta (al menos) un servidor y un cliente VPN que se conectar\u00e1 a ese servidor a trav\u00e9s de Internet.
\nPuede utilizar diversos protocolos entre ellos podemos encontrar\u00a0IPSEC<\/em><\/strong> (el tradicional), PPTP<\/em><\/strong>, SSL<\/em><\/strong> …<\/p>\n

Y el software OpenVPN<\/strong>, que utiliza sobre todo los protocolos\u00a0OpenSSL<\/em> y TLS<\/em>, permite configurar una VPN<\/strong> de una forma muy sencilla con una Raspberry Pi<\/strong>.<\/p>\n

 
\n\"\"<\/p>\n

Enlace a Pi VPN Project\u00a0\u00a0<\/a><\/p>\n

 <\/p>\n

 <\/p>\n

 <\/p>\n

Comenzando: Crear una VPN en Raspberry Pi<\/strong>, con PiVPN<\/strong><\/span><\/h3>\n

 
\nInstalamos pivpn<\/strong><\/em> en nuestra raspberry con:<\/p>\n

curl -L https:\/\/install.pivpn.io | bash<\/pre>\n

 <\/p>\n

\"\"<\/p>\n

 
\n 
\nEs necesario que el sistema se encuentre actualizado, as\u00ed que si no hemos lanzado un<\/p>\n

apt-get update<\/pre>\n

y un<\/p>\n

apt-get upgrade<\/pre>\n

Ptimero se realizar\u00e1 la actualizaci\u00f3n\u00a0 del sistema (previa a la instalaci\u00f3n de pivpn<\/strong><\/em>):<\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Comienza la instalaci\u00f3n y configuraci\u00f3n de PIVPN<\/strong><\/em> (This installer will transform your Raspberry Pi into an OpenVPN server!<\/em>)<\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Pivpn nos avisa de que es necesaria una IP est\u00e1tica en nuestro servidor OpenVPN (nuestra Raspberry):<\/p>\n

Static IP Needed<\/em><\/p>\n

The PiVPN is a SERVER so it needs a STATIC IP ADDRESS to function properly.<\/em><\/p>\n

In the next section, you can choose to use your current network settings (DHCP) or to manually edit them.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Ahora hemos de elegir una Interfaz de red:<\/p>\n

Choose an Interface<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Confirmaci\u00f3n de nuestra interfaz\/direcci\u00f3n de red y puerta de enlace<\/p>\n

Do you want to use your current network settings as a static address?<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Aviso de posible conflicto si el router asigna la misma IP<\/p>\n

It is possible your router could still try to assign this IP to a device, which would cause a conflict.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Selecci\u00f3n de usuario local con el que utilizar la configuraci\u00f3n del archivo .ovpn<\/p>\n

Choose a local user that will hold your ovpn configurations.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Seleccionar el usuario, en este caso solo tenemos uno:<\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Aviso de actualizaciones desatendidas:<\/p>\n

Since this server will have at least one port open to the internet, it is recommended you enable unattended-upgrades.<\/em><\/p>\n

This feature will check daily for security package updates only and apply them when necessary.<\/em><\/p>\n

It will NOT automatically reboot the server so to fully apply some updates you should periodically reboot.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Confirmaci\u00f3n de si activamos o no las actualizaciones desatendidas<\/p>\n

Do you want to enable unattended upgrades of security patches to this server?<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Cloning into \/etc\/pivpn<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Elegir protocolo TCP o UDP<\/p>\n

Choose a protocol. Please only choose TCP if you know why you need TCP.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

You can modify the default OpenVPN port.<\/em><\/p>\n

Enter a new value or hit ‘Enter’ to retain the default<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Confirmaci\u00f3n de puerto para VPN elegido:<\/p>\n

\"pivpn-confirmacion
\n <\/p>\n

 <\/p>\n

Seleccionar nivel de encriptaci\u00f3n<\/p>\n

Choose your desired level of encryption (press space to select):\\n This is an encryption key that will be generated on your system. The larger the key, the more time this will take. For most applications, it is recommended to use 2048 bits. If you are testing, you can use 1024 bits to speed things up, but do not use this for normal use! If you are paranoid about … things… then grab a cup of joe and pick 4096 bits.<\/em><\/p>\n

“Use 1024-bit encryption (testing only)” OFF \\ “2048” “<\/em><\/p>\n

Use 2048-bit encryption (recommended level)” ON \\ “4096” “<\/em><\/p>\n

Use 4096-bit encryption (paranoid level)<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

The server key, Diffie-Hellman key, and HMAC key will now be generated.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

PiVPN mejoras version 2.4<\/p>\n

OpenVPN 2.4 brings support for stronger key exchange using Elliptic Curves and encrypted control channel, along with faster LZ4 compression. If your clients do run OpenVPN 2.4 or later you can enable these features, otherwise choose ‘No’ for best compatibility.<\/span><\/em><\/p>\n

NOTE: Current mobile app, that is OpenVPN connect, is supported.<\/span><\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Generando clave<\/p>\n

using Easy-RSA configuration from: .\/vars<\/em><\/p>\n

Generating DM parameters, 2048 bit long safe prime, generator:<\/em><\/p>\n

This is going to take a long time<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Seleccionar entre IP o nombre DNS<\/p>\n

Will clients use a Public IP or DNS Name to connect to your server (press space to select)<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Seleccionar proveedor DNS (seleccionamos Google por defecto):<\/p>\n

Select the DNS Provider for your VPN Clients (press space to select). To use your own, select Custom.<\/em><\/p>\n

 <\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Instalacion completa, falta generar perfil ovpn:<\/p>\n

Now run ‘pivpn add’ to create the ovpn profiles. Run ‘pivpn help’ to see what else you can do! The install log is in \/etc\/pivpn.<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Se nos pide reiniciar:<\/p>\n

It is strongly recommended you reboot after installation. Would you like to reboot now?<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Generar un perfil ovpn: pivpn add<\/em><\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

perfil ovpn creado (tendremos que copiarlo del directorio donde se ha generado, y llevarlo al dispositivo cliente VPN):<\/p>\n

\"\"
\n <\/p>\n

 <\/p>\n

Cargar perfil cliente ovpn:<\/p>\n

Ahora podremos cargar ese archivo de perfil ovpn en un cliente VPN (que no se encuentre dentro de la misma red en la que se encuentra el server VPN).
\n 
\nEn este caso vemos que estamos utilizando el cliente OpenVPN para Windows, cargamos el perfil ovpn, y conseguimos la conexi\u00f3n VPN a nuestra Raspberry Pi que actua como servidor VPN:
\n 
\n\"\"
\n <\/p>\n

 <\/p>\n

Usando el cliente OpenVPN para Android<\/span><\/h3>\n

 
\nUn uso muy interesante es poder conectarnos a nuestro servidor VPN desde nuestro tel\u00e9fono m\u00f3vil.<\/p>\n

Y resulta que tenemos una aplicaci\u00f3n genial, que es OpenVPN Connect para Android<\/a><\/strong><\/em>.<\/p>\n

La aplicaci\u00f3n para Android nos ofrece varias formas de conectarnos a una VPN:<\/p>\n