Cloudflare Zero Trust 터널을 이제야 이해했다

3 weeks ago 11

  • 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 외의 애플리케이션 유형

원문에 추가 정보 없음

Read Entire Article