두 번째 VPN 클라이언트가 첫 번째를 망가뜨렸다: 공유 리소스를 찾아라
두 VPN 스택이 서비스, 고정 포트, 필터 드라이버 또는 기본 경로를 두고 경쟁합니다. 어느 한 클라이언트를 제거하기 전에 배타적 리소스의 이름을 밝히십시오.
어제는 원래 클라이언트가 작동했다. 오늘은 새로 온 쪽이 연결을 요구하는데, 예전 프로필은 전에는 불평 없이 지나가던 단계에서 멈춘다. 자격 증명이 관여하는 일은 드물고, 게이트웨이는 보통 무죄다. 달라진 것은 두 VPN 스택이 이제 같은 배타적 리소스를 원한다는 점이며, 수리는 그 이름을 밝히는 데 달려 있다. 둘 다 다시 설치하는 대신 계층을 따라가 보자.
네 계층을 순서대로 따라가라
VPN 제품에는 두 번 실행되기를 자주 거부하는 백그라운드 서비스, 고정 포트, 라우팅 테이블보다 먼저 트래픽을 보는 가상 어댑터나 커널 필터, 그리고 기본 경로보다 앞서 경로를 설치할 권리라는 충돌할 수 있는 네 가지 리소스가 필요하다. 어느 것이 물러났는지 알면 모호한 충돌이 검증 가능한 답을 가진 하나의 질문으로 바뀐다.
무엇이든 만지기 전에 증상을 계층에 대응시켜라. 시작하지 않는 클라이언트는 서비스를, 시작하지만 협상을 하지 않는 것은 포트를, 상대가 모든 연결을 잃는데 이쪽이 연결되는 것은 필터나 기본 경로를 가리킨다. 그 대응표를 적어 두면 기대 속에 애플리케이션을 다시 설치하는 한 시간을 아낄 수 있다.
두 번 실행되지 않는 서비스부터 시작하라
Windows에서 기업용 클라이언트는 프로필과 함께 서비스, 필터 드라이버, 때로는 자격 증명 공급자를 설치하기 때문에 보통 터널 이상이다. 변경 전에 어떤 서비스가 돌았는지, 변경 후에 다시 기록하고, 뭔가 될 때까지 재부팅하는 대신 두 목록을 비교하라. 서비스는 의존성으로 서로를 배제할 수 있어 하나의 시작이 다른 하나를 멈추게 하며, 같은 패턴이 macOS에서도 launchd 작업과 공유 데몬으로 나타난다. 몇 초 안에 시작하고 종료하는 클라이언트는 구성이 아니라 소유권을 보고하는 것이다.
프로필을 읽기 전에 서비스 상태와 그 로그를 읽어라. 같은 분 안에 시작하고 멈춘 서비스가 찾아야 할 패턴이며, 그 자체의 이벤트 로그가 밀어낸 의존성의 이름을 밝힌다. 프로필은 돌지 않는 프로세스를 고칠 수 없고, 그것을 편집하는 데 쓰는 시간은 실제 충돌에 쓰지 않는 시간이다.
그다음 포트를 누가 소유하는지 물어라
포트 소유권은 얻을 수 있는 가장 분명한 증거인데, 바인딩 실패가 충돌을 곧바로 지목하기 때문이다. 두 IKE 구현이 같은 로컬 주소와 UDP 포트에서 모두 응답할 수는 없으며, 아무리 다시 시도해도 그것은 바뀌지 않는다.
Get-NetUDPEndpoint -LocalPort 500,4500 | Select-Object LocalAddress,LocalPort,OwningProcess
netstat -ano | findstr :500
sudo lsof -nP -iUDP:500
ss -lunp | grep -E ':500|:4500'
어떤 줄이 플랫폼과 맞든, 원하는 답은 프로세스와 그것을 낳은 서비스다. 수신자가 내장 IKE 서비스라면 두 번째 클라이언트가 침입자이고, 공급업체 에이전트라면 내장 클라이언트가 침입자다. 어느 쪽이 로그인 시 시작될 수 있는지 정하고, 다른 쪽을 세션마다 죽이는 대신 자동 시작을 끄라.
필터 드라이버는 경로 아래에 있다
네트워크 필터 드라이버는 어댑터와 프로토콜 스택 사이의 트래픽을 가로채므로, 라우팅 테이블이 무엇이라 하든 패킷을 다시 쓰거나 차단할 수 있다. 올바르게 보이는 경로가 무시되는 이유가 이것이고, 성공한 ping이 아무것도 로드하지 못하는 브라우저 옆에 앉아 있을 수 있는 이유도 이것이다.
공급업체 구성 요소도 특정 연결에 묶인다. 한 어댑터에 묶인 오래된 필터는 다른 점에서는 올바른 프로필이 핸드셰이크를 끝내지 못하게 할 수 있으며, 그 구성 요소를 어댑터 속성에서 푸는 것이 제품을 완전히 제거하는 것보다 좁고 되돌리기 쉽다. 묶임이 연결마다이므로 전체 스택이 아니라 어댑터를 비교하라.
어느 제품이 부팅을 소유하는지 정하고 기록하라
공존은 두 클라이언트가 설계상 서로 다른 계층을 차지할 때만 현실적이며, 예를 들어 애플리케이션 트래픽만 다루는 프록시 옆의 IPsec 스택이 그렇다. 둘 다 같은 포트, 같은 필터 계층 또는 기본 경로를 게시할 권리를 원한다면 계속 번갈아 가며 실패할 때마다 새 결함처럼 보일 것이다.
소유자를 의도적으로 고르라. 재부팅 후에도 살아남는 형태에는 두 번째 클라이언트를 가상 머신 안에서 실행하기, 전용 하드웨어에 두기, 두 프로토콜을 모두 말하는 하나의 클라이언트로 표준화하기가 있다. 진 쪽의 자동 시작과 서비스를 끄는 것이 시작할 때마다 라우팅 테이블을 다시 만드는 것보다 작은 변경이며, 설정 한 곳을 편집하면 되돌아간다.