-
Cloudflare Zero Trust와 Warp를 활용해 NAT·방화벽 문제 없이 사설 네트워크를 연결하고 서비스 접근을 제어하는 구조 설명
-
Argo 터널을 통해 사설 네트워크나 로컬 서비스를 공용 도메인으로 노출하거나, Warp 연결 시에만 접근 가능한 비공개 네트워크 구성 가능
-
Tailscale은 P2P 기반으로 빠르지만 NAT 환경에서 제약이 있고, Cloudflare는 모든 트래픽을 엣지 네트워크를 통해 라우팅해 안정적 연결 제공
-
Cloudflared는 터널 생성, Warp Client는 네트워크 접속 및 정책 적용을 담당하며, Tunnels·Routes·Targets로 트래픽 흐름과 접근 제어를 구성
- 이메일·GitHub 로그인 등으로 세밀한 Access Policy를 설정해, Warp 연결 여부에 따라 로그인 절차를 생략하거나 제한하는 보안 네트워크 환경 구축
Cloudflare Zero Trust와 Warp 개요
- Tailscale의 NAT 관통 실패로 인해 Cloudflare Zero Trust + Warp 학습을 시작
- Zero Trust 터널을 통해 사설 네트워크 연결, 서비스 공개, 사설 IP 네트워크 구성, 로컬 서비스 임시 공개 등 다양한 기능 활용 가능
- NAT 문제 없이 Cloudflare 네트워크를 통해 모든 트래픽이 전달되며, 세분화된 접근 정책으로 사용자·봇·서버 간 접근 제어 가능
- SSH 접속 시 공개 포트 없이 Zero Trust 인증 기반 로그인 지원
Cloudflare Zero Trust vs Tailscale
-
Tailscale은 NAT·방화벽을 우회해 P2P 연결을 시도하며, 불가능할 경우 중계 서버 사용
-
Cloudflare는 Warp-to-Warp를 제외한 모든 트래픽이 Cloudflare 엣지 서버를 거쳐 전달되어 NAT 문제는 없지만 약간의 지연 발생
Cloudflared와 Warp의 차이
-
Warp Client: 클라이언트를 Cloudflare 네트워크에 연결하고 정책을 적용하는 도구
- 주로 클라이언트에서 실행되며, 서버에서도 사용 가능
- Warp-to-Warp 라우팅으로 P2P 연결 지원
-
Cloudflared: 터널을 생성해 Zero Trust 네트워크에 추가하는 도구
- 서버에서 실행해 네트워크 진입점을 제공
-
cloudflared access 명령으로 다른 Zero Trust 리소스에 연결 가능
- 일회성 테스트용 터널 생성 가능
Tunnels, Routes, Targets 구조
-
Tunnels: cloudflared로 배포되는 트래픽 출구 지점
- 예: 홈 네트워크(192.168.1.1/24)에 항상 켜진 장비에 설치
- 설정 파일(/etc/cloudflared/config.yml)에서 요청 도착 시 라우팅 대상 지정
- 예시: gitlab.widgetcorp.tech → localhost:80, gitlab-ssh → localhost:22
-
공용 노출 예시:
-
homeassistant.mydomain.com → 192.168.1.3으로 라우팅
- Cloudflare DNS에서 CNAME을 터널 주소로 지정하면 Warp 없이도 접근 가능
-
Routes: 특정 IP 범위를 어떤 터널로 보낼지 정의
- 예: 192.168.1.1/24 전체 또는 192.168.1.3/32 단일 IP 지정
- Warp 연결 시 해당 IP 요청이 Cloudflare 네트워크를 통해 터널로 전달
- 존재하지 않는 가상 IP(예: 10.128.1.1)도 라우팅 가능
-
Targets: 보호할 인프라 단위를 정의
- 예: homeassistant.mydomain.com → 192.168.1.3/32
- 대상에 접근 정책을 부여해 특정 사용자만 접근 가능
Access Policies: 접근 제어
- 터널, 라우트, 타깃을 구성한 후 Access Policy로 접근 권한 설정
- 정책 구성 요소
-
Include: 접근 허용 조건(OR)
-
Require: 반드시 충족해야 하는 조건(AND)
-
Action: Allow / Deny / Bypass / Service Auth
-
예시 1 – 이메일 기반 접근 제어
- 특정 이메일 주소만 접근 허용
- GitHub 로그인 방식으로 인증 제한 가능
-
예시 2 – Warp 연결 시 로그인 생략
- Gateway 선택자를 사용해 Zero Trust Warp 연결 시 로그인 화면 생략
- Warp 미연결 시에는 GitHub 로그인 요구
Warp 클라이언트 배포 및 등록
-
Settings → Warp Client에서 등록 정책 설정
- GitHub 인증 및 특정 이메일만 등록 허용
- WARP 인증 ID 설정 시 Gateway 선택자 사용 가능
-
Profile Settings에서 클라이언트 동작 정의
- 프로토콜(MASQUE/WireGuard), 서비스 모드, 라우팅 제외 IP 등 설정
- Cloudflare CA 자동 설치, 고유 CGNAT IP 할당, 디바이스 상태 점검(Device Posture) 설정 가능
- Warp 클라이언트 로그인 후 Zero Trust 네트워크 연결 완료
- 이후 192.168.1.3 요청이 터널을 통해 라우팅됨
구축 결과 요약
- GitHub 및 이메일 기반 로그인 정책으로 Warp 클라이언트 등록
- 사설 네트워크 내 터널이 homeassistant.mydomain.com 요청을 192.168.1.3으로 전달
-
192.168.1.3 트래픽은 Warp 연결 시에만 터널을 통해 접근 가능
- DNS 기반 공개 접근과 Warp 기반 비공개 접근 두 가지 방식 제공
- Warp 연결 시 로그인 생략, 미연결 시 GitHub 인증 요구
추가로 다루지 않은 항목
- Warp-to-Warp 라우팅
- Zero Trust 내부 전용 사설 IP 생성
- SSH 인증 정책 구성
- Self-Hosted 외의 애플리케이션 유형
원문에 추가 정보 없음