Saltar al contenido

Convierta un Pi de frambuesa en una VPN para acceder a su red desde cualquier lugar

Por qué usar una VPN para acceder a su casa

Hay muchas razones por las que querría acceder a su red doméstica de forma remota, y la mejor manera de hacerlo es con un servidor VPN . Algunos enrutadores te permiten configurar un servidor VPN directamente dentro del enrutador, pero en muchos casos, vas a necesitar configurar uno tú mismo.

Un Pi de Frambuesa es una gran manera de lograr esto. No requieren mucha energía para funcionar, y tienen suficiente energía para ejecutar un servidor VPN . Puedes configurar uno al lado de tu router y básicamente olvidarte de él.

Cuando tiene acceso a su red doméstica de forma remota, puede acceder a sus archivos desde cualquier lugar. Puede ejecutar sus ordenadores domésticos de forma remota. Incluso puede utilizar la conexión VPN de su casa desde la carretera. Una configuración como ésta permite que el teléfono, la tableta o el portátil actúen como si estuvieran en casa desde cualquier lugar.

Configurar la Pi

Antes de que pueda empezar a configurar la VPN, va a necesitar configurar su Frambuesa Pi. Es mejor configurar la Pi con un estuche y una tarjeta de memoria de tamaño decente, 16 GB deberían ser más que suficientes. Si es posible, conecte su Pi a su router con un cable Ethernet. Minimizará los retrasos de la red.

Instalar Raspbian

El mejor sistema operativo para usar en tu Pi es Raspbian. Es la opción por defecto de la fundación Raspberry Pi, y está basada en Debian, una de las versiones de Linux más seguras y estables disponibles.

Vaya a la página de descargas de Rasbian , y obtenga la última versión. Aquí puede utilizar la versión «Lite», ya que no necesita un escritorio gráfico.

Mientras está descargando, obtenga la última versión de Etcher para su sistema operativo. Una vez finalizada la descarga, extraiga la imagen Raspbian. Luego, abra Etcher. Seleccione la imagen Raspbian de donde la extrajo. Seleccione su tarjeta SD (Insértela primero). Finalmente, escriba la imagen en la tarjeta.

Deje la tarjeta SD en su ordenador cuando haya terminado. Abra un administrador de archivos y busque la tarjeta. Debería ver un par de particiones diferentes. Busque la partición «boot». Es el que tiene un archivo «kernel.img». Cree un archivo de texto vacío en la partición «boot» y llámelo «ssh» sin extensión de archivo.

Por fin puedes conectar tu Pi. Asegúrate de enchufarlo al final. No va a necesitar una pantalla, teclado o ratón. Vas a acceder de forma remota al Raspberry Pi a través de tu red.

Dale unos minutos al Pi para que se prepare. A continuación, abra un navegador web y vaya a la pantalla de administración de su enrutador. Busca el Pi de Frambuesa y anota su dirección IP.

Tanto si está en Windows, Linux o Mac, abra OpenSSH. Conecta con el frambuesa Pi con SSH.

$ ssh [email protected]

Obviamente, utilice la dirección IP real de la Pi. El nombre de usuario es siempre pi, y la contraseña es frambuesa.

Configurar OpenVPN

OpenVPN no es exactamente fácil de configurar como servidor. La buena noticia es que sólo tienes que hacerlo una vez. Así que, antes de empezar, asegúrate de que Raspbian esté completamente actualizado.

$ sudo apt update
sudo apt upgrade

Una vez finalizada la actualización, puede instalar OpenVPN y la utilidad de certificado que necesite.

$ sudo apt install openvpn easy-rsa>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

Autoridad de certificación

Para autenticar sus dispositivos cuando intentan conectarse al servidor, debe configurar una autoridad de certificación para crear claves de firma. Estas claves garantizarán que sólo sus dispositivos puedan conectarse a su red doméstica.

En primer lugar, cree un directorio para sus certificados. Muévete a ese directorio.

$ sudo make-cadir /etc/openvpn/certs
cd /etc/openvpn/certs

Busque archivos de configuración de OpenSSL. A continuación, vincule la última con openssl.cnf.

$ ls | grep -i openssl
sudo ln -s openssl-1.0.0.0.cnf openssl.cnf

En esa misma carpeta «certs» hay un archivo llamado «vars». Abra ese archivo con su editor de texto. Nano es el valor por defecto, pero no dude en instalar Vim, si se siente más cómodo con él.

Busque primero la variable KEY_SIZE. Está configurado en 2048 de forma predeterminada. Cámbialo a 4096.

exportar KEY_SIZE=4096

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

El bloque principal con el que debe lidiar establece información sobre su autoridad de certificación. Ayuda si esta información es correcta, pero cualquier cosa que puedas recordar está bien.

exportar KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
exportar KEY_CITY="SanFrancisco"
exportar KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit" (MiUnidad Organizacional)
export KEY_NAME="HomeVPN"

>

Cuando lo tenga todo, guarde y salga.

Ese paquete Easy-RSA que instaló antes contiene muchos scripts que le ayudan a configurar todo lo que necesita. Sólo tienes que ejecutarlos. Comience añadiendo el archivo «vars» como fuente. Esto cargará todas las variables que acabas de establecer.

$ sudo source ./vars

A continuación, limpie las llaves. No tienes ninguna, así que no te preocupes porque el mensaje te diga que tus claves serán borradas.

$ sudo ./limpiar-instalar>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

Por último, cree su autoridad de certificación. Ya ha configurado los valores predeterminados, de modo que puede aceptar los valores predeterminados que presenta. Recuerde establecer una contraseña segura y responda «sí» a las dos últimas preguntas, siguiendo la contraseña.

$ sudo ./build-ca

Hacer algunas llaves

Te tomaste todas esas molestias para establecer una autoridad de certificación para poder firmar las llaves. Ahora, es el momento de hacer algo. Comience por construir la clave para su servidor.

$ sudo ./servidor de llaves construidas >Servidor de llaves.

A continuación, construya el PEM Diffie-Hellman. Es lo que utiliza OpenVPN para asegurar sus conexiones de cliente al servidor.

$ sudo openssl dhparam 4096> /etc/openvpn/dh4096.pem

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

La última clave que necesitará a partir de ahora se llama clave HMAC. OpenVPN utiliza esta clave para firmar cada paquete individual de información intercambiado entre el cliente y el servidor. Ayuda a prevenir ciertos tipos de ataques a la conexión.

Configuración del servidor

Tienes las llaves. La siguiente pieza en la configuración de OpenVPN es la propia configuración del servidor. Afortunadamente, no hay mucho que hacer aquí. Debian proporciona una configuración base que puede usar para empezar. Así que, empieza por conseguir ese archivo de configuración.

$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz> /etc/openvpn/server.conf

Use su editor de texto de nuevo para abrir /etc/openvpn/server.conf. Lo primero que necesita encontrar son los archivos ca, cert y key. Necesita configurarlos para que coincidan con las ubicaciones reales de los ficheros que ha creado, que están todos en /etc/openvpn/certs/keys.

ca /etc/openvpn/certs/keys/ca.crt
cert /etc/openvpn/certs/keys/server.crt
key /etc/openvpn/certs/keys/server.key # Este archivo debe mantenerse en secreto

Busca la configuración dh y cámbiala para que coincida con el Diffie-Hellman.pem que has creado.

dh dh4096.pem

Configure también la ruta de acceso para su clave HMAC.

tls-auth /etc/openvpn/certs/keys/ta.key 0

Encuentre el cifrado y asegúrese de que coincida con el ejemplo de abajo.

cifra AES-256-CBC

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

El siguiente par de opciones están ahí, pero están comentadas con una ;. Elimine los puntos y coma delante de cada opción para habilitarlas.

<"redirect-gateway def1 bypass-dhcp" pulse "opción dhcp DNS 208.67.222.222" pulsar "opción dhcp DNS 208.67.220.220"

Busque las opciones de usuario y grupo. Descoméntelos y cambie el usuario a «openvpn».

usuario openvpn
grupo nogroup> grupo

Finalmente, estas dos últimas líneas no están en la configuración por defecto. Tendrá que añadirlos al final del archivo.

Configure el resumen de autenticación para especificar un cifrado más potente para la autenticación de usuario.

# Authentication Digest
auth SHA512>

Luego, limite los cipers que OpenVPN puede usar sólo a los más fuertes. Esto ayuda a limitar los posibles ataques a las cifras débiles.

# Cifrado de límites
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA Eso es todo por la configuración. Guarde el archivo y salga.

Iniciar el servidor

Antes de que pueda iniciar el servidor, necesita hacer que el usuario de openvpn que especificó.

$ sudo adduser --system --shell /usr/sbin/nologin --no-create-home openvpn

Es un usuario especial sólo para ejecutar OpenVPN, y no hará nada más.

Ahora, inicie el servidor.

$ sudo systemctl start openvpn
sudo systemctl start [email protected]

Compruebe que ambos están ejecutándose

$ sudo systemctl status openvpn*.service

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

Si todo se ve bien, habilítelos al inicio.

$ sudo systemctl enable openvpn
sudo systemctl enable [email protected]>

Configuración del cliente

Su servidor ya está configurado y funcionando. A continuación, debe configurar la configuración de su cliente. Esta es la configuración que utilizará para conectar sus dispositivos al servidor. Vuelva a la carpeta certs y prepárese para crear la(s) clave(s) de cliente. Puede elegir entre crear claves separadas para cada cliente o una clave para todos los clientes. Para uso doméstico, una llave debería estar bien.

$ cd /etc/openvpn/certs
sudo source./vars
sudo ./cliente clave construida

El proceso es casi idéntico al del servidor, así que siga el mismo procedimiento.

Configuración del cliente

La configuración para clientes es muy similar a la del servidor. Una vez más, tiene una plantilla prefabricada en la que basar su configuración. Sólo tiene que modificarla para que coincida con el servidor.

Cambiar al directorio de clientes. A continuación, desempaque la configuración de muestra.

$ cd /etc/openvpn/cliente
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client/client.ovpn

Abra el archivo client.ovpn con su editor de texto. Luego, busque la opción remota. Suponiendo que no estés usando una VPN, busca en Google «¿Cuál es mi IP?». Tome la dirección que muestra y configure la dirección IP remota. Deja el número de puerto.

remote 107.150.28.83 1194 #That IP ironically is a VPN

Cambie los certificados para que reflejen los que usted creó, tal como lo hizo con el servidor.

ca ca.crt
cert client.crt
key client.key

Busque las opciones del usuario y descoméntelas. Está bien manejar a los clientes como si no fueran nadie.

usuario nadie
grupo nogroup

> grupo

Descomente la opción tls-auth para HMAC.

tls-auth ta.key 1

A continuación, busque la opción de cifrado y asegúrese de que coincide con el servidor.

cifra AES-256-CBC

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

A continuación, sólo tiene que añadir el resumen de autenticación y las restricciones de cifrado en la parte inferior del archivo.

# Authentication Digest
auth SHA512
# Restricciones de cifrado
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA Cuando todo se vea bien, guarde el archivo y salga. Utilice tar para empaquetar la configuración y los certificados, de modo que pueda enviarlos al cliente.

.

Transfiera ese paquete al cliente de la forma que usted elija. SFTP, FTP y una unidad USB son buenas opciones.

Reenvío de puertos

Para que todo esto funcione, debe configurar su enrutador para que reenvíe el tráfico VPN entrante a la Pi. Si ya está utilizando una VPN, debe asegurarse de que no se está conectando en el mismo puerto. Si es así, cambie el puerto en las configuraciones de cliente y servidor.

Conéctese a la interfaz web de su router escribiendo su dirección IP en su navegador.

Cada enrutador es diferente. Aún así, todos ellos deberían tener alguna forma de esta funcionalidad. Encuéntralo en tu router.

La configuración es básicamente la misma en todos los routers. Introduzca los puertos de inicio y final. Deben ser los mismos que los demás y el que usted establezca en sus configuraciones. Luego, para la dirección IP, ajústela a la IP de su frambuesa Pi. Grabe las modificaciones.

Conectar con el Cliente

Cada cliente es diferente, por lo que no existe una solución universal. Si está en Windows, necesitará el cliente Windows OpenVPN .

En Android, puedes abrir tu tarball y transferir las llaves a tu teléfono. Luego, instale la aplicación OpenVPN. Abra la aplicación y conecte la información de su archivo de configuración. A continuación, seleccione las teclas.

En Linux, necesita instalar OpenVPN de forma muy parecida a como lo hizo para el servidor.

$ sudo apt install openvpn

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

Luego, cambie a /etc/openvpn, y desempaque el tarball que ha enviado.

$ cd /etc/openvpn
sudo tar xJf /path/to/client.tar.xz

Renombrar el archivo de cliente.

$ sudo mv client.ovpn client.conf

No inicie el cliente todavía. Fracasará. Primero debe habilitar el reenvío de puertos en su enrutador.

Pensamientos de cierre

Ahora debería tener una configuración que funcione. Su cliente se conectará directamente a través de su router a la Pi. Desde allí, puede compartir y conectarse a través de su red virtual, siempre y cuando todos los dispositivos estén conectados a la VPN. No hay límite, por lo que siempre podrá conectar todos sus ordenadores a la VPN del Pi.