VPN 킬스위치가 작동 안 하는 순간들
킬스위치가 있으면 안전하다고 믿는다. 하지만 킬스위치도 뚫리는 상황이 있다. 그 시나리오를 구체적으로 파헤친다.
“킬스위치 켜놨으니까 VPN 끊겨도 괜찮지.”
틀리지는 않다. 하지만 절반만 맞다.
킬스위치가 뭔가
VPN은 가끔 끊긴다. 서버 문제, 네트워크 전환, 신호 불안정. 이유는 다양하다.
VPN이 끊기는 순간, 기기는 맨몸으로 인터넷에 접속한다. 실제 IP가 노출되고, 트래픽이 암호화 없이 흐른다.
**킬스위치(Kill Switch)**는 VPN이 끊기면 인터넷 연결 자체를 차단하는 기능이다. VPN 없이는 인터넷을 못 쓰게 막아버린다. 잠깐 연결이 끊겨도 실제 IP가 새어나가지 않는다.
좋은 개념이다. 그런데 항상 완벽하게 작동하지는 않는다.
실패 시나리오 1: VPN 재연결 타이밍
킬스위치가 작동하는 순서를 생각해보자.
- VPN 연결이 끊긴다
- VPN 앱이 이것을 감지한다
- 킬스위치가 인터넷을 차단한다
문제는 1번과 2번 사이, 2번과 3번 사이에 시간 간격이 있다는 것이다. 길지 않다. 수십 밀리초에서 수백 밀리초.
하지만 그 짧은 순간에 브라우저나 앱이 연결 요청을 보낸다면, 실제 IP가 담긴 패킷이 나간다.
대부분의 경우 이건 큰 문제가 아니다. 하지만 고도로 민감한 환경이라면 이 짧은 틈이 문제가 된다.
실패 시나리오 2: IPv6 유출
많은 VPN은 IPv4만 처리한다.
인터넷 주소 체계는 두 가지다. 오래된 IPv4(예: 192.168.1.1)와 새로운 IPv6(예: 2001:db8::1). 최신 기기와 네트워크는 IPv6를 지원한다.
VPN이 IPv4 트래픽만 터널로 보내면, IPv6 트래픽은 터널 밖으로 그냥 나간다. 킬스위치가 IPv4만 차단한다면, IPv6를 통해 실제 IP가 노출될 수 있다.
이걸 IPv6 유출이라고 한다. 체크하지 않으면 모르고 넘어가는 구멍이다.
확인 방법: ipleak.net에서 VPN 연결 상태로 접속해보면 IPv6 유출 여부를 바로 알 수 있다.
실패 시나리오 3: WebRTC 유출
WebRTC는 브라우저에서 영상통화, 파일공유 같은 실시간 통신을 가능하게 하는 기술이다. Zoom 같은 거 브라우저에서 쓸 수 있는 게 WebRTC 덕분이다.
WebRTC는 작동을 위해 상대방과 직접 연결(P2P)을 시도한다. 이 과정에서 브라우저가 실제 IP를 상대방에게 공개할 수 있다. VPN을 통하지 않고.
킬스위치는 WebRTC 유출을 막지 못한다. 킬스위치는 네트워크 레벨에서 작동하는데, WebRTC는 브라우저 레벨에서 실제 IP를 노출하기 때문이다.
해결책: 브라우저 설정에서 WebRTC를 비활성화하거나, 이를 막아주는 확장 프로그램을 쓴다. Firefox는 about:config에서 media.peerconnection.enabled를 false로 설정하면 된다.
실패 시나리오 4: 앱 수준 킬스위치의 한계
일부 VPN은 “앱 수준 킬스위치”를 제공한다. VPN이 끊기면 특정 앱만 차단하는 방식이다.
이건 시스템 전체 킬스위치보다 약하다.
왜냐하면 보호 목록에 없는 앱은 VPN 없이도 인터넷에 접속할 수 있기 때문이다. 새로 설치한 앱, 시스템 업데이트 프로세스, 백그라운드 서비스. 이것들이 빠져나간다.
시스템 킬스위치가 낫다. OS 레벨에서 모든 트래픽을 차단하는 방식이다. 예외 없다.
실패 시나리오 5: 기기 재시작
기기를 껐다 켤 때, VPN 앱이 시작되기 전에 잠깐 네트워크가 활성화되는 경우가 있다.
이 짧은 순간 동안 OS가 자동 업데이트를 확인하거나, 앱이 서버에 연결하려 시도할 수 있다. VPN 없이.
해결책: VPN을 OS 수준에서 설정한다. Windows의 내장 VPN 설정이나, macOS의 Network Extension을 쓰면 부팅 초기부터 킬스위치가 작동한다. 하지만 이건 설정이 복잡하다.
제대로 된 킬스위치를 쓰려면
OS 방화벽 기반 킬스위치를 지원하는 VPN을 선택한다. 이 방식은 VPN 앱이 죽어도 방화벽 규칙이 남아있어서 트래픽을 차단한다.
Mullvad의 킬스위치는 이 방식으로 작동한다. VPN 앱 자체가 꺼져도 방화벽 규칙이 남아있다.
반면 앱 자체에서만 트래픽을 막는 방식은, 앱이 크래시(충돌로 종료)되면 킬스위치도 함께 사라진다.
결론
킬스위치는 중요하다. 없는 것보다 훨씬 낫다.
하지만 “킬스위치가 있으니 완벽히 보호된다”는 생각은 위험하다.
IPv6 유출 확인, WebRTC 비활성화, 시스템 레벨 킬스위치 설정. 이 세 가지를 추가로 챙겨야 진짜 보호가 된다.