문서
빠른 시작 + 부분별, 기기별 기능 설명 (계속 업데이트 중)
포트 터널링
이 문서는 패널의 「포트 터널링」 기능을 소개합니다. 공인 IP가 없는 터널링 서버의 애플리케이션 포트를 패널 서버의 공인 포트로 매핑해, 외부 사용자가 접근할 수 있게 합니다.
한 문장으로
여러분의 서버가 내부망에 숨어 있고(공인 IP 없음), 그 위에서 사이트나 앱이 돌아가지만 외부에서는 접근할 수 없습니다. 포트 터널링은 「패널 서버에 공인 포트를 열고, 외부의 접근을 암호화 터널을 통해 이 내부망 서버의 애플리케이션 포트로 실어 나르는」 것입니다. 결과: 외부에서 패널 서버 IP:포트로 접근하면 내부망 서버의 앱에 접근한 것과 같습니다.
기능 소개
「터널링 운영」으로 연결한 공인 IP 없는 서버에서 돌아가는 앱(예: Navidrome 음악, Nextcloud 클라우드, Memos 노트)은 외부에서 접근할 수 없습니다. 포트 터널링은 이 앱 포트들을 패널 서버(공인 IP 보유)의 포트로 매핑해, 외부 사용자가 「패널 서버 IP:포트」로 접근할 수 있게 합니다.
적용 시나리오
- 터널링 서버에서 Web 앱을 돌리며 외부 접근을 허용하고 싶을 때
- 내부망 기기의 서비스를 공인망에 노출
- 공인 IP가 없는 기기의 사이트, API, 패널에 공인 진입점을 제공
원리(데이터 흐름)
외부 사용자 → 패널 서버 공인 포트 (예: :9117) → 암호화 터널 → 터널링 서버 앱 포트 (예: :9117)
외부 트래픽은 먼저 패널 서버(공인 IP가 있는 유일한 지점)에 도달한 뒤, 암호화된 리버스 터널을 통해 내부망 기기로 전달되고, 마지막으로 기기에서 실제로 실행 중인 앱 포트에 도착합니다.
통합 채널(모든 기기, 수동 선택 불필요):
| 기기 유형 | 포워딩 채널 | 설명 |
|---|---|---|
| Linux 서버(공인 IP 없음) | 4433 리버스 터널(AES-256-GCM 암호화) | 원시 TCP 바이트 스트림으로 빠르고 안정적이며 대량 동시 연결 지원 |
| 안드로이드/Termux 기기 | 4433 리버스 터널(AES-256-GCM 암호화) | Linux 기기와 동일한 암호화 터널을 사용해 안정적이고 추가 오버헤드 없음 |
패널은 일괄적으로 4433 리버스 터널을 사용하므로, 터널링을 생성할 때 하위 채널을 신경 쓸 필요도, 수동으로 선택할 필요도 없습니다.
> 추가 설명: 안드로이드/Termux 기기의 시스템 관리(명령 실행, 터미널, 파일)는 SocketIO 안정 채널을 사용하지만, 포트 터널링은 일괄적으로 4433 리버스 터널을 사용합니다. 둘은 각자의 역할을 하며 서로 간섭하지 않습니다.
사용 방법
1. 대상 기기가 「터널링 운영」으로 이미 연결되어 있는지 확인합니다(Agent 온라인)
2. 「포트 터널링」을 열고 「터널링 추가」를 클릭합니다
3. 터널링 서버(Agent)를 선택하고 입력합니다:
- 수신 포트: 패널 서버의 공인 포트(외부 접근용), 예:
9117 - 대상 포트: 터널링 서버의 앱 포트, 예:
8080
4. 생성 후 외부에서 http://패널 서버 IP:수신 포트로 접근할 수 있습니다
예시
패널 서버 공인 IP가 203.0.113.10이고, 내부망 라즈베리파이에서 Navidrome(수신 4533)이 돌고 있다고 합시다:
- 수신 포트에
4533입력 - 대상 포트에
4533입력 - 생성 후 외부 사용자가
http://203.0.113.10:4533으로 접근하면 라즈베리파이의 Navidrome이 열립니다
리소스 상한
| 제한 | 값 |
|---|---|
| Agent당 최대 포워딩 채널 | 32개 |
| 전체 패널 최대 Agent | 64개 |
초과 시 새 연결이 자동으로 거부되며 이미 실행 중인 터널링에는 영향이 없습니다.
주의 사항
1. 클라우드 방화벽: 패널 서버의 클라우드 방화벽/보안 그룹에서 해당 수신 포트를 허용해야 하며, 그렇지 않으면 외부에서 접근할 수 없습니다.
2. Agent 버전: SSH가 아닌 포트(22 이외)를 포워딩하려면 터널링 서버에 새 버전 Agent가 설치되어 있어야 합니다(구버전은 22 포트 포워딩만 지원). 다른 포트를 포워딩하려면 Agent를 다시 설치하세요.
3. Agent 온라인: 터널링은 Agent가 온라인 상태를 유지하는 것에 의존합니다. Agent가 오프라인이면 터널링이 중단되고, 재연결 후 자동으로 복구됩니다.
4. 패널 재시작 시 자동 복구: 패널 서비스를 재시작하면 터널링이 자동으로 복구됩니다(Agent 재연결 시 트리거).
5. 안드로이드 대상 서비스는 동시성 지원 필요: 안드로이드에서 터널링되는 대상 서비스(예: python3 -m http.server)가 단일 스레드이면서 keep-alive를 사용하면, 같은 연결이 닫히지 않아 이후 요청이 차단됩니다. 대상 서비스를 멀티스레드로 사용하거나 연결이 제때 닫히도록 하세요.
관련 문서
포트 터널링 vs 포트 포워딩(무엇을 선택할까)
| 포트 터널링(이 문서) | 포트 포워딩 | |
|---|---|---|
| 적용 서버 | 공인 IP 없음(터널링 서버) | 독립 공인 IP 있음 |
| 구현 방식 | 리버스 터널 | 시스템 방화벽 DNAT |
| 포워딩 위치 | 패널 서버 | 대상 서버 로컬 |
| Agent 필요 | 예 | 아니오 |
한 문장으로: 공인 IP가 없으면 터널링, 공인 IP가 있으면 포워딩.