집에 작은 서버 하나 두고 외부에서 접속해보려다 공유기 설정에서 막힌 경험, 다들 한 번쯤 있으실 겁니다. 통신사 공유기는 포트포워딩 자체를 막아두기도 하고, 어렵게 뚫어놔도 IP가 바뀌면 다시 헤매야 합니다.

Cloudflare Tunnel은 그 모든 걸 우회합니다. 공유기를 건드리지 않고도 외부에서 내 서버에 안전하게 접속하게 해주는 무료 도구거든요. 이 글에서는 Cloudflare Tunnel이 뭔지, 왜 편한지, 그리고 실제로 5~10분 안에 어떻게 띄우는지를 처음 보는 분 기준으로 풀어봅니다.
Cloudflare Tunnel 한눈에 보기
Cloudflare Tunnel은 내 서버에서 Cloudflare로 먼저 연결을 거는 방식으로, 공유기 포트를 열지 않고도 외부 접속을 가능하게 하는 터널링 서비스입니다.
기존 방식과 가장 큰 차이는 연결 방향입니다. 일반적인 포트포워딩은 외부에서 우리 집 IP를 두드리는 구조라 공유기 설정·고정 IP·방화벽 같은 걸림돌이 줄줄이 따라옵니다. 반대로 Cloudflare Tunnel은 내 서버가 먼저 Cloudflare 쪽으로 연결을 걸어두고, 외부 사용자는 Cloudflare 도메인으로 들어옵니다.
비유하자면 이렇습니다.
💡 포트포워딩이 "우리 집 대문 번호를 외부에 알려주는 방식"이라면, Cloudflare Tunnel은 "직원이 회사 본사로 무전기를 켜둔 채 대기하는 방식"입니다. 외부에서 본사로 연락하면 무전기로 직원에게 전달됩니다.
[기존 포트포워딩]
외부 사용자 → 내 공유기 포트 → 내 서버
(열어줘야 함)
[Cloudflare Tunnel]
외부 사용자 → Cloudflare 도메인
↑
(cloudflared가 미리 연결 유지)
↓
내 서버
Cloudflare 공식 소개에 따르면 이 서비스는 무료 플랜에서도 충분히 쓸 만하고, HTTPS 인증서도 자동으로 붙습니다. 따로 SSL 설정을 안 해도 https:// 주소가 만들어진다는 뜻입니다.
왜 포트포워딩 대신 Tunnel을 쓰는가
가장 큰 이유는 귀찮음과 보안입니다. 포트포워딩은 한번 뚫으면 그 포트가 인터넷에 그대로 노출됩니다. 자동화된 봇이 24시간 내내 비밀번호를 시도하는 게 흔한 일이에요.
| 항목 | 포트포워딩 | Cloudflare Tunnel |
|---|---|---|
| 공유기 설정 | 필요 (통신사 공유기는 막힌 경우 多) | 불필요 |
| 고정 IP | 필요 또는 DDNS 따로 설정 | 불필요 |
| HTTPS 인증서 | 직접 발급·갱신 | 자동 |
| 외부 노출 포트 | 있음 (스캔 대상) | 없음 |
| 도메인 연결 | 별도 작업 | Cloudflare에서 한 번에 |
| 비용 | 무료 (보통) | 무료 플랜으로 충분 |
특히 외부 노출 포트가 없다는 점이 큽니다. 내 서버는 Cloudflare 쪽으로만 outbound 연결을 유지하기 때문에 공격자가 우리 집 IP를 직접 두드릴 수가 없거든요.
실제 활용 예를 들면 이런 상황에서 빛을 봅니다.
- 집에 두고 온 라즈베리파이로 만든 토이 프로젝트를 외부 친구에게 보여주고 싶을 때
- NAS의 웹 인터페이스를 외부에서 안전하게 쓰고 싶을 때
- 회사 네트워크 안에서만 돌아가는 사내 도구를 일부 사람에게만 열어주고 싶을 때 (Cloudflare Access와 결합)
- 개발 중인 로컬 웹서버를 클라이언트에게 임시로 보여줄 때
저도 처음엔 "에이 그냥 ngrok 쓰지" 했는데, 고정 도메인과 무료 무제한 사용이 가능하다는 점에서 Cloudflare Tunnel로 갈아탔습니다.
시작하기 전 준비물
설치 전에 챙길 게 세 가지 있습니다. 한 번만 준비하면 그 다음부터는 신경 쓸 일이 거의 없어요.
- ☐Cloudflare 계정 (무료)
- ☐본인 소유 도메인 1개 (Cloudflare에 등록되어 있어야 함)
- ☐외부에서 접속하고 싶은 서버 1대 (라즈베리파이, NAS, 노트북, VM 등)
도메인은 새로 살 필요 없이 가지고 있는 걸 Cloudflare로 옮기기만 하면 됩니다(네임서버 변경). 도메인 등록업체에서 산 도메인을 Cloudflare에 무료로 연결할 수 있고, 이 과정은 보통 5~10분 안에 끝납니다.
도메인이 아예 없으신 분은 가비아·Namecheap·Cloudflare Registrar 같은 곳에서 .xyz, .shop 같은 저렴한 도메인을 1년에 1~2달러 수준으로 구할 수 있습니다(글 작성 시점 기준 가격).
⚠️ 무료 서브도메인 서비스(.tk,.duckdns.org등)는 Cloudflare Tunnel과 직접 연결이 안 됩니다. 본인 도메인이 Cloudflare DNS에 등록되어 있어야 한다는 점은 꼭 확인하세요.
맥/리눅스에서 설치하는 단계
Cloudflare Tunnel을 띄우려면 cloudflared라는 작은 프로그램을 서버에 설치하고, 이 프로그램이 Cloudflare와 터널을 유지하도록 설정합니다. 터미널(검은 화면에 명령어를 입력하는 프로그램)에서 진행합니다.
1단계: cloudflared 설치
맥이라면 Homebrew(맥용 프로그램 설치 도구)로 한 줄이면 끝입니다.
brew install cloudflared
리눅스(라즈베리파이·우분투 등)라면 Cloudflare 공식 다운로드 페이지에서 자기 CPU에 맞는 패키지를 받으면 됩니다. 라즈베리파이 4 기준으로는 arm64 버전을 받습니다.
설치가 됐는지 확인하려면 다음을 입력합니다.
cloudflared --version
버전 번호가 뜨면 성공입니다.
2단계: Cloudflare 로그인
cloudflared tunnel login
이 명령은 브라우저를 자동으로 열어 Cloudflare에 로그인하라고 안내합니다. 로그인 후 어떤 도메인에 이 터널을 연결할지 고르면, 인증 정보가 자동으로 서버에 저장됩니다.
3단계: 터널 만들기
cloudflared tunnel create my-first-tunnel
my-first-tunnel 자리에 원하는 이름을 넣으면 됩니다. 이 명령이 끝나면 터널 ID(긴 영문+숫자 문자열)가 출력되는데, 이걸 어딘가 메모해두면 편합니다.
4단계: DNS 연결
내 도메인의 어떤 주소로 들어오면 이 터널을 쓸지 정합니다. 예를 들어 home.example.com으로 들어오는 트래픽을 이 터널로 받고 싶다면:
cloudflared tunnel route dns my-first-tunnel home.example.com
이 한 줄이 Cloudflare DNS에 자동으로 레코드를 추가해줍니다. 직접 DNS 관리 페이지에서 클릭할 필요 없어요.
5단계: 터널 실행
이제 내 서버의 어떤 포트로 트래픽을 넘길지 지정해서 터널을 띄웁니다. 예를 들어 내 서버에서 8080 포트로 웹앱이 돌고 있다면:
cloudflared tunnel --url http://localhost:8080 run my-first-tunnel
성공하면 몇 초 안에 https://home.example.com이 살아납니다. 브라우저에서 열어보세요.
자주 막히는 부분
처음 설정할 때 거의 모두가 한두 군데서 막힙니다. 제가 겪었거나 자주 보이는 사례 위주로 정리했습니다.
1. "DNS 레코드가 이미 존재한다"는 에러
기존에 같은 서브도메인에 A 레코드 같은 게 남아있으면 충돌이 납니다. Cloudflare 대시보드 → DNS 메뉴에서 해당 레코드를 삭제하거나 다른 서브도메인 이름을 쓰면 됩니다.
2. 터널은 떴는데 502 Bad Gateway
cloudflared는 잘 돌아가는데 내 서버 쪽 앱이 죽었거나, 포트 번호가 틀린 경우입니다. localhost:8080으로 지정했다면 같은 컴퓨터에서 curl http://localhost:8080이 응답하는지 먼저 확인해보세요.
3. 터미널을 닫으면 터널이 죽음
cloudflared tunnel run 명령은 포그라운드에서 돕니다. 터미널을 닫으면 터널도 같이 죽어요. 항상 띄워두려면 서비스로 등록해야 합니다.
sudo cloudflared service install
이 명령을 쓰면 컴퓨터 부팅 시 자동으로 터널이 살아납니다. 라즈베리파이처럼 24시간 켜두는 기기에 특히 유용합니다.
4. 회사·학교 네트워크에서 안 됨
방화벽이 outbound 443 포트를 막고 있으면 터널 연결 자체가 안 됩니다. 이럴 땐 관리자에게 문의하거나, 다른 네트워크에서 시도해보세요.
비용과 한계는 어디까지인가
Cloudflare Tunnel은 무료 플랜에서도 터널 개수 무제한, 트래픽 무제한으로 쓸 수 있습니다(글 작성 시점, Cloudflare 공식 가격 페이지 기준). 개인 프로젝트나 소규모 팀 용도로는 비용 걱정이 사실상 없습니다.
다만 알아둘 한계가 몇 가지 있습니다.
| 항목 | 무료 플랜 |
|---|---|
| 터널 개수 | 무제한 |
| 동시 접속 | 실용적인 수준에서 무제한 |
| HTTP/HTTPS 트래픽 | 무제한 |
| 비-HTTP 트래픽 (SSH, RDP 등) | 가능 (Cloudflare WARP 또는 cloudflared access 필요) |
| 업로드 파일 크기 | 무료 플랜은 응답 본문 100MB 제한 |
| Cloudflare Access (인증) | 사용자 50명까지 무료 |
큰 파일 업로드가 잦은 서비스(예: 사진 NAS에서 1GB짜리 영상 통째로 업로드)는 무료 플랜의 100MB 제한에 걸립니다. 이 경우엔 유료 플랜(Pro 월 $25부터)이나 다른 방식을 검토해야 합니다.
상업 서비스로 운영하려는 분들은 Cloudflare 약관도 확인하세요. 비디오 스트리밍처럼 대역폭을 크게 쓰는 용도는 별도 제품(Stream)을 권장하고 있습니다.
마무리
Cloudflare Tunnel은 "외부에서 내 서버 접속하는 가장 쉬운 방법"이라는 자리에 꽤 굳건히 자리잡았습니다. 공유기를 건드리지 않고, HTTPS도 자동이고, 무료 플랜으로 개인 용도는 충분히 커버됩니다.
처음 시도하시는 분이라면 라즈베리파이나 노트북에 간단한 웹앱(예: python -m http.server 8080로 띄운 임시 페이지) 하나 올리고, 그걸 Cloudflare Tunnel로 외부에서 열어보는 것부터 해보시길 권합니다. 30분 안에 https://내도메인.com으로 접속되는 경험을 하고 나면, 그 다음부터는 NAS·Home Assistant·개인 위키 뭘 붙여도 똑같은 방식이라 응용이 빨라집니다.
다음에 기회가 되면 Cloudflare Access를 붙여 특정 이메일 주소만 접속 가능하게 만드는 방법도 다뤄보겠습니다. 혼자만 쓰는 관리자 페이지를 외부에 안전하게 열 때 정말 유용하거든요.
'개발 & 기술 > DevOps·인프라' 카테고리의 다른 글
| 홈서버 전기요금 계산법: 미니PC·NAS·라즈베리파이 비교 (0) | 2026.07.16 |
|---|---|
| Ollama 사용법 — 로컬에서 무료로 LLM 돌리기 입문 (0) | 2026.07.09 |
| Docker로 AI 모델 로컬 실행하기 — Ollama 5분 가이드 (0) | 2026.06.24 |
| Claude Desktop 메모리 너무 먹을 때 1.8GB 줄이는 법 (0) | 2026.06.21 |
| Proxmox 홈서버로 구글포토 대신 무제한 사진 백업하기 (0) | 2026.06.13 |