Cloudflare Tunnel 개념 설명

기본 개념

역방향 프록시 역할을 하는 보안 터널
로컬 서버(내 PC, 사내 서버 등)를 공인 IP 없이도 인터넷에 안전하게 노출시켜주는 서비스
cloudflared라는 경량 클라이언트를 설치해서 사용


주요 특징

방화벽 개방 불필요
서버의 80/443 포트를 외부에 직접 열지 않아도 됨
cloudflared가 Cloudflare 네트워크 쪽으로 먼저 연결을 여는 방식

 

보안 강화

Cloudflare 네트워크가 앞단에서 공격 필터링
DDoS 방어, WAF 규칙 적용 가능
설치와 사용이 간단
로컬에서 cloudflared tunnel create → Cloudflare 대시보드에서 라우팅 설정 → 도메인 연결

 

활용 예시

개발 환경 서버를 임시로 외부 팀원에게 공유
사내 내부망 웹 서비스에 외부 접근 허용 (Zero Trust 기반)
IoT 기기 원격 제어

 

 

 

Cloundflare 설치 방법

맥OS / 맥북에서 설치할 때

brew install cloudflared

 

 

CentOS / RHEL 계열 Linux 서버일 때

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
sudo rpm -ivh cloudflared-linux-x86_64.rpm

 

 

Debian/Ubuntu 계열 Linux 서버일 때

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

 

 

cloudflare tunnel 

처음 시작할 때

cloudflared tunnel login

 

cloudflared를 설치한 직후에는 cert 정보가 없다.

위 명령어로 브라우저를 오픈하고 cloudflare 사이트에서 인증하면 cert 정보가 생성된다.

 

 

cloudflare tunnel 생성

cloudflared tunnel create my-tunnel

 

이 명령으로 터널 ID와 자격 증명 파일이 생성된다.

여기서 알려주는 token은 아래 위치에 자동으로 저장된다.

 

mac os일 때는 /home/사용자/.cloudflared/xxxx.json

linux 일 때는 /root/.cloudflared/xxxx.json

 

 

config.yml 작성 (위와 동일 경로에 생성)

tunnel: mqtt-tunnel
credentials-file: /home/사용자/.cloudflared/xxxx.json

ingress:
  - hostname: your.domain.com
    service: tcp://localhost:1883
  - service: http_status:404

 

 

터널 실행

cloudflared tunnel run mqtt-tunnel

 

 

 

Systemctl에 등록 후 이용하기

 

서비스 파일 생성

# systemd 서비스 파일 생성
sudo tee /etc/systemd/system/cloudflared-tunnel.service > /dev/null << EOF
[Unit]
Description=Cloudflare Tunnel Service
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/usr/local/bin/cloudflared tunnel run pet-api-tunnel
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

 

 

서비스 활성화 및 시작

# systemd 재로드
sudo systemctl daemon-reload

# 서비스 활성화 (부팅 시 자동 시작)
sudo systemctl enable cloudflared-tunnel

# 서비스 시작
sudo systemctl start cloudflared-tunnel

# 서비스 상태 확인
sudo systemctl status cloudflared-tunnel

 

 

Cloudflare DNS 도 이용하고 싶다면

Cloudflare 대시보드 → DNS → your.domain.com

유형: CNAME

값: uuid.cfargotunnel.com (터널 생성 시 발급된 값)

프록시(구름 아이콘)는 활성화(주황) 상태여야 함

 

 

+ Recent posts