합법적 프라이버시 중심 출판

Cloudflare 터널과 VPN으로 집에서 익명 웹사이트 호스팅하기

이 가이드는 Cloudflare 터널로 로컬 사이트를 공개하고, 원하면 cloudflared를 VPN 경유시키는 방법으로 집 IP를 숨기는 법을 설명합니다.

프라이버시 경계가 중요합니다. 방문자는 주거지 IP를 몰라도 되지만 Cloudflare는 계정을 알고, VPN 제공자는 Cloudflare 연결 사실을 알 수 있습니다.

이 글은 합법적 프라이버시만 지원합니다.

합법적 셀프 호스팅, 테스트, 출판, 연구용입니다. 사기, 악성코드, 피싱, 괴롭힘 등 불법 행위는 지원하지 않습니다.

이 설정이 실제로 보호하는 것

실제 목표는 모든 공급자에게 사라지는 것이 아니라, 일반 방문자, 스캐너, DNS 조회가 주거지 IP나 라우터에 직접 닿지 못하게 하는 것입니다.

방문자에게 주거지 IP 숨기기

DNS가 집 주소 대신 Cloudflare를 가리켜 일반 조회로는 호스팅 위치를 알 수 없습니다.

라우터는 닫아 두세요

이름 있는 터널은 아웃바운드 전용이므로 웹사이트에 대한 인바운드 포트 포워딩이 필요 없습니다.

직접 오리진 노출 제한

사이트는 localhost나 다른 사설 인터페이스에 유지하면서 Cloudflare가 공개 접근성을 처리합니다.

현실적인 위협 모델 유지

이는 방문자로부터의 프라이버시이며, Cloudflare, VPN 제공자, 계정 추적으로부터의 은폐는 아닙니다.

누가 여전히 신원을 알 수 있나요?

익명 홈 호스팅은 대상별로 정보를 분리해 각기 다른 내용을 알게 하는 것이 가장 명확합니다.

방문자들

  • 의도적으로 노출한 공개 호스트명, TLS 영역, 콘텐츠, 헤더, 분석, 쿠키를 볼 수 있습니다.
  • DNS가 터널만 가리키면 보통 Cloudflare 엣지 IP를 보고 집 IP는 보지 못합니다.
  • 같은 기기나 브라우저 프로필로 관리자 백엔드에 로그인하면 브라우저 지문이 남을 수 있습니다.

Cloudflare

  • Cloudflare는 계정, 존, 터널 UUID, 설정된 호스트명, 터널 상태를 알고 있습니다.
  • Cloudflare는 cloudflared가 연결에 사용하는 출발지 IP도 보는데, 이는 집 IP나 VPN 출구 IP입니다.
  • VPN은 Cloudflare에 주거지 IP를 숨길 수 있지만 Cloudflare 계정 연결은 제거하지 않습니다.

VPN 제공자

  • VPN 제공자는 기기가 Cloudflare로 암호화된 트래픽을 유지하는 것을 볼 수 있습니다.
  • VPN이 평소 이메일이나 결제 정보와 연결돼 있으면 터널 외부에서도 관계가 유지됩니다.
  • VPN은 Cloudflare가 인식하는 출발지 IP를 변경하지만 VPN 제공자에 대한 신뢰는 지우지 않습니다.

더 넓은 신원 흔적

  • 도메인 등록 정보, 복구 메일, 결제, 재사용 아이디로 프로젝트가 연결될 수 있습니다.
  • 개인 브라우저 프로필로 관리자 패널 로그인 시 사이트와 일상 신원이 연결될 수 있습니다.
  • 실제로 익명성은 터널뿐 아니라 운영 규율에 크게 좌우됩니다.

트래픽 경로 작동 방식

공개 경로는 Cloudflare에서 종료되고, 사설 경로는 cloudflared만 접근 가능한 로컬 서비스로 유지됩니다.

01 방문자

호스트명을 요청해 Cloudflare 엣지 네트워크에 도달합니다.

02 Cloudflare

HTTPS 종료, 규칙 적용, 요청을 이름 있는 터널로 전달

03 cloudflared.exe

Windows 기기에서 Cloudflare로 아웃바운드 전용 터널 연결을 유지합니다.

04 로컬 웹사이트

인터넷에 직접 노출되지 않고 localhost나 다른 사설 오리진 주소에서 응답합니다.

VPN 위치

cloudflared가 VPN을 먼저 사용하면 Cloudflare는 집 IP 대신 VPN 출구 IP를 출발지로 인식합니다. VPN이 끊기고 킬 스위치가 없으면 cloudflared가 일반 ISP 경로로 재연결할 수 있습니다.

Windows에서 cloudflared.exe 역할

cloudflared.exe는 VPN이나 익명 네트워크가 아니며, 터널 인증과 장기 아웃바운드 연결 유지, 공개 호스트명을 로컬 서비스에 매핑하는 Cloudflare 연결기입니다.

이름 있는 터널 생성 및 인증

한 번 로그인해 이름 있는 터널을 만들고 일회용 링크 대신 안정적인 호스트명에 재사용할 수 있습니다.

중복 아웃바운드 연결 유지

Cloudflare는 터널이 여러 장기 연결을 유지해 경로 하나가 끊겨도 복원력을 유지한다고 문서화했습니다.

호스트명을 사설 서비스에 매핑

설정 파일로 app.example.com을 http://localhost:3000으로 보내면서 localhost를 공개 오리진으로 만들지 않습니다.

인터랙티브 실행 또는 Windows 서비스로 작동

터미널에서 터널을 먼저 테스트하고 나중에 항상 켜진 Windows 서비스로 전환할 수 있습니다.

웹사이트 외 서비스 지원

Cloudflare 터널은 HTTP, HTTPS, TCP, SSH, RDP 등 다양한 서비스를 지원하지만 이 가이드는 웹사이트에 집중합니다.

Windows 설정: cloudflared.exe 단계별

이 경로는 로컬에서 사이트가 작동하고 도메인이 Cloudflare DNS를 사용하는 것을 전제로 합니다. 예시는 app.example.com과 포트 3000 로컬 서비스입니다.

아래 명령은 모두 PowerShell 7에서 실행하세요. 복사 전 샘플 호스트명, 터널명, 로컬 서비스를 본인 값으로 바꾸세요.

01

1단계: 재사용할 값 정의

PowerShell 7에서 시작해 샘플 호스트명, 터널명, 로컬 서비스를 본인 값으로 바꾼 후 진행하세요.

CLIPowerShell 7
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"
02

2단계: cloudflared.exe 준비

다운로드한 바이너리 이름을 바꾸고 전용 폴더를 만든 뒤 실행 파일을 복사하세요.

CLIPowerShell 7
Rename-Item "$env:USERPROFILE\Downloads\cloudflared-windows-amd64.exe" "cloudflared.exe"
New-Item -ItemType Directory -Force $CloudflaredHome
Copy-Item "$env:USERPROFILE\Downloads\cloudflared.exe" "$CloudflaredHome\cloudflared.exe"
03

3단계: 작업 폴더로 이동해 바이너리 확인

폴더로 이동해 cloudflared.exe가 정상 실행되는지 확인한 후 인증하세요.

CLIPowerShell 7
Set-Location $CloudflaredHome
.\cloudflared.exe --version
04

4단계: 로그인 후 Cloudflare 존 승인

브라우저가 열려 존 승인을 요청하며, 계정 인증서는 기본 .cloudflared 디렉터리에 저장됩니다.

CLIPowerShell 7
.\cloudflared.exe tunnel login
05

5단계: 이름 있는 터널 생성 및 UUID 저장

터널을 생성한 후 명령 출력의 UUID를 아래 변수에 붙여넣어 다음 명령에서 재사용하세요.

CLIPowerShell 7
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"
06

6단계: config.yml을 한 줄씩 작성

이 명령들은 Windows 프로필에 로컬 config.yml을 생성해 터널이 어떤 공개 호스트명이 어떤 로컬 서비스로 전달할지 알게 합니다.

CLIPowerShell 7
Set-Content $ConfigPath "tunnel: $TunnelId"
Add-Content $ConfigPath "credentials-file: $env:USERPROFILE\.cloudflared\$TunnelId.json"
Add-Content $ConfigPath ""
Add-Content $ConfigPath "ingress:"
Add-Content $ConfigPath "  - hostname: $PublicHostname"
Add-Content $ConfigPath "    service: $LocalService"
Add-Content $ConfigPath "  - service: http_status:404"
07

7단계: 설정 검토 및 검증

파일을 한 번 출력해 확인하고, DNS 게시 전에 cloudflared가 인그레스 규칙을 검증하도록 하세요.

CLIPowerShell 7
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validate
08

8단계: DNS 경로 생성 및 터널 점검

실제 트래픽 전송 전에 Cloudflare에 어떤 호스트명이 이름 있는 터널을 가리킬지 알려줍니다.

CLIPowerShell 7
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelName
09

9단계: 터널을 포그라운드에서 실행

다른 네트워크에서 사이트를 테스트하는 동안 이 PowerShell 7 창을 열어 두세요. 완료 시 Ctrl+C로 종료하세요.

CLIPowerShell 7
.\cloudflared.exe tunnel run $TunnelName
선택 사항: 터널을 Windows 서비스로 전환

인터랙티브 터널이 작동한 후에만 진행하세요. 서비스가 시스템 프로필 경로와 레지스트리를 사용하므로 관리자 권한 PowerShell 7에서 명령을 실행하세요.

01

서비스 1단계: Windows 서비스 셸 설치

이 선택 단계는 관리자 권한 PowerShell 7에서 열고 먼저 Cloudflared 서비스를 설치하세요.

CLIPowerShell 7 (Admin)
Set-Location $CloudflaredHome
.\cloudflared.exe service install
02

서비스 2단계: cert.pem, 자격 증명, 설정을 시스템 프로필에 복사

Windows 서비스는 시스템 프로필에서 실행되므로 인증서, 터널 자격 증명, config.yml이 포함된 별도의 .cloudflared 폴더가 필요합니다.

CLIPowerShell 7 (Admin)
$SystemCloudflaredHome = "C:\Windows\System32\config\systemprofile\.cloudflared"
New-Item -ItemType Directory -Force $SystemCloudflaredHome
Copy-Item "$env:USERPROFILE\.cloudflared\cert.pem" "$SystemCloudflaredHome\cert.pem"
Copy-Item "$env:USERPROFILE\.cloudflared\$TunnelId.json" "$SystemCloudflaredHome\$TunnelId.json"
Set-Content "$SystemCloudflaredHome\config.yml" "tunnel: $TunnelId"
Add-Content "$SystemCloudflaredHome\config.yml" "credentials-file: $SystemCloudflaredHome\$TunnelId.json"
Add-Content "$SystemCloudflaredHome\config.yml" ""
Add-Content "$SystemCloudflaredHome\config.yml" "ingress:"
Add-Content "$SystemCloudflaredHome\config.yml" "  - hostname: $PublicHostname"
Add-Content "$SystemCloudflaredHome\config.yml" "    service: $LocalService"
Add-Content "$SystemCloudflaredHome\config.yml" "  - service: http_status:404"
03

서비스 3단계: ImagePath를 시스템 설정으로 지정하고 서비스 시작

Cloudflare Windows 서비스 문서는 Cloudflared ImagePath가 시스템 프로필 설정 파일을 참조해야 한다고 명시합니다.

CLIPowerShell 7 (Admin)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Cloudflared" -Name ImagePath -Value "C:\Cloudflared\bin\cloudflared.exe --config=C:\Windows\System32\config\systemprofile\.cloudflared\config.yml tunnel run"
sc.exe start cloudflared

Cloudflare Windows 서비스 흐름을 반영해 cert.pem과 터널 자격 증명을 시스템 프로필에 복사하고, 시스템 프로필 config.yml을 작성한 뒤 Cloudflared 서비스 ImagePath를 지정합니다.

VPN 위치 및 강화 규칙

터널의 프라이버시는 하위 경로에 달려 있습니다. Cloudflare가 주거지 IP 대신 VPN 출구 IP를 보려면 VPN이 cloudflared 시작 전 연결 경로에 있어야 합니다.

cloudflared 실행 전에 VPN 시작

호스트의 공인 IP를 먼저 확인하세요. 기기가 ISP IP를 표시하면 터널 연결 시 Cloudflare도 같은 IP를 봅니다.

실제 킬 스위치 사용

VPN이 끊기고 방화벽이 없으면 cloudflared가 일반 주거지 경로로 재연결할 수 있습니다.

오리진을 로컬에 유지하세요

웹 서비스를 가능하면 localhost나 사설 인터페이스에 바인딩해 터널만 공개 경로가 되도록 합니다.

로그를 민감 정보로 취급

Cloudflare 문서에 따르면 디버그 로그는 요청 URL, 메서드, 프로토콜, 콘텐츠 길이, 헤더를 기록할 수 있으니 일상 운영 시 일반 로그를 사용하세요.

선택 가능한 VPN 및 비교

빠른 VPN 선택 또는 폭넓은 비교 원하시나요?

간단한 시작점이 필요하면 아래 회전 VPN 버튼을 누르세요. 여러 옵션 비교는 전체 제공자 목록을 이용하세요.

현재 추천 VPN: Proton VPN

터널이 중단돼도 DNS 기록이 유지되면 방문자는 연결기 복귀 전까지 Cloudflare 오류를 봅니다. 이는 소란스럽지만 집 IP 노출보다는 낫습니다.

신뢰 전 확인 체크리스트

사이트가 한 번 열렸다고 설정이 안전하다고 생각하지 마세요. 운영자 시각으로 경로를 점검하세요.

DNS가 집 IP가 아닌 Cloudflare로 해석됩니다.

간단한 외부 조회 시 주거지 주소 대신 Cloudflare를 가리키는 레코드가 표시됩니다.

터널 시작 전 호스트가 VPN 출구 IP를 표시

기기 공인 IP를 먼저 확인해 Cloudflare가 어떤 IP를 인식하는지 파악하세요.

포트 포워딩 없이 다른 네트워크에서도 사이트 작동

모바일 데이터나 외부 네트워크에서 테스트해 로컬 경로 우회에 속지 마세요.

VPN 연결 끊김 시 주거지 IP로 자동 전환되지 않습니다.

실패 상황을 한 번 시뮬레이션하세요. cloudflared가 ISP 경로로 재연결되면 프라이버시 모델이 깨진 것입니다.

GhostlyShare가 더 쉬운 경우

GhostlyShare

일시적 공개 미리보기, 빠른 클라이언트 데모, 웹훅 콜백 URL이 필요하면 GhostlyShare가 더 간단합니다. 수동 Cloudflare 대시보드, DNS, config.yml 작업을 줄여줍니다.

터널, DNS, 서비스 계정 경로, 장기 홈 호스팅을 완전 제어하려면 수동 cloudflared를, 속도가 중요하면 GhostlyShare를 사용하세요.

GhostlyShare 보기

익명 홈 호스팅 자주 묻는 질문

Cloudflare가 내 신원을 알 수 있나요?

네. Cloudflare는 계정, 존, 터널, 엣지에 도달하는 출발지 IP를 알고 있습니다. VPN은 주거지 IP를 대체하지만 Cloudflare 계정 연결은 제거하지 않습니다.

방문자가 내 집 IP를 볼 수 있나요?

DNS가 Cloudflare만 가리키고 오리진이 노출되지 않았다면 방문자는 터널 뒤 주거지 IP가 아닌 Cloudflare 엣지와 공개 호스트명에 접속합니다.

라우터 포트 포워딩이 필요한가요?

아니요. Cloudflare 터널은 아웃바운드 전용으로, 인터넷에서 인바운드 트래픽을 기다리지 않고 Cloudflare에 연결합니다.

필요할 때만 cloudflared.exe 실행할 수 있나요?

네. 임시로 사이트가 필요할 때는 PowerShell에서 터널을 인터랙티브로 실행하세요. 로그오프나 재부팅 후에도 경로 유지가 필요하면 Windows 서비스로 전환하세요.

VPN 연결 끊기면 어떻게 되나요?

킬 스위치 없으면 cloudflared가 일반 주거지 경로로 재연결해 Cloudflare가 집 ISP IP를 보게 됩니다. 실패 상황이 성공만큼 중요합니다.

이것만으로 프로젝트 전체가 익명화되나요?

아니요. 도메인 등록, 결제, 복구 이메일, 브라우저 지문, 관리자 행동으로 신원이 드러날 수 있습니다. 터널은 노출 문제 일부만 해결합니다.

관련 가이드