핸드셰이크가 끝나고 탐색은 되지만 프린터와 NAS, 로컬 SSH 호스트가 사라진다. Windows 클라이언트에서 이것은 대개 라우팅 실패가 전혀 아니다: 허용 접두사에 문자 그대로의 기본값이 포함된 피어는 터널 밖 트래픽 차단을 활성화하고, 그 옵션은 다른 인터페이스로 나가는 패킷을 버리는 방화벽 규칙으로 구현된다. 라우팅 테이블은 여전히 로컬 서브넷을 직접 연결로 표시하므로 증상이 거짓말처럼 느껴진다. 무엇을 할지는 세 조건이 결정하고, 그중 라우팅에 관한 것은 하나뿐이다.

두 실패가 같은 증상을 쓴다

첫 번째 실패는 클라이언트의 fail-closed 모드이며, 그 특징은 터널 밖의 모든 것이 멈추는데 터널 자체는 완벽하게 동작한다는 점이다. 두 번째는 실제 도달성 문제다: 빠진 경로, 클라이언트 뒤 서브넷에 대한 서버 측 누락 항목, 또는 같은 주소 범위를 공유하는 두 네트워크다. 둘 다 탐색은 되고 인쇄는 안 되는 기계를 만들며, 해결책은 정반대이므로 진단이 구성보다 먼저 와야 한다.

구별되는 관찰은 해당 서브넷으로 가는 트래픽이 버려지는 동안 로컬 서브넷이 아직 라우팅 테이블에 있는지다.

세 조건이 답을 결정한다

첫째, 이 기계에 fail-closed가 필요한가? 답이 그렇다면 끊긴 터널은 트래픽을 멈춰야 하며 물리 인터페이스로 되돌려 보내면 안 되고, 그 요구는 로컬 편의보다 우선한다. 둘째, 터널이 올라와 있는 동안 로컬 장치가 도달 가능해야 하는가? 인쇄, 네트워크 스토리지, 로컬 관리 콘솔이 흔한 이유이며, 이는 정당한 요구이지 사과할 예외가 아니다. 셋째, 프로필이 기본값을 문자 그대로의 0.0.0.0/0으로 표현하는가? 바로 그 세부가 클라이언트 규칙을 작동시키며, 그것은 편집할 수 있다.

각 답이 서로 다른 구성으로 이어지므로 프로필을 건드리기 전에 이 셋을 서면으로 답하라.

fail-closed를 택하고 LAN을 포기하라

유출이 로컬 도달성보다 중요하다면 문자 그대로의 기본값을 유지하고 터널 밖 트래픽 차단을 켜 둔다. 일관된 입장이다: 기계는 터널 안에 있거나 오프라인인 장치로 취급되고, 로컬 서비스는 다른 장치에서 또는 서버가 라우팅한다면 터널을 통해 접근한다. 대가는 실재하며 인쇄해야 하는 사람이 발견하는 대신 배포 노트에 적어야 한다.

터널이 끊길 때 카페 네트워크에 나타나면 안 되는 작업을 다루는 기계에는 이것이 옳은 선택이다. 스캐너도 필요한 가정용 노트북에는 나쁜 기본값이다.

LAN 접근을 택하고 기본값을 다르게 표현하라

로컬 장치가 도달 가능해야 한다면 문자 그대로의 기본 접두사 없이 같은 범위를 표현하라. 두 개의 절반 접두사가 모든 IPv4 주소를 덮고, 동등한 쌍이 IPv6를 덮으며, 클라이언트는 찾는 문자열이 없으므로 더 이상 차단 규칙을 넣지 않는다.

[Peer]
AllowedIPs = 0.0.0.0/1
AllowedIPs = 128.0.0.0/1
AllowedIPs = ::/1
AllowedIPs = 8000::/1
Endpoint = vpn.example.net:51820

그 체크를 해제하면 클라이언트가 같은 두 쌍을 프로필에 기록하므로, 생성된 파일을 위 블록과 비교하는 것은 메커니즘을 추측하는 대신 확인하는 빠른 방법이다. 두 가지 결과가 따른다. 범위는 동일하므로 터널에 다른 것은 바뀌지 않는다. 보호는 동일하지 않다: 규칙이 사라지면 끊긴 터널은 기계를 물리 인터페이스에 그대로 두고, fail-closed가 막던 것이 바로 그것이다.

나머지 두 용의자도 반드시 확인하라

방화벽 문제가 정리되면 로컬 서브넷이 실제로 라우팅되는지, 원격 끝이 이 클라이언트 뒤의 모든 것을 아는지 확인하라. 클라이언트 뒤 LAN에 도달해야 하는 서버는 허브에서 클라이언트의 허용 목록에 그 접두사가 필요하며, 빠뜨리면 허브는 그 주소에 대한 피어를 고를 수 없고, 클라이언트 구성을 아무리 해도 만들어지지 않는다.

Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultOutboundAction
route print 0.0.0.0

네트워크 범주는 사람들이 생각하는 것보다 중요하다: 새로 만들어진 터널 어댑터가 공용으로 분류되면 어떤 규칙이 적용되는지가 바뀌고, 결과는 원격 쪽 방화벽 차단처럼 보일 수 있다. 경로 출력은 기본값이 있는지 자체를 보여 주며, 그것이 정책 문제와 빠진 경로를 구분한다.

그다음 한 번에 세 가지를 시험하라: 인터넷, 주소로 접근하는 로컬 호스트 하나, 터널 너머 호스트 하나다. 핸드셰이크는 키가 맞는다는 것만 증명하므로 정책을 보여 주는 것은 이 세 시험이다. 옵션을 지운 뒤에도 로컬 호스트가 거부한다면 남은 용의자는 경로, 원격 끝의 허용 목록, 중복 서브넷 순이다.

관련 글