Cuando una página de prueba WebRTC imprime 172.20.4.15, ha aprendido que existe una interfaz local en esa red. Eso es una revelación genuina y no es el mismo hallazgo que «los medios salieron por la salida de la VPN». El descubrimiento de candidatos y el enrutamiento de paquetes son mecanismos separados, y la mayoría de los informes de fugas los fusionan en un solo veredicto. Cuál de los dos estés mirando decide la solución.

La recopilación ocurre antes de que se envíe nada

El navegador enumera las interfaces locales, envía una solicitud de vinculación a un servidor STUN y pide una asignación a un servidor TURN, y después escribe los resultados en la descripción de la sesión como líneas de candidatos. Todo eso termina sin llamada, sin medios y sin interlocutor. Una lista de candidatos es, por tanto, un registro del descubrimiento, no del transporte.

Los navegadores modernos pueden sustituir la dirección literal de un candidato de host por un nombre mDNS .local, de modo que la página no puede leer la IP privada. La red local sigue viendo las consultas de multidifusión que resuelven ese nombre, así que la dirección se oculta a la aplicación en lugar de eliminarse del cable.

El orden también importa: una carga nueva de la página recopila un conjunto nuevo, con otra asignación TURN y posiblemente otro mapeo reflexivo. Dos ejecuciones que no coinciden no son necesariamente dos configuraciones distintas.

Tres tipos de candidatos, tres clases de pruebas

Cada línea procede de una observación distinta. Cada tipo responde a una pregunta distinta, y la tabla los separa por lo que pueden y no pueden establecer.

CandidateDerived fromWhat it establishesWhat it cannot establish
HostAn interface on the deviceA local address exists in that networkThat the peer can reach it
Server-reflexiveA STUN binding responseHow a NAT mapped this sourceWhich exit the media will use
Peer-reflexiveA connectivity check that arrivedAn address seen by the far sideThat it was ever advertised
RelayA TURN allocationThe relay server accepted the sessionThat the relay carries the call

Un candidato de retransmisión se confunde a menudo con la dirección de internet del usuario. Pertenece al servidor TURN, y su presencia muestra que había una retransmisión disponible, no que el navegador la eligiera. La misma confusión va en sentido contrario con los candidatos de host, donde un nombre mDNS oculta la dirección a la página mientras la red sigue transportando las consultas. Lee el tipo antes de leer el valor.

El par seleccionado responde a la pregunta de enrutamiento

ICE empareja cada candidato local con cada uno remoto, ejecuta comprobaciones de conectividad sobre cada par y nombra un ganador. Ese par nombrado, visible en los diagnósticos del propio navegador, transporta los medios. Todo lo demás de la lista es una posibilidad que perdió.

El ganador te dice la forma de la ruta. De retransmisión a retransmisión pasa por el servidor TURN, un par de host se queda en la red local y un par reflexivo de servidor va directo por NAT. Ese es el hecho que necesita una comprobación de VPN, y es un hecho distinto del de la lista de direcciones. Dos llamadas con listas de candidatos idénticas pueden tomar pares diferentes.

Los candidatos no seleccionados se recopilaron igualmente, y la recopilación es tráfico de red que sale de la máquina. Una llamada que al final usó la retransmisión no significa que no se revelara nada mientras se construía la lista.

Los controles responden a objetivos, no a una puntuación de fugas

La especificación de gestión de IP de WebRTC describe varias políticas: usar solo la interfaz que lleva la ruta predeterminada, usar todas las interfaces y desactivar el UDP sin proxy para que el tráfico tenga que pasar por una retransmisión o un proxy. Cada una cambia conectividad y latencia por un tipo distinto de exposición. Cuál implementa un navegador, y con qué nombre, varía según la plataforma y la versión.

Elige la política según el objetivo. Ocultar las direcciones locales a una página es un objetivo; impedir el tráfico directo entre pares es otro; mantener cada paquete dentro del túnel es un tercero. El primero trata sobre todo de lo que aprende la aplicación, el segundo de qué ruta se permite, y el tercero debe imponerse también en el límite de la plataforma o de la VPN.

Sea cual sea el control que elijas, verifica las dos mitades: ejecuta la prueba de recopilación y anota los tipos de candidatos, y luego inspecciona el par seleccionado durante una sesión real. Una lista de direcciones limpia con una ruta de medios directa sigue siendo una ruta que no querías.

Artículos relacionados