내 PC에 Cloudflare Tunnel 배포하기
서문
일찌감치 Cloudflare에 카드를 등록해 두긴 했지만, 주로 R2만 많이 썼고, Zero Trust는 그런 게 있다는 것만 알지 한 번도 써본 적이 없었다.
나중에야 알게 됐는데, 이걸로 할 수 있는 게 의외로 많더라. 그럼 이제 본격적으로 가지고 놀아볼 차례다.
EP0: 사전 준비
이 모든 과정은 이미 Cloudflare 계정을 만들었고, 도메인의 DNS를 Cloudflare 계정에 연결해 두었다는 전제하에 진행된다.
먼저 은행 카드 한 장을 준비해야 한다. Visa & MasterCard & AMEX & Discover 중 아무거나 선택하면 된다. 예전에는 PayPal을 등록할 수 있다는 말도 있었는데, 적어도 내가 R2를 쓰려고 카드를 등록할 때는 이미 PayPal 버튼이 없었다. 어쨌든 나는 PayPal 버튼을 못 봤으니 카드를 등록했다.
(등록한 건 중국은행 마스터카드다)
카드를 등록했다면 계정에 약 1달러 정도 남겨두는 걸 잊지 말자. Cloudflare가 계정을 인증할 때 약 1달러를 결제해서 확인하는 과정을 거친다.
EP1: Zero Trust 초기화
왼쪽 내비게이션 바에서 Zero Trust 버튼을 클릭하면 Zero Trust 전용 콘솔로 이동한다 (이 콘솔은 다크 모드를 지원하지 않는다).
그러면 관련 안내가 나오는데, 여기에 적절한 이름을 입력하면 된다. 영문으로만 입력해야 한다.

입력 후 “다음”을 클릭하고, Free 플랜을 선택한다.

그다음 “계속해서 결제”를 클릭한다.

만약 아주 오래전에 어떤 서비스를 이용하면서 이미 Cloudflare에 카드를 등록해 두었다면, 이 단계에서는 그냥 편하게 기다리며 상태가 바뀌는 걸 지켜보면 된다.
하지만 Cloudflare에 카드를 등록한 적이 없다면, 아래처럼 카드 등록 화면이 뜰 것이다.


아래와 같은 페이지가 표시되면 Zero Trust 초기화가 완료된 것이다.

EP2: 소프트웨어 설치
“설정” → “리소스”를 클릭하고, 아래로 스크롤해 “cloudflared 다운로드”에서 자신의 시스템에 맞는 버전을 선택해 다운로드한다. 여기서는 Windows (64-bit)를 선택했다.

다운로드가 끝나면 실행해서 설치하면 된다.
물론 Docker 방식으로 배포할 수도 있는데, 이건 나중에 다루도록 하겠다.
Docker로 설치하려면 미리 기기에 Docker를 설치해 두어야 한다. Windows에서는 Docker로 설치하는 것을 권장하지 않는다.
EP3: 애플리케이션 생성
“네트워크” → “Tunnels”를 클릭하고, “터널 추가”를 클릭한다.

왼쪽의 Cloudflared를 선택한다.

터널 이름을 지정한다. 기억하기 쉬운 이름이면 된다. 여기서는 내 기기 이름을 사용했다. 작성 후 “터널 저장”을 클릭한다.

이제 핵심 단계다.
관리자 모드로 CMD 또는 PowerShell을 연다. 이미 gsudo를 설치했다면 sudo를 입력해 관리자 모드로 전환해도 된다. 내 Windows에는 gsudo가 있어서 바로 전환했다.

아까의 페이지로 돌아가서 아래로 스크롤해 “커넥터 설치 및 실행”으로 이동한다.
여기서는 이미 1~3단계를 미리 완료했으므로, 명령어를 복사해서 방금 연 콘솔에 붙여넣고 엔터를 누르면 된다.

이 단계에서 “환경 선택” 항목에 몇 가지 옵션이 있는데, 그중 하나가 Docker다. Docker로 바꾸면 아래의 “커넥터 설치 및 실행”이 자동으로 Docker 방식으로 전환된다. 마찬가지로 명령어를 복사해서 방금 연 콘솔에 붙여넣고 엔터를 누르면 된다.


실행이 끝나면 아까의 페이지로 돌아가서 맨 아래의 “Connectors”까지 스크롤하면 우리 기기가 보일 것이다.

기기가 보이는지 확인한 후 “다음”을 클릭한다.

안내에 따라 위 정보를 입력하면 된다. 입력 후 “터널 저장”을 클릭하고, 생성된 링크에 접속해서 정상적으로 접근되는지 확인해 보자.
- 만약
Error: Bad Configuration: Validation failed: parse "http://127.0.0.1:2333 ": invalid port ":2333 " after host같은 오류가 발생한다면, “Tunnels” 페이지로 돌아가 방금 생성한 터널의 구성 페이지로 들어가서 “공용 호스트 이름” 페이지에서 개별적으로 구성하면 된다. 구성 방법은 방금과 동일하며, 일반적으로 이렇게 하면 문제가 해결된다. - 문제가 해결되지 않았다면 방화벽이 cloudflared 관련 연결을 차단하고 있지 않은지 확인하자. 일반적으로 Linux 시스템은 cloudflared 관련 연결을 차단하지 않는다.
- Windows는 방화벽에서 cloudflared를 허용해 주는 것을 잊지 말자. 설치할 때 cloudflared가 관련 인바운드 규칙을 이미 만들었지만, 활성화되어 있지 않을 수 있다.
- Windows 사용자는 “고급 보안이 포함된 Windows Defender 방화벽”으로 이동해 “cloudflared”라는 이름의 두 규칙을 활성화하자. 일반적으로 활성화하면 정상적으로 동작한다.

후기
Cloudflare 쪽에서는 Access로 애플리케이션을 하나 만들어 연결을 보호하라고 권장하지만, 이건 개인의 선택이다 (나는 안 했다. 이건 못 다루겠다).
위 작업은 서버에도 동일하게 적용할 수 있다 (뻔한 소리).
관련 링크
- cloudflared GitHub 저장소: cloudflare/cloudflared