Configura PiVPN para Acceso Remoto: Guía Definitiva para Sysadmins Linux 2026
TL;DR — Lo que vas a tener al final
- Tiempo de setup: 25-45 minutos para P2P, 1-2 horas para hub-and-spoke.
- Requisitos: Linux con kernel 5.6+, root, IP pública (o PersistentKeepalive).
- Resultado: Túnel cifrado Curve25519/AES-256/Chacha20 con baja latencia.
- Troubleshooting: UDP bloqueado, AllowedIPs mal escrita, `wg show` y `tcpdump` son tus amigos.
Por qué PiVPN cuando WireGuard puro también existe
Si ya configuraste una VPN WireGuard a mano y te tocó pelearte con wg genkey, con iptables para NAT, con unattended-upgrades que nadie configura por defecto, con claves para rotar manualmente cada vez que sumas un cliente, y con un script casero para generar los QR de los móviles, entiendes por qué existe PiVPN. Es un instalador de un solo comando que toma una máquina Debian o Ubuntu recién instalada y la convierte en un servidor VPN operativo con hardening serio, todo bajo un comando pivpn que cubre la operación del día a día.
El dilema real no es PiVPN versus WireGuard: PiVPN es WireGuard (u OpenVPN, según la rama que elijas durante el install) más un montón de defaults razonables que de otro modo tendrías que escribir a mano. El dilema es PiVPN versus Tailscale, NetBird o Headscale. La diferencia operativa es grande: PiVPN deja un servidor VPN tradicional que tú controlas, sin plano de control externo, sin cuenta en un servicio, sin DERP relay, y sin Vendor lock-in. Pagas esa autonomía con más trabajo manual en la gestión de claves y en mantener la máquina al día.
¿Cuándo PiVPN es la opción correcta? Cuando quieres acceso remoto a tu propia red desde el celular o la laptop cuando viajas, sin pasar por un proveedor. Cuando quieres una salida de internet cifrada desde redes que no son de confianza (hotel, café, cowork). Cuando administras un homelab pequeño y necesitas llegar al servidor desde fuera sin exponer SSH al internet público. Cuando vas a sumar entre uno y veinte clientes — un número donde el modelo de perfiles manuales de pivpn add sigue siendo cómodo, y antes de que la gestión de claves se vuelva un dolor que pide un plano de control automatizado.
¿Cuándo NO usar PiVPN? Cuando los clientes están detrás de NAT simétrico estricto y nadie tiene IP pública fija (ahí Tailscale/NetBird resuelven mejor con NAT traversal cooperativo). Cuando vas a manejar más de 50 perfiles de cliente activos. Cuando necesitas SSO, ACLs por usuario o sincronización con Google Workspace/Okta. Cuando no quieres mantener un parche mensual del servidor tú mismo. Para esos casos hay que mirar otras herramientas; al final de la guía tienes un comparativo rápido.
Lo que necesitas antes de tocar el instalador
Reuní esta lista antes de empezar. Pararse a medio install a buscar una IP o un puerto es la causa número uno de setups rotos:
- Una máquina con Debian 12 (Bookworm) o Ubuntu 22.04/24.04 LTS recién instalada y actualizada. Raspberry Pi OS Lite funciona igual, y es el target original del proyecto. La guía asume Ubuntu 24.04 Noble, pero los comandos son idénticos en Debian 12 salvo donde se aclara.
- Acceso root o un usuario con
sudosin contraseña (PiVPN lo requiere durante el install). - Una IP pública IPv4 estable, fija o dinámica con un dominio apuntando vía DDNS. Para ISPs residenciales de LATAM (Claro, Telmex, VTR, Tigo) es común tener CGNAT; si
curl ifconfig.medesde el servidor devuelve una IP distinta a la de tu interfaz WAN, estás detrás de CGNAT y esta guía no aplica directo — necesitarías Tailscale o un relay externo. - Un puerto UDP libre para WireGuard (por defecto 51820) o TCP/UDP para OpenVPN (1194). Confirmá que está abierto y reachable desde internet, no solo en la LAN. En el router, abre el puerto hacia la IP local del servidor y asociá la IP local a la MAC del servidor (DHCP estático o reserva) para que no cambie tras un reinicio del router.
- Un hostname público para los clientes o, alternativamente, la IP pública. WireGuard funciona por IP, pero un hostname con DDNS te salva si la IP dinámica cambia entre renovaciones del ISP.
Instalación: un comando y un wizard interactivo
El install de PiVPN vive en https://install.pivpn.io y se invoca con curl | bash. Es seguro pipearlo porque el script entero es Bash legible en el repo público, y no pide credenciales durante la ejecución. Antes de correrlo, asegurate de tener el sistema actualizado:
sudo apt update && sudo apt -y full-upgrade
sudo reboot
El reboot es importante: PiVPN detecta si hay un kernel nuevo y rechaza instalar módulos DKMS sobre un kernel en uso. Tras volver, lanzá el wizard:
curl -L https://install.pivpn.io | bash
El script abre un wizard TUI en la terminal con preguntas. Las decisiones que importan:
- WireGuard u OpenVPN: WireGuard es la elección correcta para 2026 en cualquier caso nuevo. OpenVPN queda solo si necesitas compatibilidad con un cliente legacy o un feature específico de OpenVPN que WireGuard no tiene (clientes TCP, ofuscación TLS, OAuth plugins). Esta guía asume WireGuard.
- Puerto de escucha: deja el 51820 por defecto salvo que choque con algo. Cámbialo solo si sabes por qué.
- DNS para los clientes: PiVPN ofrece Pi-hole local, AdGuard Home, Quad9, Cloudflare o un DNS custom. Si ya tienes un Pi-hole o AdGuard Home en la misma red, elige “Custom” y apunta a su IP. Si no, Quad9 (
9.9.9.9) o Cloudflare (1.1.1.1) andan bien como default. - unattended-upgrades: deja habilitada la opción que ofrece el wizard. Es uno de los mayores aportes de PiVPN sobre instalar WireGuard a mano: el servidor se parchea solo, y eso evita que te olvides durante seis meses y alguien encuentre una CVE vieja sin parchar.
- Modo de seguridad: PiVPN activa
nftables/ufwsegún lo que tengas, abre el puerto WireGuard y deja el resto del firewall como estaba. No reinventa tu firewall existente.
Al terminar, el wizard imprime una confirmación con la IP del servidor VPN (10.6.0.1/24 por defecto para WireGuard) y te dice que reinicies para que unattended-upgrades quede programado. Reiniciá:
sudo reboot
Tras el reboot confirmá que todo quedó arriba con pivpn -d (modo debug). El comando imprime las rutas, la interfaz wg0, el puerto de escucha y los peers conectados. Si la interfaz no existe o el puerto no está abierto, el install no completó bien.
Sumar clientes: pivpn add y QR para el móvil
El ciclo de uso más común es agregar un cliente nuevo. El comando pivpn add genera un par de claves, escribe la config del cliente, y opcionalmente genera un QR para configurar el móvil con un escaneo. Es interactivo por defecto:
sudo pivpn add
El comando pregunta el nombre del cliente (sin espacios, sin caracteres raros; usa algo como laptop-soylinux, celular-mama, vps-spain). Luego pregunta si quieres un QR para móvil. Di que sí si vas a usar un celular; el QR se imprime en la terminal y se lee con la app oficial de WireGuard (Android/iOS) apretando el “+” y eligiendo “Escanear QR”. Para una laptop o una PC de escritorio, di que no y usa el archivo .conf resultante:
ls /home/$USER/configs/ # archivos .conf con los perfiles
sudo cat /home/$USER/configs/laptop-soylinux.conf
El archivo .conf se copia a la máquina cliente (con scp o cualquier método seguro) y se importa con la app de WireGuard correspondiente. En Linux desktop, nmcli connection import type wireguard file /path/al/perfil.conf lo deja listo en NetworkManager. En Windows o macOS, doble click sobre el archivo desde la app oficial lo importa.
Para listar y revocar perfiles ya creados:
sudo pivpn -l # lista clientes existentes
sudo pivpn -r # revoca un cliente (lo deshabilita)
sudo pivpn -c # muestra clientes conectados ahora
Integración con Pi-hole: filtrar publicidad en la VPN
Uno de los patrones más populares es combinar PiVPN con un Pi-hole local. Resultado: cuando te conectas a la VPN desde el celular en un hotel, todo el tráfico pasa por el Pi-hole de tu casa antes de salir a internet, bloqueando publicidad y trackers también cuando estás fuera de la LAN. Para activarlo, durante el wizard de PiVPN elige la opción “Pi-hole” cuando pregunta por el DNS. Si ya tenías PiVPN instalado sin esa integración, editá /etc/wireguard/setupVars.conf y cambiá la variable pihole a la IP de tu Pi-hole (típicamente la del mismo servidor si coexisten, o la de otra máquina en la LAN):
sudo nano /etc/wireguard/setupVars.conf
# Plihole = cIPofYourPihole
sudo pivpn -d # valida la config
Tras el cambio, regenerá los perfiles existentes con pivpn add (rotar uno por uno, los perfiles viejos siguen funcionando pero apuntan al DNS anterior) o pedí a cada cliente que reimporte la config desde el QR nuevo. Lo mismo aplica para AdGuard Home si prefieres esa vía.
Operación y mantenimiento del día a día
PiVPN no es un servicio mágico que se olvida. Hay cuatro tareas recurrentes que conviene planificar:
Aplicar parches: unattended-upgrades corre solo para security updates, pero las nuevas versiones de WireGuard o del propio PiVPN no siempre entran en security. Una vez por mes, sudo apt update && sudo apt -y full-upgrade para tomar todo lo nuevo y reiniciar si el kernel cambió. PiVPN no se rompe con upgrades normales; el script de install es idempotente y se puede relanzar para tomar mejoras.
Rotar la clave del servidor: si sospechas compromiso o simplemente quieres rotar preventivamente cada año, regenerá el par de claves del servidor y reescribí /etc/wireguard/wg0.conf. Todos los perfiles de cliente dejan de funcionar hasta que actualices la clave pública nueva en cada config:
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
# Reemplazar PrivateKey en wg0.conf y reiniciar
sudo systemctl restart wg-quick@wg0
Monitoreo: sudo pivpn -c te dice quién está conectado ahora mismo. Para métricas históricas, exportá la salida de sudo wg show all dump con un cron a InfluxDB o a un node_exporter con textfile collector. Lo que quieres ver en una alerta: peers con latest handshake de más de 5 minutos en una red donde deberían estar activos (indica desconexión); transferencia diaria por peer creciendo monótonamente sin pausa (indica que un cliente está descargando mucho, posible compromiso o backup mal configurado).
Backup: la pieza que más duele perder es el directorio /etc/wireguard/ entero (claves privadas y públicas, wg0.conf) y /home/$USER/configs/ (perfiles de cliente). Copialos a un destino cifrado fuera del servidor. Sin esos archivos, agregar o revocar clientes se vuelve adivinar. Un backup mínimo antes de tocar nada:
sudo tar czf pivpn-backup-$(date +%F).tar.gz /etc/wireguard /home/$USER/configs
sudo age -r age1yourkey... pivpn-backup-2026-10-12.tar.gz > pivpn-backup-2026-10-12.tar.gz.age
Troubleshooting: lo que se rompe y por qué
Cuatro problemas recurrentes que vale la pena reconocer de una:
- El cliente se conecta pero no llega a internet: el problema casi nunca es WireGuard sino el forwarding + NAT.
sudo sysctl net.ipv4.ip_forwardtiene que devolver1. Si no,echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf && sudo sysctl -p. Confirmá también queiptables -t nat -L POSTROUTINGtenga una reglaMASQUERADEpara la subred WireGuard (10.6.0.0/24por defecto). - El servidor WireGuard no aparece en
wg show: el serviciowg-quick@wg0no levantó.sudo systemctl status wg-quick@wg0te dice por qué; típicamente un error de sintaxis enwg0.conf.sudo wg-quick strip wg0te muestra la config que el servicio intenta levantar. - El móvil dice “handshake failed” pero la laptop anda: el problema suele ser la app móvil. Forza el endpoint a la IP pública (no hostname) en el perfil del cliente, y verifica que el puerto UDP que abrió el wizard siga reachable desde una red externa con
nc -uvz tu-ip-publica 51820. Si una red móvil 4G bloquea UDP a puertos no estándar, cambiá a un puerto común como el 53/UDP. - Perdiste la clave privada del servidor: no se puede recuperar. Tienes que generar un par nuevo (ver “Rotar clave” arriba), reescribir
wg0.conf, y reemitir todos los perfiles de cliente con la nueva pública del servidor. De ahí la importancia del backup.
Cuándo PiVPN se queda corto (y qué usar en su lugar)
PiVPN hace bien lo que hace, pero conviene saber dónde deja de escalar. Para 1-20 clientes con dispositivo fijo y caso de uso “road warrior ocasional”, es perfecto. Arriba de eso o con requisitos nuevos, evalúa migrar:
| Escenario | PiVPN alcanza | Conviene migrar a |
|---|---|---|
| Road warriors (1-10 móviles/laptops que se conectan a la casa) | Sí, ideal | — |
| Sitio-a-sitio entre 2-3 redes | Sí, con dos wg0.conf simétricos |
WireGuard crudo con hub-and-spoke (guía aparte en este blog) |
| Mesh de 5-50 nodos sin servidor central | No hay peer-to-peer transparente | Tailscale, NetBird, Headscale |
| Clientes detrás de CGNAT estricto sin IP pública | No funciona sin relay externo | Tailscale/NetBird con servidor DERP o Headscale autohospedado |
| SSO con Google Workspace o Azure AD | No, no hay plano de control | Tailscale (nativo) o Twingate (Zero Trust) |
| Auditoría centralizada y logs por usuario | Limitado (logs de wg-show) | Netmaker o un plano de control propio |
| Homerseek de compliance con FIPS, etc. | No, depende de distro y políticas locales | OpenVPN Access Server (comercial) o strongSwan |
La frontera práctica entre PiVPN y un mesh gestionado suele estar entre cinco y diez nodos. Abajo de eso, PiVPN es menos overhead operacional, menos conceptos nuevos y menos cuentas que dar de alta. Arriba, la inversión en aprender Tailscale/NetBird se paga sola.
Resumen
PiVPN es la forma rápida y razonablemente segura de tener tu propio servidor VPN en una Raspberry Pi, una VPS chica o cualquier Debian/Ubuntu que tengas a mano. El install es un comando, los defaults ya activan unattended-upgrades y un firewall mínimo, y la operación del día a día — agregar cliente, revocar, ver quién está conectado — son cinco comandos pivpn que se aprenden en una tarde. Para un homelab con 1-10 dispositivos que se conectan ocasionalmente o un sysadmin que quiere llegar a su servidor desde el celular sin exponer SSH al internet, es la opción correcta en 2026. Para mesh de docenas de nodos, SSO o auditoría centralizada, las herramientas mesh gestionadas resuelven mejor.
Preguntas frecuentes
¿Por qué Configura PiVPN para Acceso Remoto: Guía Definitiva para Sysadmins Linux 2026 es relevante para sysadmins Linux?
Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.
¿Qué necesito para empezar con Configura PiVPN para Acceso Remoto:?
Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.
¿Cuáles son los errores más comunes con Configura PiVPN para Acceso Remoto:?
Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.
¿Cuándo usar Configura PiVPN para Acceso Remoto: y cuándo una alternativa?
Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.
¿Cómo migro desde una configuración previa a Configura PiVPN para Acceso Remoto:?
Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.
Lee también
- Guía Fedora 44: Novedades, Instalación y Upgrade para Sysadmins Linux
- Configura VLANs en Linux con nmcli: Guía paso a paso para sysadmins
- Protege tu SSH: Guía esencial para configurar Fail2ban en Linux
- Guía Definitiva: Configura Kubernetes con kubeadm en Ubuntu para Sysadmins Linux
- Configura Prometheus y Grafana: Guía DevOps para SysAdmins Linux
