블로그
원격 개발을 위한 Cloudflare Tunnel: 완전 설정 가이드
포트 열기, DNS 관리, 라우터 설정 없이 어디서나 Mac 개발 서버에 접속하세요. Cloudflare Tunnel로 원격 개발을 실현하는 방법입니다.
이 카테고리의 제품 및 엔지니어링 업데이트를 확인하세요.
카테고리 보기로컬 네트워크 밖에서 Mac 개발 환경에 접속하고 싶다면 — 카페, 공항, 다른 도시에서 — 인터넷을 통해 Mac까지 안전한 경로가 필요합니다. 전통적인 방법(포트 포워딩, 동적 DNS, VPN)은 모두 개발자 사용 사례에서 상당한 단점이 있습니다.
Cloudflare Tunnel은 더 나은 모델을 제공합니다: Mac이 Cloudflare 네트워크에 아웃바운드 연결을 설정합니다. 원격 클라이언트는 Cloudflare에 연결합니다. 라우터에 포트를 열 필요도, DNS를 관리할 필요도, 방화벽 규칙을 설정할 필요도 없습니다.
이 가이드는 원격 개발을 위한 설정, 특히 Tactic Remote를 통한 Claude Code 접속을 다룹니다.
Cloudflare Tunnel 동작 원리
아키텍처는 간단합니다:
핵심 포인트:
- Mac이 터널 연결을 시작합니다. 공개 포트에서 리스닝하지 않습니다.
- Cloudflare가 URL을 할당합니다 (예:
https://random-words.trycloudflare.com). 터널을 통해 Mac으로 라우팅합니다. - 트래픽이 TLS로 종단간 암호화됩니다.
- 라우터 설정이 필요 없습니다 — 포트 포워딩, UPnP, DMZ 불요.
이것은 포트 노출과 근본적으로 다릅니다. 포트 포워딩에서는 Mac이 전체 인터넷의 인바운드 연결을 수락합니다. Cloudflare Tunnel에서는 Cloudflare를 통한 인증된 트래픽만 Mac에 도달합니다.
사전 준비
- macOS 14 (Sonoma) 이상 (Mac 앱 통합용)
- Homebrew 설치
- cloudflared — Cloudflare의 터널 클라이언트
cloudflared 설치:
설치 확인:
빠른 터널에는 Cloudflare 계정이 필요 없습니다. trycloudflare.com 도메인은 무료이며 가입이 필요하지 않습니다.
Tactic Remote Mac 앱으로 설정
Mac 앱이 Cloudflare Tunnel 설정 대부분을 자동으로 처리합니다.
1단계: Cloudflare Tunnel 활성화
Mac 앱의 설정에서:
- Cloudflare Tunnel을 활성화로 전환
- 앱이 올바른 설정으로
cloudflared를 시작 - 터널 URL이 표시됨 (예:
https://bright-river-abc123.trycloudflare.com)
내부적으로 Mac 앱은 다음을 실행합니다:
--protocol h2mux 플래그는 HTTP/2 멀티플렉싱을 사용하여 WebSocket 트래픽에 더 나은 성능을 제공합니다.
2단계: API 키 설정
이것은 Cloudflare 연결에 필수입니다. 서버가 인터넷에서 접근 가능할 때 연결을 인증해야 합니다.
Mac 앱이 32자 랜덤 API 키를 생성합니다. 직접 설정할 수도 있습니다. 이 키는 iPhone에서 연결할 때 필요합니다 — WebSocket 핸드셰이크 시 Sec-WebSocket-Protocol 헤더로 전송됩니다.
3단계: iPhone 설정
iPhone의 Tactic Remote에서:
- 연결 설정으로 이동
- Cloudflare 모드로 전환
- Mac 앱의 터널 URL 입력
- API 키 입력
또는 Mac 앱의 QR 코드를 스캔하면 터널 URL과 API 키가 모두 인코딩되어 있습니다.
4단계: 연결 테스트
- iPhone을 셀룰러로 전환 (WiFi를 끄고 실수로 LAN을 사용하지 않는지 확인)
- Tactic Remote 열기
- 연결 성공 확인
- 세션 생성 또는 열기
- 테스트 명령 전송
성공하면 설정 완료입니다. 터널 URL은 cloudflared가 실행되는 동안 유지됩니다.
Tactic Remote가 터널을 사용하는 방식
Cloudflare Tunnel이 활성화되면 통신 경로가 변경됩니다:
LAN 모드: iPhone → WiFi → Mac (포트 8765) — 직접 WebSocket Cloudflare 모드: iPhone → 셀룰러/WiFi → Cloudflare Edge → 터널 → Mac (포트 8765) — 터널을 통한 암호화된 WebSocket
iPhone 앱 관점에서 유일한 차이는 URL입니다:
- LAN:
ws://192.168.1.100:8765 - Cloudflare:
wss://bright-river-abc123.trycloudflare.com
wss:// 접두사는 WebSocket Secure(암호화됨)를 나타냅니다. 폰과 Cloudflare 사이, Cloudflare와 Mac 사이의 모든 데이터가 암호화됩니다.
보안 고려사항
터널이 보호하는 것
- 공개 포트 없음 — Mac의 방화벽에 인바운드 규칙 불요
- TLS 암호화 — 전송 중 모든 트래픽 암호화
- DDoS 보호 — Cloudflare의 엣지 네트워크가 볼류메트릭 공격을 Mac에 도달하기 전에 흡수
- URL 모호성 —
trycloudflare.comURL은 랜덤 생성되어 추측하기 어려움
사용자가 책임져야 할 것
- API 키 강도 — 긴 랜덤 키 사용 (Mac 앱이 32자 생성). 약한 비밀번호 사용 금지.
- API 키 전달 — QR 코드(대면)로 전달. 이메일이나 채팅으로 전송하지 말 것.
- 터널 URL 비공개 — 터널 URL을 공개적으로 게시하지 말 것. URL과 API 키가 있으면 누구나 연결 가능.
- Mac 물리적 보안 — 서버가 Claude Code를 통해 파일시스템에 접근 가능. Mac을 잠글 것.
- 속도 제한 — Tactic Remote 서버에 무차별 대입 시도를 늦추는 속도 제한 미들웨어가 포함되어 있지만, 강한 API 키를 대체하지는 않음
Cloudflare가 트래픽을 볼 수 있나요?
Cloudflare는 엣지에서 TLS를 종료하므로, 이론적으로 트래픽을 볼 수 있습니다. 대부분의 개발 사용 사례에서 이는 수용 가능합니다 — 기밀 데이터를 전송하는 것이 아니며, Cloudflare의 프라이버시 약속은 잘 문서화되어 있습니다.
우려된다면 LAN 모드만 사용하고 로컬 네트워크에서만 작업하세요.
문제 해결
"터널 URL이 나타나지 않음"
cloudflared가 설치되어 있는지 확인:which cloudflared- Mac 앱 로그에서 cloudflared 오류 확인
- cloudflared를 수동으로 실행:
cloudflared tunnel --url http://localhost:8765 - 인터넷 연결이 활성화되어 있는지 확인
"LAN에서는 되지만 Cloudflare에서 안 됨"
- 터널 URL에
wss://(notws://)를 사용하고 있는지 확인 - Mac 앱과 iPhone 설정의 API 키가 일치하는지 확인
- 네트워크가 비표준 포트의 아웃바운드 연결을 차단하는지 확인 (기업 네트워크에서 드물지만 가능)
"간헐적 연결 끊김"
- 빠른 터널은 장시간 비활성 후 URL이 재활용될 수 있음
- Mac 앱 확인 — 터널 URL이 변경되었으면 iPhone 설정 업데이트
- 영구 URL을 위해 Cloudflare 계정이 있는 Named Tunnel 고려
"높은 지연 시간"
- 빠른 터널은 가장 가까운 Cloudflare 데이터 센터를 통해 라우팅, 보통 빠름
- 지연이 지속적으로 높으면 ISP의 Cloudflare 피어링이 나쁠 수 있음
- 테스트:
curl -o /dev/null -w "%{time_total}" https://your-tunnel-url.trycloudflare.com - 200ms 이하의 지연 시간은 터미널 상호작용에 적합. 500ms 이상은 체감됨.
빠른 터널 vs Named Tunnel
Tactic Remote는 기본적으로 빠른 터널을 사용합니다 — Cloudflare 계정 불요, URL 자동 할당. 가장 빠른 원격 접속 경로입니다.
빠른 터널 제한:
- URL이 랜덤 생성되고 cloudflared 재시작 시 변경
- 커스텀 도메인 불가
- Cloudflare Access 통합 불가 (SSO, 추가 인증 레이어 없음)
Named Tunnel (무료 Cloudflare 계정 필요)은 다음을 제공:
- 재시작해도 변하지 않는 영구 URL
- 커스텀 도메인 매핑 (예:
dev.yourdomain.com) - 추가 인증을 위한 Cloudflare Access (SSO, 이메일 인증)
- 여러 사람이 일관된 접속이 필요한 팀 설정에 적합
개인 개발자에게는 빠른 터널이 잘 작동합니다. 폰에서 터널 URL을 자주 업데이트한다면 Named Tunnel로 업그레이드를 고려하세요.
Cloudflare Tunnel의 대안
참고로 다른 원격 접속 방법들:
포트 포워딩
- 라우터에서 포트를 열고 방화벽 설정
- 위험: Mac이 인터넷에 직접 노출
- IP가 변경되면 동적 DNS 필요
- 개발 환경에는 권장하지 않음
Tailscale/WireGuard VPN
- 기기 간 프라이빗 네트워크 생성
- 좋은 보안 모델 (피어 투 피어 암호화)
- Mac과 iPhone 모두에 Tailscale 클라이언트 필요
- 참고: Tactic Remote는 현재 Tailscale과 통합되지 않음 — 별도로 실행하고 Tactic Remote를 Tailscale IP로 지정해야 함
ngrok
- Cloudflare Tunnel과 유사한 개념
- 무료 티어에 제한 있음 (연결 수, 대역폭)
- 성숙한 제품, 좋은 개발자 경험
- ngrok 생태계를 선호하면 대안
SSH 터널
- SSH 포트 포워딩을 사용하는 고전적 접근
- Mac에 SSH 서버 설정 필요
- 참고: Tactic Remote는 WebSocket을 사용하므로 SSH 터널은 WebSocket 연결을 래핑하여 명확한 이점 없이 복잡성만 추가
Cloudflare Tunnel이 Tactic Remote의 권장 옵션인 이유는 무료이고, 빠른 터널에 계정이 필요 없으며, Mac 앱에 직접 통합되어 있기 때문입니다.