Este artículo complementa a mi anterior guía Instalar Raspberry Pi OS y Pi-hole desde Windows.
Aviso de realidad
Seguramente alguien piensa que con esto puede saltarse las últimas restricciones de Netflix al uso compartido de cuentas. Pero una Raspberry no está pensada, ni tiene potencia suficiente para funcionar como servidor VPN de alto rendimiento con un alto volumen de tráfico de datos. Una Raspberry es para aprender y sirve para pequeños proyectos.
En esta guía configuraremos PiVPN con servidor WireGuard y Pi-hole como servidor DNS, funcionando en Raspberry Pi OS Lite para mejorar la privacidad y seguridad en nuestros móviles, portátiles y demás dispositivos móviles.
En la guía anterior dejamos funcionando nuestra Raspberry Pi con Pi-hole como servidor DHCP, bloqueando anuncios y rastreadores para las máquinas de nuestra red Wifi y cableada.
Una VPN permite una conexión segura a una red de área local (LAN) sobre una red pública como Internet. Permite que el dispositivo en la red envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada, con todas las funcionalidades y seguridad de una red privada. Esto se realiza estableciendo una conexión virtual punto a punto mediante una conexión dedicada y cifrada.
WireGuard es un nuevo tipo de VPN que proporciona una velocidad de conexión casi instantánea, alto rendimiento y criptografía moderna. Es la opción recomendada para dispositivos móviles, ya que WireGuard consume menos batería que OpenVPN y es muy fácil de configurar.
Configurar el reenvío de puertos en el Router
Lo primero será configurar el reenvío de puertos en el Router para el puerto que se utilizará para la conexión VPN. El puerto WireGuard predeterminado es 51820, pero se recomienda utilizar un puerto no estándar. Esto a tu elección. En cualquier caso, el protocolo utilizado es UDP.
Para ello entraremos a la configuración de nuestro Router y buscaremos la configuración para el reenvío de puertos.
Instalar PiVPN con WireGuard
La instalación paso a paso de PiVPN es fácil y sencilla de seguir. Se puede configurar el servidor OpenVPN o WireGuard junto con el servidor DNS Pi-hole en la Raspberry Pi.
Para configurar PiVPN con WireGuard en la misma máquina que el Pi-hole debemos seguir unos sencillos pasos.
Nos conectamos a nuestra Raspberry con Putty, y luego ejecutamos el siguiente comando que lanzará el asistente de instalación de PiVPN: curl -L https://install.pivpn.io | bash
Tras la pantalla de bienvenida, nos recuerda que debemos tener nuestra Raspberry Pi configurada con una IP estática. Es el mismo requisito que tuvimos que cumplir previamente para la instalación de Pi-hole.
Nos advierte sobre una posible fuga de conexiones a través de conexiones IPv6. Aceptamos la sugerencia.
Tras esto nos pregunta si hemos usado una reserva de DHCP para nuestra Raspberry o si hemos configurado una IP estática para ella. Escogemos la opción de NO, porque efectivamente hemos configurado una IP estática durante la instalación anterior de Pi-hole. Y en la siguiente pantalla del asistente confirmamos que la configuración es correcta.
Tras un par de pantallas con información adicional y avisos, el asistente nos pedirá asignar un usuario. En su directorio se guardarán los archivos de configuración y demás información.
Ahora el instalador nos pregunta qué protocolo VPN usar. Para mí, y en esta guía usare WireGuard. En el siguiente paso nos permite modificar el puerto de conexión por defecto.
Recuerda que debes utilizar el mismo puerto que hayas configurado en el reenvío del Router. O cambia la configuración del Router según el puerto que hayas configurado aquí, de lo contrario no funcionará.
Tras confirmar el puerto escogido, el instalador nos dice que ha detectado la instalación de Pi-hole y que si queremos utilizarlo como servidor DNS para nuestra VPN. ¡Perfecto! Esto es lo que queremos para bloquear publicidad y proteger nuestra privacidad en nuestros dispositivos móviles. Seleccionamos SÍ.
Después de eso, el instalador pregunta cómo se conectan los clientes a la VPN. Si tienes contratada una IP estática con tu proveedor de Internet, confírmala en este paso.
De lo contrario tendrás que usar algún servicio que vincule tu dirección IP actual en internet con una dirección Web, como DynDNS. Yo voy a usar el servicio No-IP.
Elegimos DNS Entry con la tecla flecha Abajo, Espacio e Intro. Y en la siguiente pantalla introducimos el dominio que hemos configurado. Por ejemplo: roberto.dyndns.domain
En las siguientes pantallas, confirmaremos el dominio que hemos configurado y con esto generará los archivos necesarios para después poder añadir los usuarios. Tras esto, el asistente nos ofrece activar la actualización automática del sistema.
Lo recomendable es que la activemos. Seguimos los pasos y reiniciamos nuestra Raspberry.
Agregar un perfil de VPN
Una vez reiniciado, estoy listo para configurar el primer perfil de WireGuard.
Para agregar un cliente, ejecutamos pivpn -a y damos un nombre al cliente.
Ahora, instalamos la aplicación oficial WireGuard en nuestro teléfono. Tenemos enlaces a cada plataforma en su Web Oficial.
Para agregar el perfil a nuestro móvil, la forma más fácil es leer el código QR que generamos con el siguiente comando pivpn -qr
Y obtenemos el código QR que leemos con nuestro teléfono.
Comprobación
Intenta conectarte mediante conexión de datos. Y ahora volvemos al terminal para verificar que todo funciona. Ejecutamos el comando pivpn -c
Esto muestra la lista de clientes configurados y la fecha de última vista. Si esta lista esta completa con la fecha y hora actuales y con información de datos movidos, ¡listo! Todo está bien.
También podemos confirmar que en el panel de control de Pi-hole aparecerá la lista de clientes conectados. Para ello vamos a Tools > Network. Aquí veremos las estadísticas específicas del uso que los clientes hacen de nuestro Pi-hole.
Conclusión
Esto nos permite tener una experiencia de Internet sin anuncios abusivos, seguimiento no deseado y phishing en cualquiera de nuestros dispositivos.
Instalar el cliente DUC de No-IP en Raspberry Pi
Un bonus para instalar y configurar el cliente de No-IP en nuestra Raspberry Pi. A continuación, detallaré las instrucciones paso a paso, pero si queréis leerlas desde la web de No-IP las podéis leer aquí.
Lo primero será crear directorio para la descarga y descargar el cliente de No-IP. Para esto tenemos que seguir estos pasos:
1. Ejecutamos el siguiente comando para crear una carpeta (directorio):
mkdir /home/nuestro-usuario/noip (cambiar “nuestro-usuario” por nuestro nombre de usuario)
2. Ejecutamos el siguiente comando para ir a la carpeta que hemos creado:
cd /home/nuestro-usuario /noip (cambiar “nuestro-usuario” por nuestro nombre de usuario)
3. Ejecutamos el siguiente comando para descargar la aplicación No-IP ir a la carpeta que hemos creado:
wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
Lo siguiente es descomprimir el archivo que nos acabamos descargar. Utilizamos el siguiente comando:
tar vzxf noip-duc-linux.tar.gz
Entramos en la carpeta (directorio) descomprimido:
cd noip-2.1.9-1
Y ahora compilamos el programa para poder instalarlo:
sudo make
Ahora iniciamos la instalación con el siguiente comando:
sudo make install
La instalación nos preguntará por la interfaz a controlar, elegimos eth0 (la interfaz wg0 corresponde a WireGuard).
También nos pedirá nombre de usuario (email) y contraseña de nuestra cuenta de usuario en No IP. Y nos dará a elegir el dominio que tenemos creado en nuestra cuenta. Este dominio que elijamos será el que se asocie a nuestra Raspberry.
Luego nos pedirá elegir un tiempo de sincronización de nuestra IP Dinámica con los servidores de No-IP. Podemos elegir entre 5 y 30 minutos. La configuración por defecto del cliente de Windows es 5 minutos.
También nos preguntará si queremos añadir algún comando final al archivo de configuración que crea la instalación. Le decimos que No.
Por último, solo nos queda iniciar la aplicación con el comando
sudo /usr/local/bin/noip2
Y para confirmar que la aplicación está funcionando correctamente ejecutamos el siguiente comando. Nos mostrará nuestra IP pública actual, nuestra cuenta de usuario de No-IP y el/los dominio/s configurados en el cliente.
sudo noip2 -S (S mayúscula)
Iniciar el cliente DUC de No-IP automáticamente
Otro bonus para iniciar el cliente de No-IP automáticamente a encender nuestra Raspberry Pi.
El problema que tiene el cliente de No-IP, es que por defecto no se inicia automáticamente cuando encendemos o reiniciamos nuestra Raspberry.
La manera más sencilla de hacer que el cliente se inicie automáticamente es añadir una tarea al programador cron
Para ello, simplemente abrimos la configuración del crontab ejecutando el comando
sudo crontab -e
Y con el editor nano añadimos la siguiente línea al final del archivo de configuración
@reboot /usr/local/bin/noip2
Tras esto, pulsamos Ctrl + O y luego Intro para guardar el archivo, y Ctrl + X para salir.
Para confirmar que todo está bien, podemos reiniciar nuestra Raspberry. Ejecutamos:
sudo reboot
Y confirmamos que el cliente de No-IP se ha iniciado correctamente con el comando:
sudo noip2 -S (S mayúscula)
Conclusión
Listo, ahora sabes cómo tener más privacidad navegando por internet gracias a una Raspberry Pi. Espero que este tutorial te haya sido útil y te permita iniciar más proyectos.