Key Takeaways
- Protocolo VPN: Se recomienda WireGuard (rápido, moderno). OpenVPN (más lento, mayor compatibilidad) como alternativa.
- Configuración: Servidor VPN en la misma red que el servidor LLM. Los usuarios remotos se conectan mediante WireGuard.
- Latencia: +5-10 ms por conexión (normalmente imperceptible). Rendimiento = limitado por el ancho de banda de internet.
- Tiempo de configuración: 30 min (WireGuard) a 2 horas (OpenVPN + integración de autenticación).
- Costo: Gratis (código abierto) o $50-200/año (servicio VPN administrado si no quieres alojarlo tú mismo).
- Seguridad: WireGuard tiene 4,000 LOC (superficie de ataque baja). OpenVPN tiene 400K+ LOC (complejo).
- Cifrado: Ambos soportan AES-256. Seguridad de extremo a extremo (usuario remoto → VPN → servidor LLM).
- Sin split tunneling = la empresa controla todo el tráfico de internet. Con split tunneling = el usuario enruta el tráfico no-LLM fuera de la VPN.
Protocolos VPN: WireGuard vs OpenVPN
| Característica | WireGuard | OpenVPN |
|---|---|---|
| Característica | WireGuard | OpenVPN |
| Latencia | ~5 ms de sobrecarga | ~15 ms de sobrecarga |
| Complejidad de configuración | Simple (30 min) | Compleja (2 horas) |
| Tamaño del código | 4,000 LOC (auditable) | 400K+ LOC (complejo) |
| Autenticación | Clave pública | Certificados + claves |
| Split tunneling | ✓ Integrado | ✓ Requiere configuración |
| VPN corporativa (AD/SAML) | Limitado (auth manual) | Mejor (soporte RADIUS) |
| Recomendación | Usa este | Alternativa si no hay WireGuard |
Configuración: servidor VPN en la red LLM
- 1Instala WireGuard en el servidor VPN (VM Linux en la misma LAN que el servidor LLM).
- 2Genera las claves: Clave privada (secreto del lado del servidor), claves públicas (distribuir a los clientes).
- 3Regla de firewall: Permite UDP 51820 (puerto predeterminado de WireGuard) entrante desde internet.
- 4Configuración del cliente: Cada usuario recibe un archivo .conf con clave privada, endpoint del servidor, IPs permitidas.
- 5Software cliente: Aplicación de escritorio WireGuard (Mac, Windows, Linux) o móvil (iOS, Android).
- 6Prueba: El usuario conecta la VPN, hace ping al servidor LLM (debe responder), ejecuta inferencia mediante la API.
Impacto en el rendimiento
Latencia: WireGuard añade 5-10 ms. La inferencia LLM ya toma 10-100 ms/token, por lo que el impacto es <5% perceptible.
Rendimiento: Limitado por tu conexión a internet (p. ej., 100 Mbps de internet doméstico = 12 MB/seg = adecuado para LLM).
Ejemplo: Enviar prompt de 10 KB + recibir respuesta de 5 KB = 15 KB en total. A 100 Mbps = ~1 ms de latencia de red (insignificante).
Sobrecarga de cifrado: Los CPU modernos tienen instrucciones AES-NI. Cifrado/descifrado a 500 Mbps+ por núcleo.
Split Tunneling (acceso solo al LLM, no a internet)
Por defecto, la VPN enruta TODO el tráfico (internet + LLM) a través del túnel corporativo.
Esto puede ser lento si los usuarios quieren navegar por internet mientras usan el LLM.
Split tunneling = solo el tráfico LLM pasa por la VPN, el tráfico de internet va directamente.
Ejemplo de split tunneling en WireGuard: `AllowedIPs = 10.0.0.0/24` (solo la red LLM).
Compensación: Internet más rápido, pero menos supervisión de seguridad (el usuario puede filtrar datos fuera de la VPN).
Recomendación: Split tunneling para usuarios (mejor UX). Monitorea con detección de endpoints (CrowdStrike, Sentinel One).
Refuerzo de seguridad
- Firewall: Permite solo que el servidor VPN se comunique con el servidor LLM. Descarta todo el demás tráfico.
- Rotación de claves: Cada 6 meses, regenera las claves del cliente. Al dar de baja a un usuario: revoca sus claves de inmediato.
- Registros: Registra las conexiones VPN (quién, cuándo, cuánto tiempo). Audita trimestralmente.
- Contraseñas: El servidor VPN debe usar solo claves SSH (sin autenticación por contraseña). SSH sin contraseña mediante par de claves.
- Fail closed: Si la VPN se desconecta, el cliente no puede acceder a internet (a menos que el split tunneling esté habilitado).
Solución de problemas de acceso remoto
No puede conectarse: Verifica las reglas del firewall en el router (¿UDP 51820 abierto?). Verifica que el servicio WireGuard esté en ejecución (`wg show`).
Inferencia lenta: Verifica la latencia (`ping 10.0.0.1` dentro de la VPN, debe ser <20 ms). Verifica el ancho de banda de internet (`iperf3`).
Timeout de API: La conexión VPN se cayó. Revisa los registros (`journalctl -u wg-quick@wg0`). Reinicia WireGuard.
Un usuario no puede acceder, otros sí: Verifica la clave pública del usuario en la configuración del servidor. Regenera el par de claves.
Preguntas frecuentes
¿Debo usar una VPN o exponer la API LLM a internet?
Siempre usa VPN. Nunca expongas el LLM directamente a internet (DDoS, acceso no autorizado). VPN + firewall es seguro.
¿Pueden los usuarios acceder a la API LLM sin VPN?
Solo desde la LAN (misma red). Los usuarios remotos DEBEN usar VPN. O usa un túnel SSH inverso (menos seguro).
¿El cifrado VPN ralentiza la inferencia?
De forma insignificante (<5% de impacto). Los CPU modernos pueden cifrar/descifrar a velocidades de Gbps.
¿Debo usar split tunneling?
Sí, para mejor UX. Monitorea con EDR (detección de endpoints) para exfiltración de datos.
¿Qué pasa si una clave VPN se ve comprometida?
Regenera la clave de ese usuario de inmediato. La clave antigua queda inválida. Sin acceso retroactivo.
¿Puedo usar la VPN corporativa (Okta, Azure)?
Sí, mejor para equipos grandes. Pero requiere integración (RADIUS, SAML). WireGuard es más simple para <20 usuarios.
Fuentes
- Documentación oficial de WireGuard y guía de inicio rápido
- Documentación de la comunidad OpenVPN y OpenVPN Access Server
- Marco de ciberseguridad NIST: mejores prácticas de VPN