Cloudflare Tunnel 소개
Cloudflare Tunnel(구 Argo Tunnel)은 공인 IP나 포트포워딩 없이 내부 서비스를 외부에 안전하게 노출할 수 있는 서비스입니다. 홈서버 운영자에게 매우 유용합니다.
동작 원리
홈서버에서 cloudflared 데몬이 Cloudflare 엣지 서버로 아웃바운드 연결을 생성합니다. 외부 요청은 Cloudflare를 거쳐 이 터널을 통해 홈서버로 전달됩니다.
사용자 → Cloudflare CDN → Cloudflare Edge
↓ (터널)
cloudflared (홈서버)
↓
로컬 서비스 (localhost:3000)
설치 및 인증
# cloudflared 설치 (Ubuntu/Debian)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
# Cloudflare 계정 인증
cloudflared tunnel login
# 터널 생성
cloudflared tunnel create my-homelab
터널 설정 파일
# ~/.cloudflared/config.yml
tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: /home/user/.cloudflared/a1b2c3d4.json
ingress:
- hostname: home.example.com
service: http://localhost:3000
- hostname: grafana.example.com
service: http://localhost:3001
originRequest:
noTLSVerify: true
- hostname: ssh.example.com
service: ssh://localhost:22
- hostname: files.example.com
service: http://localhost:8080
- service: http_status:404
DNS 레코드 연결
# CNAME 레코드 자동 생성
cloudflared tunnel route dns my-homelab home.example.com
cloudflared tunnel route dns my-homelab grafana.example.com
cloudflared tunnel route dns my-homelab ssh.example.com
cloudflared tunnel route ip show
systemd 서비스 등록
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
journalctl -u cloudflared -f
Cloudflare Access로 보안 강화
# Zero Trust 대시보드에서 Access Policy 설정
# 1. Application 생성
# - Application name: Home Dashboard
# - Session Duration: 24 hours
# - Application domain: home.example.com
# 2. Policy 설정
# - Allow: 이메일이 @example.com 도메인인 경우
# - Allow: 특정 IP 범위 (회사 VPN 등)
# - Deny: 나머지 모두
# 3. 추가 보안 옵션
# - 다중 인증 (MFA) 요구
# - 기기 인증서 요구
# - 지리적 제한 설정
Docker와 함께 사용
# docker-compose.yml
version: '3'
services:
cloudflared:
image: cloudflare/cloudflared:latest
command: tunnel --config /etc/cloudflared/config.yml run
volumes:
- ./cloudflared:/etc/cloudflared
restart: unless-stopped
networks:
- internal
webapp:
image: my-webapp:latest
networks:
- internal
expose:
- "3000"
networks:
internal:
장점과 주의사항
| 장점 | 주의사항 |
|---|---|
| 공인 IP 불필요 | Cloudflare 의존성 |
| 자동 SSL/TLS | 대역폭 제한 (무료 플랜) |
| DDoS 보호 | 동영상 스트리밍 제한 |
| Zero Trust 보안 | WebSocket 일부 제한 |
| 포트포워딩 불필요 | Cloudflare ToS 준수 필요 |
- 홈서버를 외부에 공개할 때 가장 안전하고 간편한 방법
- 무료 플랜으로도 충분한 기능 제공
- SSH, RDP 등 TCP 서비스도 터널링 가능
- Cloudflare WARP 클라이언트를 통한 사설 네트워크 구성도 가능
댓글 0