Skip to content
isdnetworks
Go back

Windows IKEv2 VPN 클라이언트 설정과 Policy Match Error 해결

개요

개발 서버에 외부에서 안전하게 접속하기 위해 IKEv2 VPN을 구성했다. 서버 측은 hwdsl2/setup-ipsec-vpn 프로젝트를 사용하여 Docker로 운영했다. 이 글에서는 Windows 클라이언트 설정 과정과, 많은 사람들이 겪는 “Policy Match Error” 문제의 해결 방법을 다룬다.

IKEv2를 선택한 이유

VPN 프로토콜 선택지는 여러 가지가 있지만, IKEv2를 선택한 이유는 다음과 같다.

프로토콜장점단점
OpenVPN유연한 설정, 방화벽 우회 용이별도 클라이언트 필요, 설정 복잡
WireGuard가볍고 빠름Windows 기본 지원 없음
IKEv2Windows/macOS/iOS 기본 지원, 빠른 재연결일부 방화벽에서 차단 가능
L2TP/IPsec넓은 호환성속도 느림, NAT 환경 문제

핵심은 OS 기본 지원이다. 별도 클라이언트 소프트웨어를 설치하지 않아도 Windows 설정에서 바로 VPN 연결을 추가할 수 있다. 팀원들에게 .p12 인증서 파일 하나만 전달하면 되므로 온보딩이 간단하다.

클라이언트 설정 절차

사전 준비

자동 설정 (권장)

hwdsl2 프로젝트에서 제공하는 헬퍼 스크립트를 사용하면 인증서 가져오기부터 VPN 연결 생성까지 자동으로 처리된다.

  1. ikev2_config_import.cmd 다운로드
  2. .p12 파일을 스크립트와 같은 폴더에 배치
  3. 스크립트를 우클릭 → 속성 → 하단의 “차단 해제” 체크 → 확인
  4. 스크립트를 우클릭 → “관리자 권한으로 실행”
  5. 프롬프트에 따라 입력:
    • VPN client name: .p12 파일명에서 자동 추출됨 (Enter로 수락)
    • VPN server address: VPN 서버의 IP 또는 도메인 (서버 설정과 정확히 일치해야 함)
    • IKEv2 connection name: Windows에 표시될 VPN 이름

주의: VPN server address는 서버에서 IKEv2를 설정할 때 지정한 값과 정확히 일치해야 한다. IP로 설정했으면 IP를, 도메인으로 설정했으면 도메인을 입력해야 한다. 불일치하면 인증서 검증에 실패한다.

수동 설정

자동 스크립트를 사용할 수 없는 환경이라면, 수동으로도 가능하다.

1단계: 인증서 가져오기

# .p12 파일을 로컬 머신 인증서 저장소로 가져오기
certutil -importpfx -f "C:\path\to\client.p12"

비밀번호 입력 프롬프트가 나타나면 .p12 생성 시 설정한 비밀번호를 입력한다. 인증서는 “로컬 컴퓨터 > 개인” 저장소에 설치된다.

2단계: VPN 연결 추가

Windows 설정 → 네트워크 및 인터넷 → VPN → VPN 연결 추가:

3단계: 연결 테스트

시스템 트레이의 네트워크 아이콘에서 생성한 VPN 연결을 선택하고 “연결”을 클릭한다.

Policy Match Error 해결

증상

VPN 연결 시 다음과 같은 오류가 발생한다.

IKE 인증 자격 증명을 허용할 수 없습니다.

또는 이벤트 뷰어에서 다음과 같은 로그가 기록된다:

Policy match error

원인

이 오류는 Windows 클라이언트와 VPN 서버 간의 암호화 알고리즘 불일치 때문에 발생한다. Windows는 기본적으로 IKEv2에서 약한(legacy) 암호화 설정을 사용하는데, 보안이 강화된 VPN 서버는 이를 거부한다.

구체적으로, VPN 서버가 AES-256 + DH Group 2048bit 이상을 요구하는 반면, Windows 기본값은 이보다 낮은 수준의 암호화를 제안하여 협상(negotiation)에 실패하는 것이다.

해결 방법

레지스트리에 강화된 암호화를 활성화하는 키를 추가하면 된다.

방법 1: .reg 파일 사용

Enable_Stronger_Ciphers_for_IKEv2_on_Windows.reg 파일을 다운로드하여 더블클릭으로 적용한다.

방법 2: 명령 프롬프트에서 직접 실행

관리자 권한 명령 프롬프트에서 다음을 실행한다:

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v NegotiateDH2048_AES256 /t REG_DWORD /d 0x1 /f

이 레지스트리 키가 하는 일은 다음과 같다:

적용 후 반드시 PC를 재시작해야 한다. 레지스트리 변경이 RasMan(Remote Access Connection Manager) 서비스에 반영되려면 재부팅이 필요하다.

확인

재부팅 후 VPN 연결을 다시 시도한다. 정상적으로 연결되면 ipconfig로 VPN 인터페이스에 할당된 IP를 확인할 수 있다:

ipconfig | findstr "10.10"

VPN 서버의 내부 네트워크 대역(예: 10.10.x.x)의 IP가 표시되면 성공이다.

추가 팁

자동 재연결

IKEv2의 장점 중 하나는 MOBIKE(Mobility and Multihoming Protocol) 지원이다. 네트워크가 바뀌어도(Wi-Fi → LTE, 네트워크 전환 등) 자동으로 재연결된다. 노트북을 들고 이동하면서 작업하는 환경에서 유용하다.

Split Tunneling

기본 설정에서는 모든 트래픽이 VPN을 통과한다. VPN 서버 측 네트워크만 VPN으로 라우팅하고 나머지는 직접 연결하려면, Windows VPN 연결의 고급 TCP/IP 설정에서 “원격 네트워크에 기본 게이트웨이 사용”을 해제한다.

연결 상태 확인

# VPN 연결 상태 확인
Get-VpnConnection | Select-Object Name, ServerAddress, ConnectionStatus

# 라우팅 테이블에서 VPN 경로 확인
route print | findstr "10.10"

참고 자료


Share this post on:

Previous Post
AI가 화이트칼라를 대체할 때 — Citrini Research 분석 리뷰
Next Post
RK3588 NPU로 로컬 LLM 서버를 포기한 이유