블로그로 돌아가기
개념 설명·15분 분량

VPN 킬 스위치란 무엇인가 — 그리고 업체들이 말하는 세 가지 다른 의미

킬 스위치는 VPN 연결이 끊기는 순간 인터넷을 차단합니다. 핵심 아이디어는 이렇습니다. VPN이 끊기면 트래픽을 멈춰야 하며, 실제 IP 주소로 무음 복구되어서는 안 된다는 것입니다. 하지만 실제로 '킬 스위치'라는 말은 업체에 따라 최소 세 가지 다른 의미로 쓰입니다. 이들을 구별하는 방법과 실제로 무엇을 확인해야 하는지 알아봅니다.

작성: Casper's Cloak Security Team

간단히 요약하면: VPN 연결은 영구적인 상태가 아닙니다. 네트워크 세션이기 때문에 언제든 끊길 수 있습니다. Wi-Fi 로밍, 셀룰러 기지국 전환, 서버 재시작, 패킷 손실 급증, 앱 일시 중단, OS 절전 모드 전환 — 이 모든 것이 터널을 일상적으로 끊습니다. 터널이 끊기면 운영체제의 기본 라우팅 규칙이 '특정 경로가 없으면 물리 인터페이스를 사용하라'고 지시합니다. 즉, 트래픽이 실제 연결로 폴백되어 방금 통신하던 곳에 실제 IP가 노출됩니다. 킬 스위치는 '아니, 터널이 복구될 때까지 트래픽 전송을 완전히 멈춰라'라고 지시하는 메커니즘입니다. 개념은 단순합니다. 하지만 구현 방식에서 이 용어는 서로 매우 다른 장애 모드를 가진 적어도 세 가지 의미로 사용되어 왔습니다.

킬 스위치가 존재하는 이유 — 무음 폴백 문제

킬 스위치가 없을 때 무슨 일이 벌어지는지 생각해 보겠습니다. 카페에서 VPN에 연결된 채로 웹메일 클라이언트로 이메일을 읽고 있습니다. Wi-Fi가 잠깐 끊깁니다 — 아마 2초 정도. VPN 클라이언트가 재연결을 시도하지만, 기반 네트워크 자체가 없으니 재연결에 실패합니다. 30초 후 네트워크가 돌아옵니다. 이제 무슨 일이 벌어지는지는 VPN 클라이언트의 동작 방식에 달려 있습니다.

  • 킬 스위치가 없는 경우 — Wi-Fi가 복구되는 순간, 운영체제의 기본 경로가 Wi-Fi 인터페이스로 돌아갑니다. VPN 클라이언트는 여전히 재연결 중이지만, 앱들은 기다리지 않습니다. 웹메일의 백그라운드 동기화는 다음 요청을 실제 IP로, 네트워크가 제공한 DNS 리졸버를 사용해 Wi-Fi를 통해 바로 보냅니다. VPN이 재연결을 마칠 때(5~20초 후)쯤이면 이미 누출이 발생한 후입니다.
  • 킬 스위치가 있는 경우 — VPN이 끊기면 킬 스위치가 터널을 통하지 않는 모든 트래픽을 차단하는 방화벽 규칙을 설치합니다. Wi-Fi가 복구되어도, VPN 세션이 완전히 복구될 때까지 앱들은 아무것도 전송할 수 없습니다. 웹메일의 동기화 요청은 네트워크 오류로 실패하고(앱이 재시도함), 물리 인터페이스를 통해 기기 밖으로 나가는 트래픽은 없습니다.

무음 폴백 문제가 바로 킬 스위치가 해결하도록 설계된 핵심 문제입니다. 'VPN이 충돌하여 이제 일반 망으로 browsing하고 있다'는 상황이 아닙니다. 훨씬 더 미묘한 경우, 즉 VPN이 잠깐 사용 불가 상태가 되고, 앱들은 그 사실을 모른 채, 그 틈에 누출이 발생하는 경우입니다.

킬 스위치의 세 가지 종류

업체들이 '킬 스위치'라고 말할 때, 다음 세 가지 아키텍처 중 하나를 의미할 수 있습니다. 장애 모드가 다르기 때문에 이 차이는 중요합니다.

1. 시스템 전체 킬 스위치 (방화벽 기반)

가장 강력한 모델입니다. VPN 클라이언트가 운영체제에 방화벽 규칙을 설치합니다 — macOS에서는 pf, Windows에서는 Windows Filtering Platform, Linux에서는 iptables 또는 nftables, iOS/Android에서는 시스템 네트워크 확장(extension) — 을 사용하여 VPN 서버의 IP로 향하지 않는 모든 아웃바운드 패킷을 차단합니다. VPN이 연결된 상태에서는 터널 자체가 트래픽을 VPN 서버로 라우팅하므로 패킷이 통과합니다. VPN이 끊기면 '허용' 규칙에 일치하는 것이 없어 모든 것이 차단됩니다. VPN 클라이언트가 충돌하더라도 방화벽 규칙은 유지됩니다. OS 방화벽은 이를 설치한 애플리케이션과 독립적으로 동작하기 때문입니다.

2. 앱 수준 킬 스위치 (앱별 차단)

모든 트래픽을 차단하는 대신, 목록에 추가한 특정 앱의 트래픽만 차단합니다. VPN이 끊기면 해당 앱들은 VPN이 복구될 때까지 네트워크 연결을 잃습니다. 다른 앱들은 정상적으로 계속 작동합니다. 특정 브라우저, IRC 클라이언트, BitTorrent 클라이언트를 보호하는 것처럼 매우 구체적인 시나리오에는 유용합니다. 하지만 목록에 추가하지 않은 앱, 백그라운드 서비스, OS 구성 요소, 그리고 목록에 추가하는 것을 잊은 앱들이 큰 공격 표면으로 남기 때문에 일반적인 방어 수단으로는 취약합니다.

3. 네트워크 수준 방화벽 (상시 VPN)

특히 Android에서는, VPN 앱이 자체적으로 구현하는 킬 스위치보다 더 강력한 기본 기능이 있습니다. 바로 '항상 사용 설정'에 'VPN 없이는 연결 차단'이 활성화된 시스템 수준의 '상시 VPN' 설정입니다. 이것은 OS 자체가 규칙을 시행하는 방식입니다 — Android는 어떤 앱이 요청하든 VPN이 아닌 트래픽은 전혀 라우팅하지 않습니다. VPN 앱이 충돌하더라도 OS가 규칙을 유지합니다. 이것이 모바일에서 사용 가능한 가장 강력한 킬 스위치 동작 방식이며, 앱이 구현하는 킬 스위치보다 엄격하게 더 강력합니다.

각 방식이 OS 계층에서 실제로 작동하는 방식

구현 세부 사항이 중요한 이유는 장애 모드를 예측할 수 있기 때문입니다. 방화벽 기반 킬 스위치는 방화벽 API에 버그가 있을 때 실패합니다. 앱 기반 킬 스위치는 앱이 충돌할 때 실패합니다. OS가 강제하는 상시 VPN은 안전 모드로 재부팅하지 않는 한 사실상 실패하지 않습니다.

iOS 구현 — NetworkExtension과 온디맨드 규칙

iOS는 서드파티 VPN 앱에 문자 그대로의 '킬 스위치' API를 제공하지 않습니다. 대신 NetworkExtension 프레임워크의 '온디맨드 규칙' 메커니즘을 제공합니다. 이 규칙은 '어떤 앱이 예외에 해당하지 않는 네트워크 연결을 시도할 때마다, 먼저 VPN에 강제 연결하라'는 내용입니다. VPN을 수립할 수 없으면 연결 요청이 대기 상태가 됩니다. 사용자 관점에서는 킬 스위치처럼 동작하지만, 실제로는 'VPN이 끊기면 모든 것을 차단하라'는 규칙이 아니라 'VPN을 강제로 켜라'는 규칙입니다. 기능적 결과는 비슷하지만 구현 방식은 다릅니다.

NetworkExtension API는 또한 includeAllNetworks 플래그(iOS 14에서 추가됨)를 지원합니다. 이 플래그는 VPN을 시스템 수준의 네트워크 필터로 만들어, 커널 및 시스템 서비스의 트래픽조차 VPN을 통해 강제됩니다. 이 플래그가 설정되면, VPN은 실제로 완전한 킬 스위치로 기능하며, OS가 터널 외부로 트래픽이 나가지 않도록 보장합니다. 모든 VPN 업체가 이를 활성화하지는 않습니다. 이 플래그는 호환성 관련 영향이 있습니다.

Android 구현 — 상시 VPN + VPN 없이는 연결 차단

Android의 가장 강력한 킬 스위치 동작은 설정 → 네트워크 및 인터넷 → VPN → VPN 옆의 톱니바퀴 아이콘에서 '항상 사용 설정'과 'VPN 없이는 연결 차단' 두 가지 토글을 켜서 찾을 수 있습니다. 두 가지 모두 켜면, VPN 앱이 아닌 Android 시스템 자체가 VPN이 연결될 때까지 트래픽 라우팅을 거부합니다. VPN 앱이 충돌하거나, 강제 종료되거나, 제거되어도 규칙은 지속됩니다. 공식 Android 개발자 문서에 이 메커니즘이 자세히 설명되어 있습니다. 이것이 소비자 모바일 기기에서 킬 스위치 동작의 황금 기준입니다.

macOS 구현 — 시스템 네트워크 확장

macOS 11(Big Sur) 이상은 콘텐츠 필터 및 시스템 수준 네트워크 필터를 지원하는 것과 동일한 아키텍처인 System Extension 프레임워크를 통해 VPN을 실행합니다. 킬 스위치는 일반적으로 VPN 클라이언트가 설치하는 패킷 필터 규칙(pf)으로 구현되며, 경로 테이블 수정을 유지하는 네트워크 확장과 결합됩니다. VPN이 끊기면 pf 규칙이 유지되어 VPN이 다시 수립될 때까지 트래픽을 계속 차단합니다. VPN 클라이언트 자체가 충돌하면, 동작은 시스템 확장이 로드된 상태를 유지하도록 구성되어 있는지에 따라 달라집니다 — 잘 설계된 클라이언트는 규칙을 유지하고, 잘못 설계된 클라이언트는 충돌 시 규칙을 해제하여 누출이 발생합니다.

Windows 구현 — Windows Filtering Platform

Windows VPN은 일반적으로 물리 어댑터의 트래픽을 차단하고 가상 VPN 어댑터의 트래픽을 허용하는 Windows Filtering Platform(WFP) 필터 규칙을 설치하여 킬 스위치를 구현합니다. 필터는 VPN 클라이언트 프로세스가 재시작되어도 지속됩니다(사용자 공간 앱이 아닌 커널 필터 계층이 소유하기 때문). 따라서 VPN 앱이 충돌하더라도 필터는 유지됩니다. 위험 요소는 일부 VPN 클라이언트가 품질이 낮은 방화벽 규칙 전략을 사용한다는 것입니다 — 예를 들어 PowerShell이나 netsh를 통해 Windows Defender 방화벽을 조작하는 방식 — 이는 다른 방화벽 규칙이나 잘못된 구성으로 우회될 수 있습니다.

킬 스위치가 실패하는 경우 — 알아야 할 누출 조건

킬 스위치는 완벽한 보장이 아닙니다. 킬 스위치가 활성화되어 있어도 트래픽이 누출될 수 있는 잘 문서화된 조건들이 있습니다. 각 VPN 업체는 이를 다르게 처리합니다. 일부는 신중한 구현으로 해결되고, 다른 것들은 OS 수준의 협력 없이는 피할 수 없습니다.

연결 부트스트랩 중 DNS 포이즈닝

VPN 서버에 연결하려면, VPN 클라이언트는 먼저 서버의 호스트명을 확인해야 합니다. 킬 스위치가 'VPN 없이는 트래픽 없음'을 시행하고 있지만, VPN 클라이언트 자체가 VPN 서버를 찾기 위해 DNS 조회를 수행해야 한다면, 예외가 있어야 합니다 — 그리고 그 예외가 작은 누출 표면이 됩니다. 악의적인 로컬 네트워크가 DNS 응답을 포이즈닝하여 VPN 클라이언트를 가짜 서버로 리디렉션할 수 있습니다. 대부분의 클라이언트는 VPN 서버에 하드코딩된 IP를 사용하거나, TLS 인증서를 고정(pinning)하여 리디렉션된 서버가 유효성 검사를 통과하지 못하게 함으로써 이를 처리합니다. 저가형 VPN 클라이언트는 이 단계를 건너뛰는 경우가 있습니다.

IPv6 누출

네트워크에 IPv6 연결이 있지만 VPN 클라이언트의 킬 스위치가 IPv4 트래픽만 차단한다면, 킬 스위치가 '활성화'된 상태에서도 IPv6 트래픽은 물리 인터페이스를 통해 나갈 수 있습니다. 이것이 가장 흔한 실제 누출 모드 중 하나입니다. 해결책은 VPN 클라이언트가 일치하는 IPv6 방화벽 규칙도 설치하는 것입니다. 많은 구형 클라이언트는 그렇지 않습니다. 킬 스위치를 활성화한 후에는 항상 누출 테스트를 실행하여 IPv6 누출 여부를 확인하십시오.

캡티브 포털 (Wi-Fi 로그인 페이지)

카페, 공항, 호텔에서는 VPN 서버를 포함한 인터넷에 접근하기 전에 캡티브 포털을 통해 로그인해야 하는 경우가 많습니다. 엄격한 킬 스위치는 캡티브 포털이 VPN 서버가 아니기 때문에 접근을 허용하지 않습니다. 대부분의 VPN 클라이언트에는 수동으로 활성화해야 하는 '캡티브 포털을 위해 킬 스위치 일시 중지' 모드가 있습니다. 일시 중지된 동안에는 보호받지 못하므로, 킬 스위치가 다시 켜질 때까지 민감한 내용은 열람하지 마십시오. Android의 OS 네이티브 상시 VPN은 시스템 캡티브 포털 감지를 통해 이를 약간 더 우아하게 처리하지만, 트레이드오프는 동일합니다.

앱 일시 중단 및 백그라운드 재시작 경쟁 조건

모바일에서는 배터리를 절약하기 위해 OS가 VPN 앱을 일시 중단할 수 있습니다. 앱이 재개될 때, 터널이 재수립되는 짧은 시간이 있습니다. 킬 스위치가 OS 수준에서 구현된 경우(iOS의 includeAllNetworks 또는 Android의 상시 VPN을 통해)에는 누출이 없습니다. 킬 스위치가 순수하게 앱 안에서만 구현된 경우, OS가 앱을 재개했지만 VPN이 아직 재연결되지 않은 짧은 시간이 있을 수 있으며, 그 시간 동안 네트워크 호출을 하는 앱들은 누출됩니다.

부팅 시 경쟁 조건

데스크탑에서는 부팅 후 VPN 클라이언트가 시작되기 전까지의 시간이 보호받지 못합니다. 자동 시작되는 네트워크 인식 앱(메일, Slack, Steam, 시스템 업데이트 확인 등)은 VPN이 실행되기 전에 연결을 시도하는 경우가 많습니다. 강력한 킬 스위치는 방화벽 규칙을 영구적인 부팅 시 규칙으로 설치하여, 부팅 시에도 VPN이 연결될 때까지 트래픽이 차단됩니다. 대부분의 소비자용 VPN 클라이언트는 이를 수행하지 않습니다. 규칙은 클라이언트가 시작된 후에만 적용됩니다.

킬 스위치 유형 비교

유형차단 대상OS 지원주요 장애 모드
시스템 전체 방화벽커널 수준의 모든 비-VPN 트래픽macOS, Windows, Linux; iOS(includeAllNetworks 사용 시)규칙이 IPv4 전용인 경우 IPv6 누출; 부팅 시 경쟁 조건; DNS 부트스트랩 예외
앱 수준 (앱별 차단 목록)목록에 있는 앱의 트래픽만Windows, 일부 macOS 클라이언트목록에 없는 앱은 계속 누출; OS 구성 요소 누출; 시스템 서비스 누출
OS 강제 상시 VPN앱 충돌 여부와 무관하게 OS 수준의 모든 트래픽Android (상시 VPN + VPN 없이 차단), iOS (NetworkExtension 온디맨드)일시 중지 전까지 캡티브 포털 로그인 차단; 그 외 장애 모드는 극히 드뭄
애플리케이션 모니터 (약한 형태)직접적으로는 아무것도 차단하지 않음; VPN 끊김 시 지정된 앱을 닫을 뿐일부 Windows 클라이언트가 아직 이를 제공함감지와 종료 사이의 경쟁 조건에서 누출 발생; 실제 킬 스위치가 아님

'상시 VPN'이 앱 수준 킬 스위치에서는 불가능한 것을 제공하는 이유

2026년 현재 가장 중요한 구분은 업체가 구현한 킬 스위치와 OS가 강제하는 상시 VPN 사이의 차이입니다. OS가 강제하는 버전이 의미 있게 더 강력한 이유는 다음과 같습니다.

  • VPN 앱 충돌 후에도 유지됩니다. 어떤 이유로든 VPN 앱이 충돌하면, 앱 수준 킬 스위치도 함께 종료됩니다. 앱이 설치한 방화벽 규칙이 유지되는지 여부는 구현에 따라 다릅니다. OS가 강제하는 규칙은 OS 자체가 보유하며 계속 적용됩니다.
  • 재부팅 후에도 유지됩니다. 많은 앱 수준 킬 스위치는 앱 실행 시 규칙을 설치하고 앱 종료 시 해제합니다. 따라서 부팅 시 공백이 생깁니다. OS 수준의 상시 설정은 부팅 후 OS가 라우팅하는 첫 번째 네트워크 패킷부터 적용됩니다.
  • 시스템 서비스도 포함합니다. 클라우드 동기화, OS 업데이트 확인, 푸시 알림 데몬, 그리고 기타 OS 수준의 서비스들은 일반적인 VPN 클라이언트 라우팅을 통하지 않습니다. OS 강제 상시 VPN은 이들을 포함합니다. 앱 수준 킬 스위치는 그렇지 않을 수 있습니다.
  • 사용자 실수로 우회될 수 없습니다. 앱 수준 킬 스위치에는 앱 UI에 토글이 있습니다. 사용자(또는 권한이 있는 다른 앱)가 이를 비활성화할 수 있습니다. OS 수준의 상시 설정은 시스템 설정에 있으며 실수로 끄기가 더 어렵습니다.

Android에서는 OS 강제 버전을 사용하는 것을 권장합니다. 시스템 설정에서 '항상 사용 설정'과 'VPN 없이는 연결 차단'을 켜고, VPN 클라이언트의 자체 킬 스위치는 보완 수단으로 취급하십시오. iOS에서는 includeAllNetworks를 활성화하는 VPN 클라이언트를 찾으십시오. 이것이 동등한 플래그이며 유사한 보장을 제공합니다.

Casper가 하는 일 — 솔직한 답변

Casper's Cloak은 각 플랫폼에서 OS 통합 킬 스위치를 사용합니다 — iOS에서는 OS 자체가 누출 방지 규칙을 시행하도록 includeAllNetworks를, Android에서는 상시 VPN 설정을, macOS에서는 커널 계층의 패킷 필터 규칙을 사용합니다. 세 플랫폼 모두에서 동작은 동일합니다. 터널이 끊기면 IPv6 및 OS 수준 서비스를 포함한 모든 트래픽이 멈춥니다. 터널이 복구되면 트래픽이 재개됩니다. 잊어버릴 토글도, 유지해야 할 앱별 목록도, IPv6 예외도 없습니다.

우리는 이것을 알려진 악성 도메인에 대한 능동적 필터링을 위한 위협 방어위협 차단과 결합합니다. 따라서 터널은 단순한 라우팅 레이어가 아니라 피싱, 악성 코드 C2, 알려진 악성 인프라로의 연결을 능동적으로 거부합니다. 킬 스위치는 터널이 잠깐 끊길 때 아무것도 필터링을 우회하지 않도록 보장하는 최하위 계층의 보증입니다. 결합된 효과는 이렇습니다. 공공 Wi-Fi 공격 글에서 다루는 것과 같은 적대적인 네트워크에서도, 앱 수준 킬 스위치만 사용했을 때 생기는 '2초간의 평문 트래픽' 시간이 발생하지 않습니다.

킬 스위치에 대한 우리의 입장: 이것은 프리미엄 기능이 아니라 기본 기대치입니다. 2026년에 킬 스위치를 제공하지 않는 소비자 VPN은 기본적인 안전 메커니즘이 빠진 것입니다. 이것이 시스템 수준에서 중요한 이유에 대한 위협 모델링 배경은, 원격 접속 VPN 선택 및 강화에 관한 NSA 지침이 커널 수준 시행으로 뒷받침되는 풀 터널 아키텍처를 권장하는 건축적 이유를 상세히 다루고 있습니다.

결론

'이 VPN에 킬 스위치가 있나요?'는 잘못된 질문입니다. 올바른 질문은 다음과 같습니다. 킬 스위치가 스택의 어느 계층에서 시행되는가(앱, 시스템, 또는 OS), IPv6를 포함하는가, 앱 충돌 및 재부팅 후에도 지속되는가, 그리고 기본으로 켜져 있는가. 'OS 수준', '예', '예', '예'라면 킬 스위치가 제 역할을 하고 있는 것입니다. '앱 수준만', '아니오', '경우에 따라 다름', '기본으로 꺼져 있음'이라면 이름만 킬 스위치일 뿐 실제 보호는 없습니다.

간단한 실천 방법: Android에서는 'VPN 없이는 연결 차단'을 포함한 시스템 수준 상시 VPN을 켜십시오. iOS에서는 includeAllNetworks를 활성화하는 VPN 클라이언트를 사용하십시오. 데스크탑에서는 설치 후 누출 테스트를 실행하여 확인하고, VPN 서버 측에서 연결을 잠시 끊거나(또는 네트워크 케이블을 뽑아서) 트래픽이 실제로 멈추는지 확인하십시오. 누출 테스트에 실제 IP가 계속 표시된다면, 킬 스위치가 광고된 대로 작동하지 않는 것입니다 — 신뢰하기 전에 반드시 조사하십시오.

검토: Casper's Cloak Security Team · 최종 업데이트

앱이 아닌 OS가 시행하는 킬 스위치

Casper's Cloak은 iOS, Android, Mac에서 플랫폼 네이티브 상시 시행을 사용합니다 — IPv6 포함, 시스템 서비스 포함, 앱 충돌 후에도 유지됩니다. 잊어버릴 토글도 없고, 재연결 중 누출도 없습니다.