개요
Cloudflare에서는 외부에 서버 아이피 정보를 노출하지 않고도 로컬 서버에 접근할 수 있도록 해주는 터널 기능이 존재한다. 이를 이용하면 Cloudflare의 다양한 기능을 이용할 수 있으며 보안 조치를 추가할 수 있기 때문에 유용하게 사용할 수 있다. 이번 글에서는 터널 설정에 대해서 알아본다.
설정
Cloudflare의 제로 트러스트 메뉴로 진입하자.

최초로 진입하게 된다면 기능 활성화를 위해서 결제 정보를 입력하기를 요구받을 수 있다. 어차피 50명 까지는 무료 요금제에 속하기 때문에 비용이 결제되지는 않는다. 혹시 걱정이 된다면 카드 한도를 최소화해둔 국제 결제가 가능한 카드를 등록하도록 하자.
기본적인 제로 트러스트 설정이 완료되었다면, 좌측에서 터널 메뉴를 찾아보자.

터널 생성은 두 가지 타입을 제공하는데, Cloudflared를 선택한다.

터널 이름을 지정하면 해당 터널에 대한 토큰을 발급해준다. 토큰이 노출되면 문제가 될 수 있으므로 주의하고, 원하는 환경에 맞는 명령어를 잘 복사해두도록 하자.

이 메뉴의 하단에서는 커넥터를 계속 조회하고 있다. 즉, 이제 내 로컬 서버에서 터널을 설치하면 된다.
MacOS
본인이 터널을 설정하려는 서버는 Mac mini 서버다.
brew
가 설치되어 있다면 다음과 같이 간단하게 터널을 설정할 수 있다.brew install cloudflared sudo cloudflared service install <token>
Windows
MacOS와 유사하게
winget
을 이용한다. 관리자 권한이 있는 PowerShell에서 작업하기를 권한다.winget install --id Cloudflare.cloudflared cloudflared service install <token>
Docker
OS에 관계 없이 Docker 컨테이너를 이용해서 터널을 유지하는 방법도 있다. Docker에 의한 장애 지점 추가 및 구동 시점이 늦춰져서 위 방법보다는 선호하진 않는다.
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <token>
테스트
앞서의 과정이 모두 완료가 되었다면, Connectors 메뉴에서 터널이 정상적으로 인식되는걸 확인할 수 있을 것이다. 그러면 이제 터널을 통해서 라우팅을 추가할 수 있다. 라우팅 방법은 여러 가지가 존재하는데, 이번 글에서는 공개 호스트에 대해서만 다룬다. 개인 네트워크를 라우팅에 추가하여 VPN 대용으로 사용할 수 있지만, 지금 필요한 내용은 아니다.
공개 호스트는 말 그대로 내가 소유한 도메인에 하위 도메인이나 경로를 생성하고, 터널을 통해서 내부에 존재하는 서비스와 연결하는 기능이다. 그래서 최소한 내가 소유한 도메인이 Cloudflare를 통해서 관리되고 있어야 한다.

추가가 가능한 서비스 유형에서 ssh를 선택하고, Mac mini 자체의 ssh를 오픈하려는 것이므로 url은 localhost를 입력한다. 터널 서비스가 Mac mini에서 구동되므로 localhost = Mac mini가 된다.
여기서 잠깐!
터널을 생성하면서 Cloudflare와 내 개인 네트워크가 연결되었다. 터널은 비록 Mac mini에 생성되었지만, 어쨋든 개인 내트워크 내부에 빨대(?)가 생긴 것이다. 그래서 URL에 개인 네트워크에 위치한 다른 서비스를 추가할 수도 있다! 예를 들어, Mac mini를 제외한 사설 서버 192.168.0.3이 있다고 하면 여기에서 서버를 구동하고 URL에 사설망 주소를 입력하면 된다.
자, 모든 터널 설정이 완료되었으면 다음 내용들을 확인한다.
- 내 터널 목록에서 방금 추가한 터널의 상태가 정상 여부

- 내가 추가한 하위 도메인이 DNS에 잘 등록되어 있는지 여부

- ssh 서버 호출 여부
맺음말
Cloudflare Tunnel을 이용하여 개인 네트워크에 위치하는 서버를 아이피 노출 없이 안전하게 공개하는 방법에 대해서 알아보았다. 기존에 공유기에서 포트 포워딩을 하고, DDNS 설정을 하는 복잡한 과정을 축소할 수 있었고, 추가적으로 Cloudflare가 제공하는 많은 기능을 무료로 이용할 수 있다.
터널 설정은 완료됐지만 아직 보안 설정은 추가가 되지 않은 상태이다. 다음 글에서는 Cloudflare Access를 이용하여 보안 설정을 추가해보도록 하겠다.