문서

포트 포워딩

포트 포워딩은 서버 머신에서 실행 중인 HTTP 서비스(개발 서버, 기기 대시보드 등 http://localhost:포트 로 수신하는 모든 것)를 별도의 TLS 포트로 공개합니다. 서버에 접근할 수 있는 모든 기기에서 브라우저로 https://<서버 주소>:<포트>/ 를 열면 바로 사용할 수 있습니다.

동작 방식

  • 각 포워딩은 대상 포트(이 머신의 HTTP 서비스)를 설정된 포트 범위(기본 62000–62999)에서 할당된 포워딩 포트에 연결합니다;
  • 포워딩 포트는 TLS로 통신합니다. 모든 트래픽은 서버의 자체 서명 인증서로 암호화되어 신뢰할 수 없는 네트워크에서도 평문이 전송되지 않습니다;
  • 서버에 접근 가능한 모든 기기(LAN 내부, 또는 라우터에서 포트 범위를 포워딩한 후 인터넷)에서 https://<서버 주소>:<포워딩 포트>/ 를 열면 로컬 서비스에 연결됩니다.

포워딩은 필요할 때 생성됩니다. 원격(릴레이) 서버의 HTTP 서버로 호스트 파일 공유가 자동으로 포워딩을 요청하고 바로 열 수 있는 URL을 제공합니다. 수동 설정은 필요 없습니다.

포워딩 관리

웹 UI — 포트 포워딩 섹션: 포트 범위 설정과 활성 포워딩 목록
  1. 서버 웹 UI에서 포트 포워딩 섹션을 엽니다.
  2. 포트 범위 설정 은 포워딩 포트가 할당되는 풀의 범위입니다. 변경 사항은 자동 저장됩니다. 방화벽이나 라우터가 포워딩할 수 있는 포트가 적으면 범위를 좁히세요.
  3. 활성 목록에는 각 포워딩이 :포워딩 포트 → :대상 포트 와 활성 연결 수로 표시됩니다.
  4. 포워딩의 중지 버튼을 누르면 리스너가 즉시 제거되고 활성 연결이 끊어집니다. 다음 공유 시 새 포트가 할당됩니다. 새로 고침 으로 목록을 다시 읽습니다.

인증서 경고

포워딩은 서버 자체의 자체 서명 인증서로 암호화됩니다 — 웹 UI와 클라이언트 연결을 보호하는 것과 같은 인증서입니다. 브라우저는 이 인증서를 인증 기관으로 검증할 수 없으므로 포워딩 URL에 처음 접속하면 개인정보 보호 경고(안전하지 않은 연결)가 표시됩니다. 이는 예상된 동작이며 계속 진행해도 안전합니다. 암호화 자체는 문제없고 인증서의 발급처를 기계적으로 검증할 수 없을 뿐입니다. 경고를 영구적으로 없애려면 서버 인증서를 기기의 신뢰 저장소에 가져오세요.

브라우저 — 자체 서명 인증서 경고. '고급 → 계속하기'로 진행합니다

macOS에서 Chrome이 ERR_ADDRESS_UNREACHABLE을 표시하는 경우

macOS 15(Sequoia) 이상에서는 서드파티 앱이 로컬 네트워크의 기기(192.168.x.x, 10.x.x.x 등의 주소)에 접근하려면 명시적인 권한이 필요합니다. Safari는 시스템 앱이라 이 제한을 받지 않으므로, 포워딩 URL이 Safari에서는 정상적으로 열리는데 Chrome에서는 TLS가 시작되기도 전에 ERR_ADDRESS_UNREACHABLE이 표시될 수 있습니다. 이는 인증서 문제도, 포워딩 자체의 문제도 아닙니다.

Chrome에 접근 권한을 부여하는 방법:

  1. 시스템 설정 → 개인 정보 보호 및 보안 → 로컬 네트워크를 엽니다.
  2. 목록에서 Google Chrome을 찾아 켭니다.
  3. Chrome을 완전히 종료하고(Cmd+Q, 창만 닫는 것으로는 부족합니다) 다시 실행합니다.

토글이 이미 켜져 있다면 껐다가 다시 켜 보세요 — Chrome 또는 macOS 업데이트 후 이 토글이 멈춰 동작하지 않는 경우가 있습니다. 그래도 오류가 계속되면 Chrome에 사설 주소 범위를 라우팅하지 않는 VPN이나 프록시 확장 프로그램이 있는지 확인하세요.

접근 제어

포워딩된 포트를 무엇이 지키는지는 그 뒤에 무엇이 있는지에 따라 다릅니다:

  • 내장 공유에는 토큰이 필요합니다. 클라이언트가 생성하는 공유 링크, 즉 HTTP 서버로 호스트 공유(?share_token=…)와 Settings 페이지(?ticket=…)에는 액세스 토큰이 포함됩니다. 유효한 토큰도 세션도 없는 연결은 어떤 응답도 전송되기 전에 끊깁니다. 첫 방문 시 브라우저는 이 토큰을 해당 서비스에만 적용되는 보안 세션 쿠키로 교환하고 토큰은 URL에서 제거되어 주소창이나 기록에 남지 않습니다.

  • 토큰은 일회용이고 수명이 짧습니다. Settings의 ticket은 정확히 한 번만 사용할 수 있고 1분 안에 만료됩니다. 공유가 중지되거나 다시 시작되면 이전 링크와 세션은 더 이상 작동하지 않습니다. 전체 링크를 자격 증명으로 취급하세요. 이 링크를 가진 사람은 누구나 해당 서비스에 접근할 수 있으므로 신뢰하는 사람에게만 공유하세요.

  • 자체 서비스는 자체 인증을 가져야 합니다. 다른 로컬 서비스로의 포워딩은 서버의 자체 서명 인증서로 트래픽을 암호화할 뿐 인증을 추가하지 않습니다. 해당 서비스가 제공하는 모든 내용(페이지와 API 모두)은 그 포트에 접근할 수 있는 모든 사람에게 노출됩니다. 민감한 서비스를 노출하기 전에 인증을 설정하세요.