Instalar VPN en Raspberry con DDNS

Hoy vamos a ver cómo instalar un servidor VPN en Raspberry Pi. De esta forma podremos conectarnos a nuestra red local desde cualquier sitio y proteger nuestro tráfico.

Si no sabes lo que es una VPN te recomiendo que le eches un vistazo a este artículo. Para los que ya conozcan esta tecnología, vamos a utilizar PiVPN para configurarlo de forma muy sencilla (pudiendo elegir entre WireGuard y OpenVPN). Además, utilizaremos un DNS Dinámico (o DDNS) para no tener que recordar nuestra IP y evitar problemas si esta cambia.

Configuración del DDNS

Lo primero que vamos a hacer es crear un nombre de dominio para poder conectarnos a nuestra Raspberry por VPN sin necesidad de sabernos la IP externa. Además, es común que la IP externa controlada por nuestro proveedor de Internet cambie cada cierto tiempo. Por ello, gracias a los DDNS podremos tener un pequeño script ejecutándose en nuestra Raspberry Pi que actualice los registros DNS. De esta forma siempre tendremos conexión a nuestra VPN sin importar cuando cambie nuestra IP.

Para la creación de nuestro dominio con DDNS vamos a utilizar la página DuckDNS ya que nos proporciona dominios gratuitos que no tendremos que renovar manualmente como es el caso de NoIP. Lo primero será irnos a la página en cuestión:

Página para configurar un DDNS y poder Instalar servidor VPN en Raspberry

Iniciamos sesión, ponemos un nombre donde dice «sub domain» y le damos al botón de «Add Domain«.

Página para configurar un DDNS y poder Instalar servidor VPN en Raspberry

A continuación, vamos la pestaña superior donde pone «install» y seleccionamos «pi» en «Operating Systems«. Solo tenemos que seguir los pasos que nos describen y ya tendremos configurado un script que cada 5 minutos actualiza nuestra IP externa.

Página para configurar un DDNS y poder Instalar servidor VPN en Raspberry

Ya podemos proceder a configurar nuestro servidor VPN en la Raspberry Pi.

Instalar servidor VPN en Raspberry Pi

La instalación del servidor VPN en nuestra Raspberry Pi es bastante sencilla ya que solo tendremos que ejecutar el siguiente comando:

curl -L https://install.pivpn.io | bash

Durante el proceso de instalación se nos preguntarán una serie de cuestiones que tenemos que configurar como se describe en las imágenes a continuación (el proceso ha sido realizado par WireGuard pero es prácticamente igual para OpenVPN). Para movernos por las opciones podemos usar las flechas del teclado o la tecla TAB y para aceptar le damos al espacio:

  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Selección entre WireGuard y OpenVPN en PiVPN
  • Porcentaje de instalación de PiVPN
  • Puerto para WireGuard
  • Confirmación del puerto establecido para la VPN
  • Seleción del proveedor DNS
  • Menú para Instalar servidor VPN en Raspberry
  • Establecimiento del dominio DDNS
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry
  • Menú para Instalar servidor VPN en Raspberry

Finalmente tenemos que añadir el usuario con el que nos conectaremos con el siguiente comando:

pivpn add

Nos pedirá que introduzcamos un nombre de usuario (si es con OpenVPN, también una contraseña). Para WireGuard nos creará el archivo «nombre_usuario.conf» en /home/pi/configs (también como ~/configs/) mientras que para OpenVPN, se creará el archivo «nombre_usuario.ovpn» en /home/pi/openvpn. Tendremos que pasar estos archivos al dispositivo con el que queramos conectarnos (aunque todavía queda abrir los puertos del router para poder establecer la conexión). En WireGuard también podemos escanear el código QR que nos sale tras ejecutar el comando:

pivpn -qr

Apertura de puertos en el router y conexión

Una vez ya hayamos realizado toda la configuración pertinente tendremos que abrir los puertos en nuestro router de forma que tengamos conexión directa al puerto que hemos configurado en el servidor VPN. Cada router es diferente así que aconsejo que si no sabéis cómo hacerlo vosotros mismos busquéis en Internet cómo es en vuestro modelo.

Finalmente, para conectarnos a nuestra VPN y comprobar que todo se ha realizado correctamente, tendréis que descargar un cliente para WireGuard (en la siguiente página podéis encontrar los clientes tanto para iOS y Android, como para Windows, MacOS o Linux) o para OpenVPN.

Si estamos con WireGuard, cuando tengamos el cliente importamos el fichero «.conf« que hemos comentado en el apartado anterior o escaneamos el código QR en cuestión. Si por el contrario hemos utilizado OpenVPN utilizaremos los archivos con extensión «.ovpn«. Una vez nos hayamos conectado a nuestra VPN podemos comprobar que nuestra IP ha cambiado en alguna página como ipinfo.io.

7 comentarios en «Instalar un servidor VPN en Raspberry (OpenVPN o WireGuard + DDNS)»

  • Dan

    Buenas tardes.
    De momento segui todo los pasos indicados, tanto para duckdns como para openvpn. Me generó el perfil .ovpn pero al intentar conectarme me da fallo. Tunnelblick me da tls handsheke failed (o algo parecido) y el openvp conect (para mac) se queda «pensando» y luego da error.
    Hay alguna manera de hacerlo funcionar? Gracias de antemao

    Responder
    • venahackearconmigo

      Buenas! ¿Has abierto los puertos en el router para poder conectarte? Por otra parte para hacer la prueba de conexión necesitas estar en otra red diferente a la que quieres conectarte por VPN. Por ejemplo, podrías utilizar el móvil conectado al 4G y utilizar la app de OpenVPN (disponible en Google Play) para ver si se te conecta correctamente.

      Un saludo!

      Responder
      • Dan

        Muy buenas. Gracias por responder a mi consulta. SI, abrí los puertos, intenté conectarme desde el móvil, conectado a 4G, pero de momento el mismo resultado. Esta tarde volveré a poner en marcha todo el proceso desde 0. A ver si hay suerte hoy.

        Responder
        • venahackearconmigo

          Lo único que tengas en cuenta también que los puertos para OpenVPN en principio son UDP no TCP (y por defecto el 1194 si no me equivoco) por si lo mismo estabas abriendo únicamente TCP.

          Responder
          • Dan P.

            Buenos días, y felices fiestas.
            Gracias por el consejo de UDP. Siguiendolo, cambiando el puerto por defecto (si es el 1194) el openvp ya me funciona. Lo que si me tiene confundido es que en la pagina ipinfo que recomienda en el articulo, no me aparece la ip cambiada, además de aparecer allí openvp: false. COn lo cual a pesar de que funciona, creo que no me cambia la ip. O estoy equivocado?

  • venahackearconmigo

    Buenas, al conectarte por vpn sí que te debería de cambiar la IP. Comprueba si puedes hacerle ping a algún dispositivo de tu red interna tras conectarte a la VPN.

    Responder
  • Dan P.

    Hola. Gracias por responder.
    Hice ping a una ip de mi red, de un dispositivo zigbee y sin problemas. No tuve ninguna perdida de paquetes. No se porque no funciona del todo bien. Seguiré intentando. MIl gracias por tu disposición y ayuda.

    Responder

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad
A %d blogueros les gusta esto: