Windows VPN 불만이 생기면 십 분 안에 이 조언이 온다. 네트워크 재설정을 실행해라, 그러면 다 고쳐진다. 고쳐지지 않고, 범위도 좁지 않다. 그 버튼은 어댑터를 지우고, 프로토콜을 다시 묶고, 정적 주소와 기본 경로를 없애고, 방화벽과 필터 항목을 버리고, 덤으로 Wi-Fi 프로필까지 잊는다. 터널이 동작하지만 설정이 틀린 머신에서는 진단 가능한 결함 하나를 기록 없는 재구축으로 바꿔 놓는다. 먼저 다섯 가지를 저장하면 되돌릴 선택지는 남는다.

재설정은 VPN 프로필에 국한되지 않는다

VPN 연결은 네트워크 스택을 공유하는 여러 객체 중 하나일 뿐이다. 어댑터를 제거하고 다시 추가하면 인터페이스 인덱스가 바뀌고, 그 인덱스를 참조하던 모든 것, 경로에서 방화벽 규칙, 서드파티 필터 드라이버까지 이제 존재하지 않는 것을 가리킨다.

가상화는 상황을 더 나쁘게 만든다. Hyper-V 스위치, VMware 브리지, 컨테이너 네트워크, 자체 가상 어댑터를 가진 VPN 클라이언트가 모두 같은 공간에 산다. 기본 스택을 다시 설치하는 재설정은 그 구성 요소를 반쯤 남겨 둘 수 있고, 그 결과 머신은 동작하는 하드웨어를 보고하지만 경로는 동작하지 않는다.

어느 것도 절대 재설정하지 말라는 주장이 아니다. 먼저 재설정하지 말라는 주장이다. 문서화하지 않은 머신에서, 실제 결함이 경로 항목 하나나 낡은 필터 하나일 수 있을 때. 재설정은 성공률이 좁은 넓은 도구이고, 첫 수로 쓰면 둘 중 어느 것이었는지 영원히 알 수 없다.

설정을 저장하기 전에 증거를 저장한다

결함 자체가 데이터다. 정확한 오류 코드, 시각, 어떤 프로필이 선택되어 있었는지, 게이트웨이가 시도를 기록했는지 적어 둔다. 터널이 응답을 한 번도 받지 못했다는 코드와 인증이 실패했다는 코드는 전혀 다른 수리를 가리킨다. 재설정 후에는 둘 다 재현하지 못할 수 있다. 망가진 상태를 곧 써 버릴 자산으로 여겨라.

아직 망가진 동안 상태를 캡처해 머신의 임시 디렉터리 밖 폴더에 넣는다:

mkdir C:\vpn-evidence
ipconfig /all > C:\vpn-evidence\ipconfig.txt
route print > C:\vpn-evidence\routes.txt
Get-VpnConnection -AllUserConnection | Export-Csv C:\vpn-evidence\profiles.csv -NoTypeInformation
netsh wfp show state file=C:\vpn-evidence\wfp.xml

마지막 명령이 사람들이 빼먹는 것이고, 흔히 그 명령이 결함을 설명한다. 제거한 클라이언트의 남은 필터는 영구 정책으로 살아남고, 내보낸 XML이 그에 대한 유일한 로컬 기록이다. 재설정이 확인하려던 것을 지우기 전에 읽어라.

돌아오지 않을 구성을 저장한다

일부 설정은 자동으로 다시 만들어진다. 정적 주소, 사용자 지정 경로, DNS 접미사, 프록시 예외, 방화벽 규칙은 다시 만들어지지 않는다. 프로필 자체도 마찬가지다. 프로필은 전화번호부 파일에 살고, 재설정이 대신 복원해 주지 않는다.

What to saveWhere it livesWhy the reset loses it
VPN profilesrasphone.pbk in ProgramData or the user profileProfiles are not part of the adapter state
Static IP and DNSAdapter configurationAdapters are removed and recreated
Persistent filtersWFP policy storeFilter state is cleared with the stack
Third-party bindingsAdapter binding listComponents must be reinstalled manually
Get-NetIPConfiguration | Out-File C:\vpn-evidence\netip.txt
Get-NetRoute -AddressFamily IPv4 | Export-Csv C:\vpn-evidence\netroutes.csv -NoTypeInformation
Get-DnsClientServerAddress | Export-Csv C:\vpn-evidence\dns.csv -NoTypeInformation
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject,Thumbprint,NotAfter

인증서 목록은 보기보다 중요하다. 네트워크 재설정은 클라이언트 인증서를 파괴하지 않지만, 목록은 프로필이 무엇에 의존했는지, 곧 만료되는 것이 있는지 알려 준다. 재구축 후에 만료된 인증서를 발견하면 그 재구축은 낭비다.

시작하기 전에 복구 경로를 적는다

머신이 원격이고 VPN이 유일한 입구라면 재설정이 세션을 끝낼 수 있고, 현장에 사람이 없으면 돌아갈 길이 없을 수 있다. 어댑터를 건드리는 무엇이든 실행하기 전에 대역 밖 접근이 있는지, 사람이 대기하는지 확인한다.

설치 프로그램과 연결 정보는 머신이 나중에도 닿을 수 있는 곳에 둔다. 터널을 통해서만 닿는 공급업체 포털에서 다시 설치해야 하는 클라이언트는 순환 의존이며, 이 절차가 서비스 중단이 되는 가장 흔한 경로다.

그다음 무엇을 왜 하는지 정확한 명령과 함께 기록한다. 다음 사람은 재설정이 실험이었는지 결정이었는지 알아야 하고, 우리는 다 해 봤다는 말은 기록이 아니다.

재설정 후 계층별로 시험한다

한 번에 너무 많이 복원하면 결과를 읽을 수 없다. 아래에서 위로 간다. 어댑터와 주소, 다음 이름 확인, 다음 터널의 신원 단계, 마지막으로 애플리케이션. 각 계층에는 그 계층의 질문에 답하는 명령이 있다:

Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object Name,InterfaceDescription
Resolve-DnsName intranet.example.internal
Get-VpnConnection -Name 'Corp' | Select-Object ConnectionStatus,TunnelType
Test-NetConnection -ComputerName intranet.example.internal -Port 443

어댑터 계층이 건강한데 이름 확인이 그렇지 않으면 멈추고 확인을 고친다. 그 시점에 VPN 클라이언트를 다시 설치하면 변수가 늘고 단서가 사라진다. 설명할 수 있는 설정만 하나씩 복원하고, 매번 같은 계층을 확인한다.

예를 들어 마이크로소프트 자체의 오류 720 문제 해결 지침은 포괄적 재설정을 처방하는 대신 바인딩 문제와 주소 할당 문제를 구분한다. 이 계열의 모든 코드에 맞는 올바른 직관이다. 가장 넓은 도구에 손을 뻗기 전에 코드가 무엇을 주장하는지 읽어라.

관련 글