Deshazte de tu VPN: Construye un Túnel Privado con Cero Pérdida de Paquetes a tu Red Doméstica
Estás sentado en un hotel al otro lado del mundo, mirando fijamente una terminal congelada. Presionas Enter en un simple comando SSH, y el cursor solo te parpadea. Cinco minutos después: Operation timed out (Operación agotada). Enciendes tu VPN corporativa, lo intentas de nuevo, y ahora tus llamadas a la API fallan debido al bloqueo geográfico.
Seamos realistas: las VPN comerciales no están destinadas a los desarrolladores. Son una pesadilla de mantenimiento, sus direcciones IP están marcadas por todos los firewalls del planeta, y la pérdida de paquetes sobre el enrutamiento internacional estándar destruirá tu flujo de trabajo.
Este es el trato. Vamos a construir un puente sólido como una roca y anti-bloqueo. Usaremos un VPS premium para captar tu tráfico en un carril VIP de Internet y haremos un agujero directo hacia una Raspberry Pi ubicada en tu sala de estar. Sin terminales congeladas. Sin bloqueos geográficos. Solo acceso puro y sin restricciones a tu red doméstica.
Inmersión Profunda: Por Qué Fallan las VPN Estándar
Si simplemente despliegas WireGuard u OpenVPN en un servidor en la nube aleatorio, la inspección profunda de paquetes (DPI) en regiones fuertemente censuradas marcará y limitará tu conexión en cuestión de horas.
Para vencer esto, necesitamos dos cosas:
- Enrutamiento Premium (AS9929/AS10099): Esta es la capa física. En lugar de rebotar a través de nodos de red públicos congestionados, compras un VPS que se asienta sobre un cable empresarial de élite de baja latencia.
- VLESS-Reality: Este es el disfraz. En lugar de parecer tráfico de proxy, VLESS-Reality hace que tu conexión se vea exactamente como tráfico HTTPS estándar que llega a un sitio importante (como iCloud o Windows Update). El firewall solo ve a un chico sincronizando su calendario, no a un desarrollador creando un túnel hacia una red privada.
Vamos a construirlo.

Fase 1: Obtén tu Relé de Élite (SaltyFish VPS)
Para construir un puente con cero pérdida de paquetes, necesitas un VPS que se encuentre en un "carril VIP" de Internet. Estamos usando SaltyFish como nuestro ejemplo porque se especializan en enrutamiento empresarial premium (AS9929 y AS10099) que es esencial para vencer la congestión internacional.
1. Registro
Ve a portal.saltyfish.io y registra una cuenta. Usa una dirección de correo electrónico real ya que la necesitarás para las credenciales del servidor y la facturación.
2. Elegir el Paquete Correcto
Inicia sesión y ve a Services (Servicios) -> Order New Services (Ordenar Nuevos Servicios).
- Location (Ubicación): Busca "San Jose - Premium" o "Frankfurt - Premium".
- Network (Red): Asegúrate de que la descripción mencione AS9929 o AS10099. Esta es la salsa secreta. Las rutas estándar "BGP" no te darán la misma estabilidad.
- Specs (Especificaciones): El plan más pequeño de 1vCPU / 1GB RAM es más que suficiente para un túnel de red.
3. Pago
Elige Debian 12 como tu sistema operativo. Establece una contraseña root fuerte. Completa el pago. Una vez que el estado cambie a "Active (Activo)", copia tu Server IP Address (Dirección IP del Servidor).
Fase 2: Desplegar el Puente en la Nube (VPS)
El VPS actúa como nuestra estación de relé estable. Atrapa nuestro tráfico en ese cable premium y lo reenvía a nuestra casa.
Abre tu terminal, entra por SSH a tu nuevo VPS SaltyFish y pon en marcha Docker. Es súper simple:
# Iniciar sesión en el VPS e ingresar la contraseña
ssh root@[IP_ADDRESS]
Actualiza tu sistema e instala Docker usando el script oficial:
# Actualizar paquetes e instalar requisitos previos
apt update && apt install -y ufw curl wget nano
# Extraer el script de instalación oficial de Docker
curl -fsSL https://get.docker.com | sh
# Habilitar e iniciar el demonio de Docker
systemctl enable docker && systemctl start docker
A continuación, bloquea el firewall. Solo necesitamos los puertos 443 (para tu cliente) y 7000 (para la Raspberry Pi).
ufw allow ssh
ufw allow 7000/tcp
ufw allow 443/tcp
ufw --force enable
Ahora, implementamos el servidor FRP (frps). Esto maneja la magia del proxy inverso para que no tengamos que meternos con el reenvío de puertos del enrutador de tu casa.
mkdir -p /root/frp && cd /root/frp
# Crea el archivo de configuración ANTES de ejecutar Docker
nano frps.toml
Consejo Pro: NO te saltes la creación del archivo
frps.tomlantes de ejecutar el comando Docker. Si pasas un archivo inexistente a un montaje de volumen de Docker, Docker asumirá que es un directorio y creará una carpeta llamadafrps.toml. Obtendrás un desagradable errorOCI runtime create failedy tendrás que ejecutarrm -rfen él. Ahórrate el dolor de cabeza.
Pega esto en frps.toml:
# Configuración del VPS (ej. Saltyfish VPS)
serverAddr = "Your_VPS_Public_IP"
# El puerto al que se conectará tu Raspberry Pi
bindPort = 7000
# Cambia esto a algo que no vayas a adivinar
auth.token = "YOUR_SUPER_SECRET_PASSWORD"
[[proxies]]
name = "xray-reality"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8443
remotePort = 443
Ponlo en marcha:
docker run -d --name frps --restart=always \
--network host \
-v /root/frp/frps.toml:/etc/frp/frps.toml \
snowdreamtech/frps
Fase 3: Bloquear la Base de Operaciones (Raspberry Pi)
Ahora dejamos la nube y nos dirigimos a casa. Necesitamos preparar tu Raspberry Pi para que actúe como el terminal para nuestro túnel seguro.
3.1 Verificar la Conectividad
Antes de intentar iniciar sesión, asegúrate de que tu Pi esté viva en tu red local. Encuentra su dirección IP (generalmente a través de la página de administración de tu enrutador) y hazle un ping:
ping YOUR-PI-IP # o usa la IP directamente
Si ves 0.0% packet loss (0.0% pérdida de paquetes), estás listo para continuar.
3.2 Entrar por SSH a la Pi
Abre tu terminal y salta a la Pi. Si es la primera vez que te conectas, verás una advertencia sobre la "autenticidad del anfitrión" (authenticity of host). Escribe yes para agregarlo a tus known_hosts.
ssh your_username@YOUR-PI-IP # usa tu dirección IP local, o el nombre de host de tu Raspberry Pi.
3.3 La Trampa de "Comando No Encontrado" (Command Not Found)
Muchos desarrolladores intentan ejecutar comandos de Docker de inmediato y se topan con -bash: docker: command not found. No entres en pánico; solo significa que Docker aún no está instalado.
Ejecuta el script de conveniencia oficial para poner en marcha el motor:
curl -fsSL https://get.docker.com | sudo sh
3.4 Gestión de Permisos
Por defecto, Docker requiere privilegios de root. Para evitar escribir sudo cada cinco segundos, agrega tu usuario al grupo docker:
# Reemplaza $USER con tu nombre de usuario real
sudo usermod -aG docker $USER
newgrp docker
3.5 Desplegando el Panel de Control 3X-UI
Ahora desplegamos el cerebro de nuestra operación. Este panel administrará nuestras credenciales VLESS-Reality.
docker run -itd \
-p 2053:2053 \
-p 8443:8443 \
--name 3x-ui \
--restart=always \
ghcr.io/mhsanaei/3x-ui:latest
3.6 Conectando el Cliente FRP
Finalmente, necesitamos conectar la Pi de regreso al Puente en la Nube (VPS).
Consejo Pro sobre Rutas: No uses rutas codificadas de forma rígida como
/home/pi/frp. Dependiendo de tu configuración, tu directorio de inicio podría llevar el nombre de tu usuario (por ejemplo,/home/elvisli). Siempre usa~/para referirte a tu carpeta personal.
mkdir -p ~/frp && cd ~/frp
nano frpc.toml
Pega tu configuración (coincidiendo con el token de tu VPS):
serverAddr = "YOUR_VPS_PUBLIC_IP"
serverPort = 7000
auth.token = "YOUR_SUPER_SECRET_PASSWORD"
[[proxies]]
name = "xray-reality"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8443
remotePort = 443
Cuidado con la "Basura al Pegar" (Paste Garbage): Si ves aparecer ^[[200~ en tu terminal, es una señal de que el "modo de pegado entre corchetes" salió mal. A menudo sucede al copiar desde un navegador a un terminal. Simplemente retrocede y elimina esos caracteres adicionales antes de ejecutar tu comando.
Lanza el cliente del túnel:
docker run -d --name frpc --restart=always \
--network host \
-v ~/frp/frpc.toml:/etc/frp/frpc.toml \
snowdreamtech/frpc
El túnel físico está ahora establecido. Tu Pi doméstica ahora es "visible" para tu VPS en la nube.
Fase 4: Configurar la Capa VLESS-Reality
Salta a un navegador en tu red local y ve a http://YOUR_PI_LOCAL_IP:2053. Inicia sesión con admin / admin.
- Ve a Inbounds (Entrantes) -> Add Inbound (Añadir Entrante).
- Establece el Protocol (Protocolo) en vless, el Port (Puerto) en 8443.
- Establece el Flow (Flujo) en xtls-rprx-vision.
- Establece Security (Seguridad) en reality.
- Establece uTLS en chrome y Dest/Server Names en www.icloud.com:443. (Esto hace que nuestro túnel se vea idéntico al tráfico de sincronización en la nube de Apple).
- Haz clic en Get New Keys (Obtener Nuevas Claves) y Generate (Generar) (para ShortIds).
- Guárdalo.
Haz clic en el icono del código QR junto a tu nueva regla y presiona Copy Link (Copiar Enlace). Obtendrás una cadena desordenada que comienza con vless://....
Fase 5: Configuración del Cliente (Shadowrocket para iPhone y Mac)
Ahora que el túnel se está ejecutando desde tu Pi hasta el VPS, necesitamos conectar tu teléfono.
5.1 Exportar el Nodo
- Accede a tu panel 3X-UI.
- Haz clic en los tres puntos (menú) en tu entrante VLESS.
- Selecciona "Export All URLs" (Exportar todas las URL). Esto copia el enlace
vless://a tu portapapeles.
5.2 Importar a Shadowrocket
- Abre Shadowrocket en tu iPhone.
- Debería detectar automáticamente el enlace en tu portapapeles y pedirte que lo agregues. Haz clic en Add (Agregar).
- Si no aparece ninguna ventana emergente, haz clic en el icono +, establece Type (Tipo) en URI y pega el enlace.
5.3 La Configuración del Puente
Este es el paso más crítico. De manera predeterminada, el nodo apunta a la IP local de tu Pi. Necesitamos redirigirlo a nuestro Puente en la Nube.
- Toca el icono (i) junto al nuevo nodo.
- Address (Dirección): Elimina la IP local e ingresa la IP Pública de tu VPS SaltyFish.
- Port (Puerto): Cámbialo a 443.
- Type (Tipo): Asegúrate de que diga VLESS.
- Haz clic en Save (Guardar).
5.4 Prueba de Encendido
Para probar que la arquitectura funciona desde el mundo exterior:
- Apaga el Wi-Fi. Asegúrate de estar usando Datos Celulares (5G/LTE).
- En Shadowrocket, selecciona tu nodo (aparecerá un pequeño punto naranja).
- Mueve el interruptor principal a Connected (Conectado).
- Visita
google.com. Si carga, te has conectado exitosamente a tu red doméstica desde la Internet pública.
Fase 6: Configuración para Desarrolladores en macOS
Para un desarrollador, el simple hecho de tener un proxy en el navegador no es suficiente. Necesitamos que toda nuestra estación de trabajo respete el túnel.
6.1 Instalación
Si tienes una Mac con Apple Silicon (M1/M2/M3), puedes instalar la versión de macOS de Shadowrocket directamente desde la Mac App Store. Es mucho más eficiente que usar envoltorios (wrappers) de terceros.
6.2 Proxy del Terminal
Las aplicaciones de terminal de macOS (Git, npm, curl) generalmente ignoran la configuración de VPN del sistema. Necesitamos "conectarlas" manualmente.
-
Verificar el Puerto Local: En Shadowrocket Mac, ve a Settings (Configuración) -> Proxy. Observa el puerto HTTP/SOCKS5 (generalmente
1082). -
Proxy Inmediato: Ejecuta esto en tu terminal para enviar la sesión actual a través del proxy:
export http_proxy=http://127.0.0.1:1082
export https_proxy=http://127.0.0.1:1082
Pruébalo: curl -I https://www.google.com. Si ves HTTP/2 200, está funcionando.
Alias Persistentes: Agrega estos a tu ~/.zshrc para un flujo de trabajo elegante:
# Activar el proxy
alias proxy="export http_proxy=http://127.0.0.1:1082; export https_proxy=http://127.0.0.1:1082; echo 'Terminal Proxy ON'"
# Desactivar el proxy
alias unproxy="unset http_proxy https_proxy; echo 'Terminal Proxy OFF'"
Ejecuta source ~/.zshrc. Ahora solo tienes que escribir proxy para pasar desapercibido.
Fase 7: Proxy Git SSH
Esta es la "trampa" en la que caen la mayoría de los desarrolladores. Si usas claves SSH para GitHub (git clone git@github.com...), ignora por completo http_proxy porque utiliza el protocolo SSH.
Para solucionar esto, debemos configurar el cliente SSH para que utilice nuestro túnel local.
- Edita tu configuración SSH:
nano ~/.ssh/config. - Agrega este bloque en la parte superior:
Host github.com
HostName github.com
User git
# Forzar el tráfico SSH de GitHub a través del puerto SOCKS5 de Shadowrocket
ProxyCommand nc -X 5 -x 127.0.0.1:1082 %h %p
git push volarán a través de tu túnel privado, sin importar dónde te encuentres.En Conclusión
Ya no estás a merced del Wi-Fi público ni de los bloqueos de VPN comerciales. Tienes un carril de enrutamiento privado de nivel empresarial que conecta tu estación de trabajo remota directamente con tu base de operaciones.
Mantente seguro. Mantente rápido. Feliz programación.

