호스트 경로 하나, 주소 하나, 그리고 ping은 요청이 시간 초과되는 대신 곧바로 General failure로 실패합니다. 그 차이가 진단의 전부입니다. 시간 초과는 패킷이 나갔고 무언가가 그것을 무시했다는 뜻입니다. General failure는 Windows가 패킷을 처음부터 어떤 인터페이스에도 넘기지 못했다는 뜻입니다.

그래서 라우팅 테이블이 완벽해 보이는데도 오류가 계속 General failure라면, 차단은 라우팅 결정 아래에서 일어나고 있으며 그곳에서 동작하는 것은 공급자의 클라이언트입니다.

라우팅 테이블보다 오류를 먼저 읽으세요

Windows는 보낼 인터페이스를 찾지 못할 때 그 오류를 돌려주며, 목적지가 패킷으로 무엇을 했을지에 대해서는 아무 말도 하지 않습니다. 도달 가능성, 반대편 방화벽, 서비스 가용성은 모두 아직 닿지 못한 하류의 질문입니다.

이 경우의 고전적 구성은 하나의 LAN 주소를 물리 게이트웨이로 보내 터널을 우회하게 하는 호스트 경로이며, route add는 그것을 받아들이고, route print는 그것을 보여 주며, ping은 여전히 실패합니다. 필터 드라이버가 이미 패킷이 나갈 수 없다고 결정했기 때문입니다.

그 설명을 받아들이기 전에 경로가 실제로 선택되는지 확인하세요(인터페이스 인덱스와 메트릭을 확인하고, 다시 연결한 뒤 항목이 낡지 않았는지 점검하세요). 더 이상 존재하지 않는 인터페이스를 가리키는 경로는 훨씬 덜 흥미로운 이유로 비슷한 오류를 냅니다.

세 계층, 세 명의 다른 주인

마지막에 동작하는 계층이 이기며, 이 셋은 대부분이 가정하는 순서와 다릅니다.

LayerWhat it decides
Routing tableWhich interface and next hop should carry the packet
Client filter driverWhether this packet is permitted to leave outside the tunnel at all
Client featureWhether a named feature, such as LAN blocking, is active right now

중간 계층이 바로 경로가 정확하면서도 쓸모없을 수 있는 이유입니다. 공급자 클라이언트는 터널 밖 트래픽을 버리기 위해 필터와 방화벽 규칙을 설치하며, 그것이 킬 스위치를 구현하는 것과 같은 메커니즘입니다. 라우팅 테이블의 어떤 것도 그 결정에 참여하지 않습니다.

세 번째 계층은 클라이언트를 연결 해제한 뒤에도 로컬 서브넷에 닿지 못한다는, 정기적으로 오는 이상한 보고를 설명합니다. 서비스는 계속 돌아가고 필터도 계속 설치되어 있으므로, 연결되지 않은 것과 필터링하지 않는 것은 다릅니다. 어떤 결론을 내리기 전에 단순히 연결을 끊는 대신 클라이언트를 종료하세요.

무엇을 어떤 순서로 시도할지

떼어내기 싸고 되돌리기 쉬운 기능부터 제거하세요. LAN 검색은 때때로 LAN에서의 보이지 않음이라고 불리며, 사설 주소 범위로 가는 트래픽을 막아 장치를 이웃에게 숨깁니다. 프린터, 로컬 파일 서버, 라우터 자체가 모두 그 스위치 뒤로 사라집니다. DNS를 필터링하는 위협 보호 기능은 자체 후크를 설치하며 로컬 도달 가능성을 거의 같은 방식으로 깨뜨린다고 보고됩니다.

둘 다 끄고 클라이언트를 완전히 종료한 다음 주소를 시험하세요. 이 순서는 트래픽을 막는 기능과 트래픽을 잘못 라우팅하는 터널을 구분해 주며, 정적 경로로 반나절을 쓰는 대신 두 분이면 됩니다.

ping 192.168.1.50
tracert -d 192.168.1.50
route print -4

기능을 끈 뒤 주소가 응답하면 고장이 아니라 정책 결정이며, 기능을 끈 채로 두거나, 예외를 추가하거나, 장치가 로컬 네트워크에서 보이지 않는 상태로 남는 것을 받아들이는 것 중에서 고르세요.

클라이언트의 예외 경로를 좁게 사용하세요

기능을 켜 둬야 한다면 클라이언트 자체의 분할 터널링이 지원되는 출구입니다. 예외는 요구 사항이 허용하는 만큼 작게 유지하세요(보통 서버 하나에 호스트 주소 하나, 세그먼트 하나에 프리픽스 하나를 뜻합니다). 사설 범위 전체를 덮는 규칙은 누구도 추가한 것을 기억하지 못하고 누구도 감히 제거하지 못하는 영구적인 구멍입니다.

그다음 주소로 먼저, 이름으로 나중에 확인하세요. 주소가 물리 게이트웨이에서 첫 홉으로 응답하면 예외가 동작합니다. 이름이 여전히 실패하면 터널의 리졸버가 로컬 영역을 모르고 어떤 라우팅 변경도 그것을 가르쳐 주지 않으므로 DNS로 넘어간 것입니다.

경로나 예외 중 하나만 남기고, 어느 쪽이 일을 하는지 메모하세요. 겹치는 두 메커니즘은 서로를 가리며, 다음에 이 장치를 디버그할 사람은 둘 중 하나를 제거하고 아무 변화도 보지 못할 것입니다.

클라이언트가 장애물일 때

일부 빌드는 정적 경로로도 클라이언트 예외로도 이길 수 없는 방식으로 트래픽을 필터링합니다. 그런 결론이라면 정직한 선택은 우회 기능을 기다리거나 공급자 자신의 프로필로 평범한 OpenVPN 클라이언트에 연결하는 것이며, 원래 보고서에서 공급업체 지원 답변이 권한 것도 이것입니다.

그 대체를 하기 전에 맞바꿈을 이해하세요. 평범한 프로필은 여느 터널처럼 자기 경로를 설치하고 나머지 스택을 재구성하지 않으므로 좁은 호스트 경로는 기대대로 동작합니다. 잃는 것은 브랜드 클라이언트가 터널 주변에 구현한 모든 것이며, 킬 스위치와 DNS 필터링도 포함되며, 의도적으로 다시 만들어야 하거나 없는 것으로 받아들여야 합니다.

무엇을 고르든 어느 계층이 차단을 가졌는지 기록하세요. 장치를 떠난 적 없는 패킷은 필터의 결과이며, 어떤 라우팅 변경도 필터를 고칠 수 없습니다.

관련 글