휴대폰에서 페이지가 열리지 않을 때: 수신 주소를 확인하세요
localhost에서 응답하는 페이지는 loopback에만 바인딩되어 있을 수 있습니다. 소켓 주소를 읽고, 그다음 방화벽 규칙과 휴대폰이 실제로 사용하는 URL을 확인하세요.
노트북이 localhost에서 페이지를 제공하고, 휴대폰은 같은 VPN에 접속하며, 휴대폰의 브라우저는 사이트에 연결할 수 없다고 보고합니다. 터널 자체에는 아직 문제가 없습니다, 터널은 패킷만 전달하기 때문입니다. loopback 인터페이스에 바인딩된 개발 서버는 다른 대상으로 향한 연결을 절대 받아들이지 않으므로, 가장 먼저 볼 곳은 수신 중인 소켓이지 VPN이 아닙니다.
소켓, 바인드 설정, 방화벽 규칙, URL 순서로 확인하세요.
소켓은 더 좁은 질문에 답합니다
127.0.0.1에 만들어진 리스너는 머신 자체에서 오는 트래픽만 받아들이고 다른 주소로 도착하는 모든 것을 거부합니다. wildcard 주소의 리스너는 VPN 인터페이스를 포함한 모든 로컬 인터페이스에서 받아들이며, 이는 대부분의 개발 환경이 필요로 하는 범위보다 넓습니다. 특정 VPN 주소에 바인딩된 리스너가 가장 좁고 유용한 선택이며, 그 주소가 존재하는 동안에만 동작합니다.
여기서 두 가지 이름 짓기 함정이 생깁니다. 휴대폰 브라우저에서 localhost는 휴대폰을 뜻하지 노트북이 아닙니다. wildcard 주소는 바인드 값이며 URL에 입력할 대상이 아닙니다. 둘 중 하나로 시험하는 사람은 네트워크가 전혀 관련되지 않은 실패를 보고하게 됩니다.
IPv6는 세 번째 경우를 더합니다, 소켓은 놓치기 쉬운 옵션에 따라 IPv4와 IPv6를 모두 받아들일 수 있습니다. 목록에서 주소 패밀리를 읽으세요. 한 패밀리의 wildcard 항목은 다른 패밀리를 설명하지 않습니다.
수신 주소를 읽으세요
구성을 바꾸기 전에 소켓을 살펴보세요. 로컬 주소, 포트, 소유 프로세스를 함께 보면 서버가 VPN에서 도달 가능한지 알 수 있습니다.
Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess ipconfig | Select-String -Pattern 'IPv4' Get-NetFirewallRule -DisplayName '*8080*' | Format-Table DisplayName,Enabled,Profile,Direction,Action
로컬 주소가 127.0.0.1이면 질문은 끝납니다, 애플리케이션이 VPN 인터페이스에서 수신하지 않으므로 방화벽을 바꿔도 소용없습니다. wildcard 또는 VPN 주소라면 소켓은 정상이고 다음 경계가 문제입니다.
소유 프로세스도 확인하세요, 흔한 포트의 무관한 서비스가 표를 올바르게 보이게 하면서 정작 의도한 서버는 시작되지 않았을 수 있습니다. 이름만이 아니라 실행 파일 경로를 대조하세요. 이전 실행에서 남은 오래된 프로세스가 흔한 사칭범입니다.
애플리케이션을 통해 바인드를 바꾸세요
프레임워크의 문서화된 수신 주소 옵션을 사용하고 프로세스를 다시 시작하세요. 노트북이 사설 주소 10.77.0.1을 가지고 있다면 휴대폰의 URL은 http://10.77.0.1:8080/가 되고, 그 주소는 VPN을 통해 라우팅되어야 합니다, 설정의 다른 부분은 바뀌지 않습니다.
바인드를 강제하려고 Windows에 임의의 주소를 추가하거나 게이트웨이를 바꾸지 마세요. 그런 변경은 디버깅 세션 이후에도 남아 다음 사람을 놀라게 합니다. VPN 주소가 생기기 전에 시작한 서버도 바인드에 실패할 수 있으므로 일시적인 인터페이스에서는 시작 순서가 중요합니다. 다시 시도하게 하거나 터널 이후에 시작하세요. 부팅 시의 바인드 실패는 다음 날 아침 방화벽 문제와 똑같아 보입니다.
HTTPS의 경우 서비스 호스트 이름과 인증서 검증을 그대로 유지하세요. 원시 주소의 인증서 경고는 이름 지정 문제이며 클릭해서 넘어갈 단계가 아닙니다, 사설 DNS는 선택한 리스너와 일치해야 합니다.
규칙은 하나만 열고 네트워크 전체는 열지 마세요
소켓이 VPN 주소에서 받아들이기 시작하면 방화벽이 요청이 도착할지 결정합니다. 규칙의 범위를 이 애플리케이션, 이 프로토콜, 이 로컬 포트, 허용된 원격 소스로 제한하고 VPN 어댑터에서 어떤 프로필이 활성인지 확인하세요.
Windows가 실제로 보는 원본 주소를 사용하세요, 게이트웨이가 수행하는 변환도 포함됩니다, 원래 클라이언트 주소를 위해 작성한 규칙은 변환된 주소와 일치하지 않습니다.
페이지가 로드되어 애플리케이션 오류를 표시하는 것은 진전입니다, HTTP 거부는 TCP 연결이 없는 것과 다른 실패이며, 다음 조사는 네트워크가 아니라 애플리케이션 자체의 접근 정책에 속합니다.
마지막으로 의도한 휴대폰에서 페이지를 요청하고 제외된 기기가 여전히 도달할 수 없음을 확인하세요. 모든 것을 허용하는 규칙으로 동작하는 리스너는 같은 결과가 아닙니다.