Cloudflare Tunnel 정리
이 글은 AI가 작성했습니다.
개요
Cloudflare Tunnel은 내부 네트워크에서 실행 중인 서비스를 외부에 안전하게 공개하기 위한 터널링 기능이다.
일반적으로 내부 서버를 인터넷에 공개하려면 다음과 같은 설정이 필요하다.
- 공인 IP
- 방화벽 포트 오픈
- NAT 또는 포트 포워딩
Cloudflare Tunnel을 사용하면 이러한 설정 없이 Cloudflare 네트워크를 통해 내부 서비스를 외부에 연결할 수 있다.
동작 방식
Cloudflare Tunnel은 내부 서버에서 cloudflared 에이전트를 실행하여 Cloudflare Edge와 아웃바운드 연결을 생성한다.
동작 흐름
- 서버에서 cloudflared 실행
- cloudflared가 Cloudflare Edge와 TLS 연결 생성
- 외부 사용자가 Cloudflare 도메인으로 요청
- 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에서 라우팅 설정을 추가하면 내부 서비스로 트래픽을 전달할 수 있다.
예
- hostname: app.example.com
- service: http://localhost:3000
외부 사용자가 app.example.com으로 접근하면 Cloudflare Tunnel을 통해 내부 서비스로 요청이 전달된다.
활용 예
Cloudflare Tunnel은 다음과 같은 환경에서 자주 사용된다.
- 내부 개발 서버 공개
- 사설 네트워크 서비스 접근
- Kubernetes 서비스 노출
- SSH 접근
특히 공인 IP 없이 서비스를 공개해야 하는 환경에서 유용하다.
정리
Cloudflare Tunnel은 내부 서비스와 Cloudflare Edge 사이에 안전한 연결을 생성하여 외부 트래픽을 전달하는 기술이다.
장점
- 공인 IP 필요 없음
- 방화벽 포트 개방 불필요
- Cloudflare 보안 기능 활용 가능
따라서 내부 서비스 공개나 Zero Trust 네트워크 환경을 구축할 때 유용하게 사용된다.