WebRTC 누출 테스트

VPN이 웹사이트로부터 실제 IP를 숨기고 있어도 브라우저는 WebRTC를 통해 이를 드러낼 수 있습니다. 이 테스트는 내 브라우저가 그런지 확인합니다 — 전부 브라우저 안에서 실행되며, 데이터를 어디로도 보내지 않습니다.

WebRTC 탐색 중…

WebRTC 누출이란?

WebRTC는 P2P 오디오·비디오·데이터를 위한 브라우저 기능으로, Google Meet, Discord 등 많은 웹 앱이 사용합니다. P2P 연결을 맺기 위해 브라우저는 STUN 서버를 통해 로컬 주소와 NAT 뒤의 주소를 포함한 자신의 IP 주소들을 알아냅니다. 웹사이트는 브라우저가 이 탐색을 조용히 실행하게 한 뒤 JavaScript로 결과 IP를 읽을 수 있습니다 — VPN을 완전히 우회해서요.

테스트 작동 방식

브라우저가 가짜 RTCPeerConnection을 만들고 createOffer를 호출한 뒤 생성된 ICE 후보를 읽습니다. ICE 후보에는 브라우저가 찾을 수 있는 모든 IP가 들어 있습니다 — VPN이 다른 모든 트래픽을 터널링하고 있어도 실제 IP까지 포함해서요. 테스트는 로컬에서 실행되며, 우리 서버로는 아무것도 전송되지 않습니다.

WebRTC 누출 해결법

세 가지 방법: (1) WebRTC 누출을 능동적으로 차단하는 VPN을 사용하세요(Doppler의 iOS·Android 앱은 터널 밖 WebRTC를 비활성화합니다). (2) WebRTC를 비활성화하는 브라우저 확장 프로그램을 설치하세요(uBlock Origin에 해당 옵션이 있습니다). (3) Firefox에서는 about:config의 media.peerconnection.enabled를 false로 설정하세요. WebRTC를 끄면 브라우저 내 영상 통화가 작동하지 않으니 네이티브 앱을 대신 사용하세요.

FAQ

WebRTC란?+

WebRTC는 모든 최신 브라우저에 내장된 W3C 표준으로, 실시간 P2P 오디오·비디오·데이터 통신을 제공합니다. Google Meet, Discord 웹, Zoom 웹 클라이언트, 그리고 대부분의 브라우저 기반 영상 채팅을 구동합니다. P2P 통화를 가능하게 하는 그 API가 JavaScript에 로컬 네트워크 주소 탐색도 허용합니다.

왜 WebRTC는 VPN을 통해서도 실제 IP를 누출하나요?+

WebRTC 스택은 애플리케이션 계층 아래에서 동작하며 STUN을 통해 네트워크 인터페이스를 직접 조회하기 때문입니다. VPN은 IP 계층에서 트래픽을 터널링하지만 WebRTC의 주소 탐색 호출은 막지 않습니다. 누출된 주소는 암호화 터널 안으로 이동하지만, 브라우저가 이를 페이지의 JavaScript에 넘겨주고, JavaScript는 어디로든 보낼 수 있습니다.

어떤 브라우저가 영향을 받나요?+

기본 설정에서는 전부입니다: Chrome, Edge, Firefox, Safari, Brave, Opera, Arc. Brave에는 WebRTC IP 누출 방지 설정이 있지만 기본적으로 꺼져 있습니다. Firefox는 about:config에서 WebRTC를 완전히 끌 수 있습니다. iOS Safari는 iOS 14부터 부분적으로 완화됐지만 완전히 막히지는 않았습니다.

Doppler VPN은 WebRTC 누출을 차단하나요?+

네. iOS·Android 클라이언트는 터널 밖 모든 UDP 트래픽을 차단하는 로컬 킬 스위치를 실행해 STUN 탐색이 외부 서버에 도달하지 못하게 합니다. 데스크톱에서는 완전한 보호를 위해 VPN에 uBlock Origin의 WebRTC 설정이나 브라우저 수준 비활성화를 함께 사용하길 권합니다.

WebRTC를 끄면 웹사이트가 고장 나나요?+

브라우저 내 영상 통화(Meet, Zoom 웹, Discord 웹)와 일부 협업 도구가 작동하지 않게 됩니다. 일반 브라우징, 스트리밍, P2P 연결이 필요 없는 것에는 영향이 없습니다. 해당 서비스들의 네이티브 앱은 WebRTC에 의존하지 않습니다.

이 테스트는 프라이버시를 지키나요?+

네. 테스트는 표준 RTCPeerConnection API를 사용해 전부 브라우저 안에서 실행됩니다. IP도, 결과도, 메타데이터도 기기를 떠나지 않습니다. 테스트를 실행했다는 사실조차 기록하지 않습니다.