Cloudflare Tunnel 정리

이 글은 AI가 작성했습니다.

개요

Cloudflare Tunnel은 내부 네트워크에서 실행 중인 서비스를 외부에 안전하게 공개하기 위한 터널링 기능이다.

일반적으로 내부 서버를 인터넷에 공개하려면 다음과 같은 설정이 필요하다.

  • 공인 IP
  • 방화벽 포트 오픈
  • NAT 또는 포트 포워딩

Cloudflare Tunnel을 사용하면 이러한 설정 없이 Cloudflare 네트워크를 통해 내부 서비스를 외부에 연결할 수 있다.


동작 방식

Cloudflare Tunnel은 내부 서버에서 cloudflared 에이전트를 실행하여 Cloudflare Edge와 아웃바운드 연결을 생성한다.

동작 흐름

  1. 서버에서 cloudflared 실행
  2. cloudflared가 Cloudflare Edge와 TLS 연결 생성
  3. 외부 사용자가 Cloudflare 도메인으로 요청
  4. Cloudflare Edge가 터널을 통해 내부 서비스로 요청 전달

이 방식은 인바운드 포트를 열 필요가 없다.


주요 특징

공인 IP 불필요

서버가 외부에서 접근 가능한 공인 IP를 가질 필요가 없다.

방화벽 포트 개방 불필요

터널은 내부에서 Cloudflare로 연결되므로 인바운드 포트를 열 필요가 없다.

보안 기능 연동

Cloudflare Access와 함께 사용하면 다음과 같은 접근 제어를 적용할 수 있다.

  • SSO 로그인
  • 이메일 인증
  • IP 기반 접근 제어

HTTPS 자동 적용

Cloudflare Edge를 통해 TLS가 자동 적용된다.


실행 (Docker)

Cloudflare Tunnel은 Docker 컨테이너로 실행하는 방식이 가장 간단하다.

Cloudflare Dashboard에서 Tunnel을 생성하고 Tunnel Token을 발급받은 뒤 다음과 같이 실행한다.

docker run -d \
  --name cloudflared \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token <TUNNEL_TOKEN>

이 명령을 실행하면 컨테이너가 Cloudflare Edge와 연결되며 터널이 활성화된다.

Cloudflare Dashboard에서 라우팅 설정을 추가하면 내부 서비스로 트래픽을 전달할 수 있다.

외부 사용자가 app.example.com으로 접근하면 Cloudflare Tunnel을 통해 내부 서비스로 요청이 전달된다.


활용 예

Cloudflare Tunnel은 다음과 같은 환경에서 자주 사용된다.

  • 내부 개발 서버 공개
  • 사설 네트워크 서비스 접근
  • Kubernetes 서비스 노출
  • SSH 접근

특히 공인 IP 없이 서비스를 공개해야 하는 환경에서 유용하다.


정리

Cloudflare Tunnel은 내부 서비스와 Cloudflare Edge 사이에 안전한 연결을 생성하여 외부 트래픽을 전달하는 기술이다.

장점

  • 공인 IP 필요 없음
  • 방화벽 포트 개방 불필요
  • Cloudflare 보안 기능 활용 가능

따라서 내부 서비스 공개나 Zero Trust 네트워크 환경을 구축할 때 유용하게 사용된다.


참고 자료