본문 바로가기

코딩

Set up a Cloudflare Tunnel between local network and Cloudflare

728x90
반응형

# cloudflared 설치

$ wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
$ sudo dpkg -i cloudflared-linux-amd64.deb
$ cloudflared tunnel login

** login 후, dns 설정 완료 필요(네임서버를 cloudflare 로 변경 필요)

 

# DNS 자동 전파 완료 확인

nslookup endless.thesysm.com
# 또는
dig endless.thesysm.com

 

# 터널 생성

$ cloudflared tunnel create `터널명` # 터널 생성
$ cloudflared tunnel delete `터널명` # 터널 삭제
$ cloudflared tunnel list           # 터널 리스트
$ cloudflared tunnel info `터널명`   # 터널 정보 확인

 

# 터널과 도메인 연결

$ cloudflared tunnel route dns `터널명` `도메인`

# 도메인 준비; 예시들 :
cloudflared tunnel route dns mywebserver mywebsite.com
cloudflared tunnel route dns mywebserver blog.mydomain.com  
cloudflared tunnel route dns mywebserver home.mysite.net
cloudflared tunnel route dns mywebserver server.example.org

# 서브도메인 사용; 이미 도메인이 있는 경우, 서브도메인 생성:

cloudflared tunnel route dns mywebserver home.yourdomain.com
cloudflared tunnel route dns mywebserver api.yourdomain.com
cloudflared tunnel route dns mywebserver dev.yourdomain.com

 

# 로컬 서버에 설정 파일 생성 및 설정(~/.cloudflared/config.yml)

# 설정 파일 생성 (~/.cloudflared/config.yml)
tunnel: myhome
credentials-file: ~/.cloudflared/[터널ID].json
ingress:
  - hostname: http://www.homeserver.com
    service: http://localhost:8000
  - service: http_status:404

 

# 터널 시작

$ cloudflared tunnel run `터널명`

 

# 자동 시작 시스템 서비스 등록

# cloudflared를 시스템 서비스로 설치
sudo cloudflared service install

# 서비스 시작
sudo systemctl start cloudflared
sudo systemctl enable cloudflared  # 부팅시 자동 시작

# 상태 확인
sudo systemctl status cloudflared

 

#  ingress 설정 해석

- hostname: www.homeserver.com
  service: http://localhost:8000
  • 의미 : www.homeserver.com  으로 들어오는 요청을 집 서버의 "localhost:8000" 으로 전달
  • 작동 방식 : 외부에서 www.homeserver.com  접속 -> cloudflare 터널 -> 집 서버 8000번 포트
- service: http_status:404
  • 의미 : 위에 매치오디지 않는 모든 요청은 404 에러 반환
  • 보안 : 예상치 못한 접근 차단
인터넷 사용자
    ↓
www.homeserver.com (DNS는 Cloudflare를 가리킴)
    ↓
Cloudflare 서버 (터널 엔드포인트)
    ↓
집의 cloudflared 클라이언트
    ↓
localhost:8000 (집 웹서버)

 

# ingress 설정 예시

-- 여러 서비스 연결 :

ingress:
  - hostname: blog.mysite.com
    service: http://localhost:3000    # 블로그 서버
  - hostname: api.mysite.com  
    service: http://localhost:5000    # API 서버
  - hostname: files.mysite.com
    service: http://localhost:8080    # 파일 서버
  - service: http_status:404

 

-- 서브패스 분기 :

ingress:
  - hostname: mysite.com
    path: /api/*
    service: http://localhost:5000    # API 요청
  - hostname: mysite.com
    service: http://localhost:3000    # 나머지 요청
  - service: http_status:404

 

-- https 백엔드 (cloudflare 에서 제공하는 ssl 인증서 사용; Let's Encrypt 기반) :

ingress:
  - hostname: secure.mysite.com
    service: https://localhost:8443
  - service: http_status:404

 

-- https 백엔드 (자체 서명 인증서 사용) :

ingress:
  - hostname: www.homeserver.com
    service: https://localhost:8443
    originRequest:
      noTLSVerify: true  # 자체 서명 인증서 허용
  - service: http_status:404

 

# Nginx Https 설정 예시

# 설정 파일 편집
sudo nano /etc/nginx/sites-available/default

# 설정 내용:
server {
    listen 443 ssl;
    server_name www.homeserver.com;
    
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    
    root /var/www/html;
    index index.html;
}

# Nginx 재시작
sudo systemctl restart nginx

 

-- 고급 Https 설정 (config.yml 작성 예시) :

tunnel: myhome-tunnel
credentials-file: ~/.cloudflared/abc123.json

ingress:
  - hostname: www.homeserver.com
    service: https://localhost:443
    originRequest:
      noTLSVerify: true
      caPool: /path/to/ca.crt  # CA 인증서 (선택사항)
  - hostname: api.homeserver.com
    service: http://localhost:5000
  - service: http_status:404

# HTTPS 강제 리다이렉트 (Cloudflare 대시보드에서도 설정 가능)

 

# DNS 설정(godaddy) : dns 설정을 cloudflare 로 변경해야 함

 

1단계 : cloudflare 에 도메인 추가

# 먼저 Cloudflare 계정에서
https://dash.cloudflare.com → "Add a Site" 
→ GoDaddy 도메인 입력 (예: homeserver.com)

 

2단계 : godaddy 에서 네임서버 변경

# GoDaddy 계정 로그인
→ "My Products" 
→ "Domains" 
→ 도메인 선택 
→ "DNS" 또는 "Nameservers" 클릭
→ "Change Nameservers" 선택

 

** 기존 godaddy 네임서버 :

ns01.domaincontrol.com
ns02.domaincontrol.com

 

** 신규 cloudflare 네임서버 (실제 네임서버는 cloudflare 에서 제공받은 것으로 사용) :

mcgrory.ns.cloudflare.com
treasure.ns.cloudflare.com

 

3단계 : dns 전파 시간 대기

시간: 24-48시간 (보통 몇 시간 내 완료)
확인: nslookup homeserver.com 또는 dig homeserver.com

 

# 상세 godaddy 설정 : **현재는 godaddy 에 네임서버만 cloudflare 로 바꾸면 자동으로 처리됨

네임서버 변경 방법:

1. GoDaddy 로그인 → https://account.godaddy.com
2. 도메인 관리 → "My Products" → "All Products and Services"
3. 도메인 선택 → 해당 도메인 옆 "DNS" 버튼
4. 네임서버 섹션 → "Change" 클릭
5. Custom nameservers 선택
6. Cloudflare 네임서버 입력:
   ava.ns.cloudflare.com
   kai.ns.cloudflare.com
7. save

이후 cloudflare 설정 :
dns 레코드 자동 생성 : cloudflare 가 기존 dns 레코드를 자동으로 가져옴

 

# DNS 자동 전파 완료 확인

nslookup endless.thesysm.com
# 또는
dig endless.thesysm.com

 

 

# 자동 시작 시스템 서비스 등록

# cloudflared를 시스템 서비스로 설치
sudo cloudflared service install

# 서비스 시작
sudo systemctl start cloudflared
sudo systemctl enable cloudflared  # 부팅시 자동 시작

# 상태 확인
sudo systemctl status cloudflared

 

728x90
반응형

'코딩' 카테고리의 다른 글

Gunicorn 설치 및 설정  (0) 2025.08.26
nginx 설치 및 설정  (0) 2025.08.24
데이터 전처리 및 파이프라인  (0) 2025.08.22
endless project timeline & flow  (0) 2025.08.06
django migration Reset  (0) 2025.08.06