TL;DR

Thay vì mở cổng 443 và whitelist IP của Cloudflare (cần cron job cập nhật liên tục), bạn cài cloudflared lên VPS - daemon này chủ động kết nối ra tới Cloudflare, rồi đóng luôn toàn bộ inbound traffic trên firewall. Kết quả: port scanner không thấy gì. Không ai có thể kết nối trực tiếp vào server, ngoại trừ Cloudflare và Tailscale của chính bạn.

Port scanner hiển thị toàn bộ cổng Timed-Out sau khi setup Cloudflare Tunnel

Kết quả port scan sau khi setup: mọi cổng đều Timed-Out.

Bài Toán Cũ: Whitelist IP Cloudflare

Cách làm truyền thống để ẩn origin server sau Cloudflare là giữ nguyên cổng 443/80 mở, rồi dùng iptables hoặc Hetzner Cloud Firewall để chỉ cho phép dải IP của Cloudflare kết nối vào. Nghe ổn - nhưng thực tế phức tạp hơn:

  • IP range của Cloudflare thay đổi liên tục - bạn phải viết script Python và đặt cron job chạy mỗi 24 giờ để cập nhật firewall rule.
  • Script lỗi, cron fail, rule cũ - origin của bạn lộ ra ngoài mà không biết.
  • Vẫn cần giữ cổng inbound mở, nghĩa là vẫn còn attack surface.

Cloudflare Tunnel xóa sạch vấn đề này. Không còn whitelist, không còn cron job, không còn cổng nào mở.

Cơ Chế Đằng Sau: Outbound-Only

Khi bạn chạy cloudflared trên VPS, daemon này không nhận kết nối - nó tạo kết nối outbound tới các PoP (Point of Presence) gần nhất của Cloudflare. Cụ thể:

  • 4 kết nối đồng thời tới 2 data center khác nhau - redundancy tự động, một cái drop thì cái khác tiếp quản ngay.
  • Giao thức: HTTP/2 hoặc QUIC qua cổng outbound 7844. Không cần mở inbound gì thêm.
  • Khi người dùng truy cập website của bạn, request đến Cloudflare edge, đi ngược qua tunnel về server - server respond, Cloudflare forward lại cho user. Toàn bộ quá trình này diễn ra qua kết nối outbound mà cloudflared đã tạo sẵn.

Vì kết nối là outbound-only, bạn có thể chặn toàn bộ inbound traffic trên Hetzner firewall. Không có port 80, không có port 443, không có gì cả.

Con Số Cần Biết

Thông sốGiá trị
RAM cloudflared daemon< 50 MB
Cổng outbound cần mở7844 (TCP/UDP)
Kết nối đồng thời tới Cloudflare4 connections / 2 data centers
Latency overhead5-20ms (Berlin-Frankfurt: chỉ 2-8ms)
Giá core tunnelMiễn phí, unlimited bandwidth
Cloudflare Access (Zero Trust auth)Miễn phí tới 50 users
Thời gian setup15-20 phút trên Ubuntu VPS

Combo với Tailscale: Mô Hình 2 Lớp

Đây là pattern mà @levelsio và nhiều indie hacker đang dùng - và nó rất hợp lý:

  • Cloudflare Tunnel - xử lý tất cả web traffic công khai (HTTP/HTTPS). Người dùng ngoài chỉ cần browser, không cần cài gì.
  • Tailscale - private mesh VPN dùng WireGuard, chỉ cho laptop và server của bạn. SSH, database access, admin tools - đi qua đây.

Kết quả: Hetzner firewall chặn 100% inbound từ internet. Chỉ có Cloudflare (qua tunnel outbound) và Tailscale (subnet nội bộ) mới vào được.

Hai công cụ này không cạnh tranh nhau - Cloudflare Tunnel là application proxy cho public-facing services, Tailscale là network-layer VPN cho private access. Dùng cả hai là pattern phổ biến và hợp lý nhất.

Khi Nào Không Phù Hợp

Cloudflare Tunnel không phải silver bullet. Bỏ qua nếu bạn cần:

  • Latency cực thấp: game server real-time, VoIP, high-frequency trading - thêm 5-20ms là vấn đề.
  • Kiểm soát TLS hoàn toàn: certificate pinning, custom CA - Cloudflare terminate TLS ở edge, bạn không can thiệp được.
  • UDP thuần: free tier không hỗ trợ UDP tunnel.
  • Streaming bandwidth lớn: video stream, file download lớn - thêm hop có thể tốn kém.

Bắt Đầu Trong 15 Phút

Setup cơ bản trên Ubuntu VPS chỉ cần 4 lệnh sau khi đã có Cloudflare account và domain:

# 1. Cài cloudflared
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg
apt install cloudflared

# 2. Authenticate
cloudflared tunnel login

# 3. Tạo tunnel
cloudflared tunnel create my-vps

# 4. Route DNS & chạy
cloudflared tunnel route dns my-vps app.yourdomain.com
cloudflared service install

Sau đó vào Hetzner dashboard, xóa sạch inbound rules. Chạy port scan để kiểm tra - mọi thứ phải hiện "Timed-Out" như ảnh ở đầu bài.

Nguồn: Cloudflare Tunnel Docs, MassiveGRID Ubuntu VPS Guide, Cloudflare Tunnel vs Tailscale - Intellizu.