¿Quieres saber cómo convertir una Raspberry Pi en una VPN? Hay muchas razones por las que le gustaría acceder a su red doméstica de forma remota, y la mejor manera de hacerlo es con un servidor VPN. Algunos enrutadores en realidad le permiten configurar un servidor VPN directamente dentro del enrutador, pero en muchos casos, tendrá que configurar uno usted mismo.

Cómo convertir una Raspberry Pi en una VPN

Una Raspberry Pi es una excelente manera de lograr esto. No requieren mucha energía para funcionar y tienen suficiente potencia para ejecutar un servidor VPN. Puede configurar uno junto a su enrutador y básicamente olvidarse de él.

Cuando tiene acceso a su red doméstica de forma remota, puede acceder a sus archivos desde cualquier lugar. Puede ejecutar las computadoras de su hogar de forma remota. Incluso puede usar la conexión VPN de su hogar desde la carretera. Una configuración como esta permite que su teléfono, tableta o computadora portátil actúe como si estuviera en casa desde cualquier lugar.

Cómo convertir una Raspberry Pi en una VPN

configurar el pi

Antes de que pueda comenzar a configurar la VPN, necesitará configurar su Raspberry Pi. Lo mejor es configurar el Pi con una carcasa 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 enrutador con un cable Ethernet. Minimizará cualquier retraso en la red.

Instalar Raspbian

El mejor sistema operativo para usar en tu Pi es Raspbian. Es la opción predeterminada presentada por 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 descarga de Rasbian y obtenga la última versión. Puede usar la versión "Lite" aquí, porque en realidad no necesita un escritorio gráfico.

Mientras se descarga, obtenga la última versión de Etcher para su sistema operativo. Una vez completada la descarga, extraiga la imagen de Raspbian. Luego, abre Etcher. Seleccione la imagen de Raspbian desde donde la extrajo. Seleccione su tarjeta SD (insértela primero). Finalmente, escribe la imagen en la tarjeta.

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

Finalmente puedes conectar tu Pi. Asegúrate de enchufarlo al final. No vas a necesitar una pantalla, un teclado o un mouse. Vas a acceder de forma remota a la Raspberry Pi a través de tu red.

Dale al Pi unos minutos para configurarse. Luego, abra un navegador web y vaya a la pantalla de administración de su enrutador. Encuentra la Raspberry Pi y anota su dirección IP.

Ya sea que esté en Windows, Linux o Mac, abra OpenSSH. Conéctese a la Raspberry Pi con SSH.

$ ssh pi@192.168.1.110

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

Configurar OpenVPN

OpenVPN no es exactamente simple de configurar como servidor. La buena noticia es que solo necesitas hacerlo una vez. Entonces, antes de profundizar, asegúrese de que Raspbian esté completamente actualizado.

$ sudo apt actualizar
$ sudo apt actualización

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

$ sudo apt install openvpn easy-rsa

Autoridad certificada

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 solo sus dispositivos puedan conectarse a su red doméstica.

Primero, cree un directorio para sus certificados. Mover a ese directorio.

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

Busque archivos de configuración de OpenSSL. Luego, vincule el último con openssl.cnf .

$ ls | grep -i abre SSL
$ sudo ln -s abressl-1.0.0.cnf abressl.cnf

En esa misma carpeta de "certificados" hay un archivo llamado "vars". Abre ese archivo con tu editor de texto. Nano es el predeterminado, pero siéntete libre de instalar Vim, si te sientes más cómodo con él.

Encuentre primero la variable KEY_SIZE . Está configurado en 2048 de forma predeterminada. Cámbielo 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 precisa, pero cualquier cosa que puedas recordar está bien.

exportar KEY_COUNTRY="EE.UU."
exportar KEY_PROVINCE="CA"
exportar KEY_CITY="San Francisco"
exportar KEY_ORG="Fort-Funston"
export KEY_EMAIL=" yo@mihost.midominio "
export KEY_OU="MiUnidadOrganizacional"
exportar KEY_NAME="HomeVPN"

Cuando tengas todo, guarda y sal.

Ese paquete Easy-RSA que instaló antes contiene muchos scripts que ayudan a configurar todo lo que necesita. Solo necesitas ejecutarlos. Comience agregando el archivo "vars" como fuente. Eso cargará todas las variables que acabas de establecer.

$ sudo fuente ./vars

Luego, limpia las llaves. No tiene ninguna, así que no se preocupe por el mensaje que le indica que se eliminarán sus claves.

$ sudo ./instalación limpia

Finalmente, construya su autoridad de certificación. Ya configuró los valores predeterminados, por lo que puede aceptar los valores predeterminados que presenta. Recuerde establecer una contraseña segura y responda "sí" a las dos últimas preguntas, después de la contraseña.

$ sudo ./build-ca

hacer algunas llaves

Se tomó todas las molestias para configurar una autoridad de certificación para poder firmar claves. Ahora, es hora de hacer algunos. Comience por construir la clave para su servidor.

$ sudo ./build-key-server servidor

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

$ sudo abre ssl dhparam 4096 > /etc/openvpn/dh4096.pem

La última clave que necesita a partir de ahora se llama clave HMAC. OpenVPN usa 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.

$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key

Configuración del servidor

Tienes las llaves. La siguiente pieza en la configuración de OpenVPN es la configuración del servidor en sí. Afortunadamente, no hay mucho que necesites hacer aquí. Debian proporciona una configuración base que puede usar para comenzar. Entonces, comience por obtener 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 nuevamente para abrir /etc/openvpn/server.conf . Lo primero que debe encontrar son los archivos ca , cert y key . Debe configurarlos para que coincidan con las ubicaciones reales de los archivos que creó, que están todos en /etc/openvpn/certs/keys .

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

Busque la configuración dh y cámbiela para que coincida con el Diffie-Hellman .pem que creó.

dh dh4096.pem

Establezca también la ruta 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 a continuación.

cifrado AES-256-CBC

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

presione "redirect-gateway def1 bypass-dhcp"

presione "dhcp-opción DNS 208.67.222.222"
presione "dhcp-opción DNS 208.67.220.220"

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

usuario openvpn
grupo sin grupo

Finalmente, estas dos últimas líneas no están en la configuración predeterminada. Deberá agregarlos al final del archivo.

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

# Resumen de autenticación
autenticación SHA512

Luego, limite los cifrados que OpenVPN puede usar a solo los más fuertes. Esto ayuda a limitar posibles ataques a cifrados débiles.

# Limitar Cifrados
tls-cipher TLS-DHE-RSA-CON-AES-256-GCM-SHA384:TLS-DHE-RSA-CON-AES-128-GCM-SHA256:TLS-DHE-RSA-CON-AES-256-CBC-SHA :TLS-DHE-RSA-CON-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-CON-AES-128-CBC-SHA:TLS-DHE-RSA-CON-CAMELLIA-128-CBC-SHA

Eso es todo para la configuración. Guarda el archivo y cierra.

iniciar el servidor

Antes de que pueda iniciar el servidor, debe crear el usuario openvpn que especificó.

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

Es un usuario especial solo para ejecutar OpenVPN y no hará nada más.

Ahora, inicie el servidor.

$ sudo systemctl iniciar openvpn
$ sudo systemctl start openvpn@servidor

Comprueba que ambos estén funcionando.

$ sudo systemctl estado openvpn*.servicio

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

$ sudo systemctl habilitar openvpn
$ sudo systemctl habilitar openvpn@servidor

Configuración del cliente

Su servidor ahora está configurado y funcionando. A continuación, debe establecer la configuración de su cliente. Esta es la configuración que usará para conectar sus dispositivos a su servidor. Vuelva a la carpeta de certificados y prepárese para crear las claves de cliente. Puede elegir crear claves separadas para cada cliente o una clave para todos los clientes. Para uso doméstico, una tecla debería estar bien.

$ cd /etc/openvpn/certificados
$ sudo fuente ./vars
$ sudo ./cliente clave de compilación

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

Configuración del cliente

La configuración de los clientes es muy similar a la del servidor. Nuevamente, tiene una plantilla prefabricada para basar su configuración. Solo necesita modificarlo para que coincida con el servidor.

Cambie al directorio del cliente . Luego, descomprima 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.ovpn

Abra el archivo client.ovpn con su editor de texto. Luego, busque la opción remota . Suponiendo que aún no esté utilizando una VPN, busque en Google "Cuál es mi IP". Tome la dirección que muestra y configure la dirección IP remota . Deje el número de puerto.

remoto 107.150.28.83 1194 #Esa IP irónicamente es una VPN

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

ca ca.crt
cert cliente.crt
clave cliente.clave

Busque las opciones de usuario y elimínelas. Está bien ejecutar los clientes como nadie .

usuario nadie
grupo sin grupo

Descomente la opción tls-auth para HMAC.

tls-auth ta.clave 1

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

cifrado AES-256-CBC

Luego, simplemente agregue el resumen de autenticación y las restricciones de cifrado en la parte inferior del archivo.

# Resumen de autenticación
autenticación SHA512

# Restricciones de cifrado
tls-cipher TLS-DHE-RSA-CON-AES-256-GCM-SHA384:TLS-DHE-RSA-CON-AES-128-GCM-SHA256:TLS-DHE-RSA-CON-AES-256-CBC-SHA :TLS-DHE-RSA-CON-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-CON-AES-128-CBC-SHA:TLS-DHE-RSA-CON-CAMELLIA-128-CBC-SHA

Cuando todo se vea bien, guarde el archivo y salga. Use tar para empaquetar la configuración y los certificados, de modo que pueda enviarlos al cliente.

$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C /etc/openvpn/certs/keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn

Transfiere ese paquete al cliente como quieras. SFTP, FTP y una unidad USB son excelentes opciones.

Reenvío de puertos

Para que todo esto funcione, debe configurar su enrutador para reenviar el tráfico VPN entrante al 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 su cliente y servidor.

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

Cada enrutador es diferente. Aún así, todos deberían tener alguna forma de esta funcionalidad. Encuéntrelo en su enrutador.

La configuración es básicamente la misma en todos los enrutadores. Introduzca los puertos de inicio y finalización. Deben ser iguales entre sí y el que estableció en sus configuraciones. Luego, para la dirección IP, configúrala en la IP de tu Raspberry Pi. Guarde sus cambios.

Conéctese al cliente

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

En Android, puede abrir su tarball y transferir las claves a su teléfono. Luego, instale la aplicación OpenVPN. Abra la aplicación e ingrese la información de su archivo de configuración. Luego seleccione sus claves.

En Linux, debe instalar OpenVPN como lo hizo para el servidor.

$ sudo apt instalar openvpn

Luego, cambie a /etc/openvpn y descomprima el tarball que envió.

$ cd /etc/openvpn
$ sudo tar xJf /ruta/al/cliente.tar.xz

Cambie el nombre del archivo del cliente.

$ sudo mv cliente.ovpn cliente.conf

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

Reflexiones finales sobre cómo convertir una Raspberry Pi en una VPN

Después de saber cómo convertir una Raspberry Pi en una VPN, ahora debería tener una configuración que funcione. Su cliente se conectará directamente a través de su enrutador al Pi. Desde allí, puede compartir y conectarse a través de su red virtual, siempre que todos los dispositivos estén conectados a la VPN. No hay límite, por lo que siempre puede conectar todas sus computadoras a Pi VPN.