카테고리:

3 분 소요

Cloudflare

Cloudflare는 사이트를 운영할 때 WAF(Web Application Firewall; 웹 어플리케이션 방화벽), CDN(Content Delivery Network; Content Distribution Network), DDoS(Distributed Denial of Service attack; 분산 서비스 거부 공격), 서버의 원본 IP 숨기기 등의 중요한 기능을 무료로 제공한다.

Cloudflared(Cloudflare Tunnel)

이제는 Cloudflared(Cloudflare Zero Access, 구 Cloudflare Argo Tunnel)를 통해 Ngrok처럼 포트포워딩 없이 Private에서 개발하고 있는 환경을 Public으로 Tunneling할 수 있다.

https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/

https://developers.cloudflare.com/pages/how-to/preview-with-cloudflare-tunnel/

※ 본 게시글은 Ubuntu 24.04 LTS 버전을 기준으로 작성되었습니다.

1. Cloudflared 설치하기

# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list

# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared

2. Cloudflare에 등록하기

Cloudflare 대시 보드에 들어가서, 좌측 중간부에 Zero Trust를 클릭하면 아래의 주소로 연결된다.

https://one.dash.cloudflare.com/

해당 대시보드에서 좌측 중간부에서 Access → Tunnels → Add a tunnel를 클릭한다.

이후 터널의 이름을 작성하고 저장하면 서버의 환경을 선택하는 창이 표시된다.

이미 1번에서 설치를 완료했으니, Debian을 선택하고 토큰을 복사하여 설치해야 하는데 토큰은 우하단에 표시되며 중요한 곳에 보관해둬야 한다.

sudo cloudflared service install [토큰]

cloudflared 설치가 완료된 터미널 화면

설치가 완료되면 대시보드 하단에 Connector ID와 Status, Version이 출력되며 성공적으로 설치되며 연결되었음을 보여준다.

3. Public Hostname Page 설정하기

이제 Tunneling을 위해 Public Hostname을 설정해야 한다.

Public Hostname Page 설정 화면

사이트가 직관적으로 구성되어있어 Subdomain과 Type, 서버단 URL만 기입하고 Save hostname을 클릭하면 완료된다.

위의 사진과 같이 설정하면 [User] dev.domain.com ↔ cloudflared ↔ localhost:8080 [Server]으로 구성되어, 포트포워팅이나 방화벽 설정없이 외부에서도 접근할 수 있다.

Free Tier 기준 장단점

  Cloudflared Ngrok
임의 도메인 제공 X O
사용자 정의 도메인 O O
SSL/TLS 인증서 제공 O O
대역폭 무제한 1GB/mo

성능이나 기능은 비슷하니 상황에 따라 Cloudflared나 Ngrok 중에 선택하여 사용하면 된다.

태그: CloudFlare, Cloudflared, gpg, hostname, ngrok, Tunnel, Tunneling, 터널링, 포트포워딩

업데이트: