VPN frente a relé TURN: ¿qué transporta realmente una llamada WebRTC?
El túnel cambia la ruta que ve ICE; nunca asigna un relé ni proporciona señalización. Compare qué aporta una salida VPN y un servidor TURN.
La página carga por la VPN, pero la llamada nunca conecta: dos fallos distintos con la misma barra de direcciones. El túnel cambió la ruta que usa el navegador; no se convirtió en un servicio de señalización, un servidor STUN ni un relé, y no decide qué par de candidatos elegirá ICE. Separar la tarea que cumple cada componente es lo que convierte un vago “WebRTC está bloqueado” en un fallo concreto.
Cuatro tareas, y el túnel solo toca una
La aplicación intercambia información de sesión mediante algún mecanismo de señalización, y esa es la primera tarea. ICE reúne direcciones candidatas y prueba pares hasta que uno funciona, que es la segunda. STUN permite a un par saber cómo se ve su tráfico desde fuera, y TURN asigna un relé para los casos en que no existe una ruta directa. Esos cuatro papeles son distintos, y una VPN afecta a las direcciones y al filtrado que encuentran en lugar de aportar cualquiera de ellos.
Por eso un inicio de sesión correcto no dice nada sobre la ruta de los medios. La señalización suele viajar por el mismo HTTPS que la página ya usa, en el puerto 443, mientras que los medios pueden ir por UDP hasta un destino completamente distinto.
El direccionamiento privado empeora la confusión. Una dirección de túnel solo es útil para un par cuando este tiene una ruta prevista de vuelta hacia ella; ser privada no es prueba de alcanzabilidad mutua, y los navegadores no lo tratan así cuando descartan candidatos que no se pueden comprobar. Un candidato que a usted le parece local puede ser incomprobable desde el otro lado. Merece la pena descartar esa laguna antes de concluir que el túnel está perdiendo medios.
Compare una salida VPN con un relé TURN
Ambos reenvían paquetes, por eso se confunden, y la tabla comparativa de arriba merece leerse columna por columna y no como una lista de funciones. La asignación de un relé es un objeto por sesión creado por una petición autenticada; un túnel es una ruta. Uno tiene credenciales que caducan, el otro tiene una dirección de par que o es alcanzable o no lo es.
| Component | What it contributes | What it needs to work | What it cannot do |
|---|---|---|---|
| VPN exit | Changes the observed mapping and the route packets take | A working tunnel and a policy that permits the media transport | Allocate a relay or supply signaling |
| STUN server | Reports the mapped address a peer appears to use | Reachability from the client, on its configured transport | Carry media when a direct path fails |
| TURN server | Relays media through an authenticated allocation | Valid credentials, an allowed transport and sufficient capacity | Fix a missing ICE policy or an unauthorized client |
| Signaling channel | Carries offers, answers and candidate lists | Both peers reaching the same application endpoint | Establish connectivity by itself |
Los números de puerto hacen concreta la diferencia. TURN escucha por defecto en 3478 para UDP y TCP y en 5349 para TLS, y una red que permite el 443 pero descarta esos puertos hará fallar las llamadas relayadas mientras la navegación sigue con normalidad. Cambiar el puerto de la VPN no configura nada de eso, porque los puertos que importan pertenecen al servicio de relé, no al túnel.
Lea el diagnóstico y luego pruebe la llamada
Los navegadores exponen la información que necesita sin capturar paquetes. Abra la página de diagnóstico de WebRTC de su navegador, haga la llamada y lea el par de candidatos seleccionado en lugar de la lista recopilada: qué tipos de candidato local y remoto se eligieron, por qué transporte y familia de direcciones, y si la ruta es directa o relayada.
Dos lecturas conviene conocerlas de antemano. Si el par seleccionado es host a host en direcciones privadas, los medios se quedan en una ruta sobre la que puede razonar; si es relé a relé, la llamada consume capacidad de relé y depende de la disponibilidad de ese servicio. Un fallo que se detiene en “comprobando” sin par seleccionado significa que se reunieron candidatos, pero ninguno superó las comprobaciones de conectividad.
Después compare los mismos dos extremos en la misma llamada cambiando solo una condición aprobada, y acepte el resultado por medios o datos bidireccionales y no por un indicador de conectado. La recopilación de candidatos tiene éxito en muchos casos que no transportan ni un solo fotograma de audio. Repita la llamada al otro lado del cambio y conserve las dos capturas de diagnóstico, porque comparar dos ejecuciones informa más que leer cualquiera de ellas sola. Mismos extremos, mismo códec, una variable alterada.
Una aplicación que fija deliberadamente su política de transporte ICE en relay solo pide candidatos de relé. Ese ajuste no crea un relé ni repara credenciales ausentes; hace explícito el requisito, lo que resulta útil cuando alguien culpa a la VPN de una política que eligió el sitio.
Mantenga la afirmación de privacidad tan estrecha como las pruebas
La exposición de candidatos depende de la política del navegador y de la aplicación, no solo del estado del túnel, y la especificación W3C de conexión entre pares trata el manejo de IP como un asunto propio. Una VPN conectada es, por tanto, una base pobre para prometer que una llamada revela solo una dirección elegida. Dos pares tras el mismo túnel pueden incluso elegir una ruta que nunca sale del host, lo que es a la vez una mejora de privacidad y una restricción de conectividad.
Lo que puede afirmar con precisión es más estrecho y más útil: qué par de candidatos se seleccionó, qué transporte lo llevó y si esa ruta se quedó dentro del túnel. Anote esos tres hechos para una llamada que funciona y para una que falla, y la diferencia suele nombrar el componente que hay que arreglar.
Una vez que la conectividad funciona, separe el rendimiento de la alcanzabilidad. Pérdida, retardo, colas y MTU están todos aguas abajo de un par de candidatos correcto, y tratar una llamada entrecortada como un fallo de conectividad le devuelve a la lista de candidatos sin motivo.