홈랩에 올린 서비스를 밖에서 접속하려면 보통 공유기 포트포워딩 + DDNS를 씁니다. 그런데 저는 공유기에 포트를 단 하나도 열지 않고 이 블로그(blog.pswq.net)를 외부에 공개하고 있습니다. 방법은 Cloudflare Tunnel입니다. 실제로 제 홈랩을 이걸로 운영하면서 겪은 구성과 장단점을 그대로 공개합니다.
1. 왜 포트포워딩을 버렸나
전통적인 방식(포트포워딩 + DDNS)은 홈랩에서 문제가 많습니다.
- 고정 IP가 없다 — 가정용 회선은 IP가 바뀌어서 DDNS에 의존해야 함
- 포트를 여는 순간 공격 표면 — 열린 80/443은 전 세계 스캐너의 표적
- 내 공인 IP가 노출 — 위치·회선이 드러남
- 일부 ISP는 80/443 인바운드를 아예 막음
Cloudflare Tunnel은 이걸 근본적으로 뒤집습니다. 홈랩에서 Cloudflare로 바깥으로 나가는(outbound) 연결만 맺고, 외부 요청은 그 연결을 타고 들어옵니다. 즉 공유기에 열 포트가 0개입니다.
2. 동작 원리 한 장 요약
방문자 → Cloudflare 엣지(HTTPS) → [터널] → cloudflared(홈랩) → 내부 서비스
↑ 홈랩이 먼저 outbound로 연결해 둠
핵심은 인바운드 포트가 필요 없다는 점입니다. 홈랩의 cloudflared 데몬이 Cloudflare에 먼저 붙어 있고, 외부 트래픽은 그 통로로만 들어옵니다. HTTPS 인증서도 Cloudflare가 자동으로 처리해서 내가 인증서를 관리할 필요가 없습니다.
3. 실제 구성 — 토큰(원격 관리형) 방식
Cloudflare Tunnel은 두 가지로 설정할 수 있습니다. 저는 토큰 방식을 씁니다.
| 방식 | 설정 위치 | 특징 |
|---|---|---|
| 토큰(원격 관리형) | Cloudflare Zero Trust 대시보드 | 웹에서 라우팅 관리, 서버엔 토큰만 |
| 로컬 config.yml | 서버의 설정 파일 | 파일로 버전관리, GitOps에 유리 |
홈랩 서버에서 데몬을 이렇게 띄웁니다(토큰은 절대 공개 금지, 여기선 가림).
cloudflared --no-autoupdate tunnel run --token <터널토큰>
--no-autoupdate는 데몬이 멋대로 자동 업데이트해서 예기치 않게 재시작하는 걸 막으려고 붙였습니다(홈랩은 안정성이 우선). 서버 쪽 설정은 이게 전부고, 나머지 라우팅은 전부 대시보드에서 합니다.
4. 공개 호스트네임 연결
Zero Trust 대시보드 → 터널 → Public Hostname에서 도메인과 내부 서비스를 매핑합니다.
| 항목 | 값(예) |
|---|---|
| Subdomain / Domain | blog . (내 도메인) |
| Service Type | HTTP |
| URL | http://192.168.x.x:<내부포트> |
여기서 URL은 홈랩 내부에서 본 서비스 주소입니다. 즉 방문자는 HTTPS로 blog.내도메인에 접속하지만, 터널 반대편에선 평범한 사내 HTTP 서비스로 전달됩니다. 내부 서비스는 HTTPS를 몰라도 되고, 공인 IP도 드러나지 않습니다. 저는 이 방식으로 WordPress 블로그를 외부에 공개하고 있습니다.
5. 직접 써 보고 느낀 장단점
좋은 점
- 포트 개방 0 — 공유기 설정을 건드릴 필요가 없고 공격 표면이 사라짐
- 공인 IP 숨김 — 방문자는 Cloudflare만 봄
- HTTPS 자동 — 인증서 갱신을 신경 쓸 필요 없음
- 무료 — 개인 홈랩 규모에선 비용이 들지 않음
주의할 점
- 토큰 유출은 치명적 — 토큰이 곧 터널 권한이라, 프로세스 인자·로그·스크린샷에 노출되지 않게 관리해야 함
- Cloudflare 의존 — 트래픽이 Cloudflare를 경유하므로 서비스 장애의 영향을 받음
- 관리자 페이지는 반드시 보호 — 외부 공개 시 Cloudflare Access로 접근 제어를 걸어 두는 걸 권장(로그인/관리 경로)
6. 결론
홈랩 서비스를 밖에 내놓을 때, 저는 이제 포트포워딩으로 돌아갈 이유를 못 느낍니다. 포트 0개, IP 숨김, 무료 HTTPS라는 조합은 개인 홈랩에 특히 잘 맞습니다. 단, 토큰 관리와 관리자 경로 보호만 확실히 하면 됩니다. 홈랩 서비스를 외부에 공개할 계획이라면 Cloudflare Tunnel부터 검토해 보시길 권합니다.