13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

포트 개방 없이 홈랩 서비스 외부 공개하기 — Cloudflare Tunnel 실전

홈랩에 올린 서비스를 밖에서 접속하려면 보통 공유기 포트포워딩 + 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부터 검토해 보시길 권합니다.