WebRTC solo devuelve la dirección IP privada de un cient y no una dirección IP pública porque el cliente WebRTC no tiene idea de cuál es su dirección IP pública si está detrás de NAT y esto es lo que el cliente WebRTC quiere averiguar.
Si está usando VPN, su solicitud al servidor STUN, que es responsable de descubrir su dirección IP pública y detrás de qué tipo de NAT está sentado, ve su solicitud proveniente de VPN.
Pero el uso de VPN no impide que el cliente webRTC envíe solicitud de enlace al servidor STUN. Cualquier iframe incrustado puede ejecutar JavaScript que hace que el navegador inicie una transacción a un servidor STUN que puede devolver la dirección IP local, junto con la IP externa y el número de puerto que puede pasar a través del firewall o NAT de vuelta al navegador.
Cualquier aplicación que se implemente con la API de webRTC es un cliente de webRTC y sí, pueden filtrar su dirección IP privada. WebRTC es requerido por aquellas aplicaciones que desean admitir P2P-VOIP y las videollamadas, por lo que solo hay un puñado de aplicaciones.
YouTube no utiliza webRTC. Facebook Messenger y Hangout utilizan webRTC para llamadas de voz para que puedan descubrir su dirección IP privada. Los navegadores fueron los primeros en contar con soporte integrado para webRTC API y esta es la lista de sitios web que usan webrtc .
Si se está preguntando qué es lo que usa la aplicación What's para las llamadas de voz y video, usa bibliotecas PJSIP .
Si está usando VPN y encuentra que su dirección IP real tiene una fuga, eso es culpa de su cliente VPN. No está canalizando su tráfico correctamente. El servidor STUN solo debe ver la dirección IP de su servidor VPN. Si esto no sucede, significa que el cliente webRTC está realizando una solicitud STUN fuera del túnel VPN como se muestra en la figura.