Cloudflare Tunnel – Bảo mật tuyệt đối cho Server tại gia

Cloudflare Tunnel – Bảo mật tuyệt đối cho Server tại gia

Trong các phần trước, chúng ta đã cài đặt Portainer để quản lý Container. Tuy nhiên, làm sao để truy cập các dịch vụ này từ xa (khi bạn đi làm, đi du lịch) mà vẫn đảm bảo an toàn? Mở Port (Port Forwarding) trên Router là cách truyền thống nhưng tiềm ẩn vô vàn rủi ro bảo mật.

Đây là lúc Cloudflare Tunnel xuất hiện như một vị cứu tinh. Hãy cùng tìm hiểu công nghệ này là gì và cách triển khai nó trong 5 phút.

Cloudflare Tunnel Là Gì?
Sơ đồ hoạt động của Cloudflare Tunnel bảo mật kết nối mạng nội bộ
Mô hình kết nối an toàn qua Cloudflare Tunnel

Cloudflare Tunnel (trước đây là Argo Tunnel) là một giải pháp tạo ra một “đường hầm” (tunnel) mã hóa riêng biệt kết nối trực tiếp máy chủ HomeLab của bạn với mạng lưới toàn cầu của Cloudflare.

Hiểu đơn giản: Thay vì bạn mở cửa chính (Open Port) để mời khách vào nhà (Server), bạn đào một đường hầm bí mật từ trong nhà ra thẳng trạm kiểm soát của Cloudflare. Khách muốn vào nhà phải qua trạm kiểm soát này, nếu hợp lệ mới được đi qua hầm vào nhà.

Tại sao dân chơi HomeLab lại phát cuồng vì Cloudflare Tunnel?

  • Ẩn danh tuyệt đối: Không ai biết IP Public nhà mạng của bạn (IP nhà bạn được giấu kín sau IP của Cloudflare).
  • Không cần mở Port (No Port Forwarding): Router của bạn có thể đóng kín toàn bộ cổng inbound, hacker không thể scan port để tấn công.
  • Vượt qua CGNAT: Rất hữu ích nếu nhà mạng không cấp cho bạn IP Public riêng (tình trạng phổ biến với VNPT, Viettel hiện nay).
  • Bảo mật Zero Trust: Tích hợp lớp xác thực (đăng nhập bằng Google/OTP) trước khi cho phép truy cập vào các dịch vụ nhạy cảm.
  • HTTPS miễn phí: Tự động cấp chứng chỉ SSL cho mọi tên miền con.

Nhược điểm cần cân nhắc

  • Phụ thuộc bên thứ 3: Nếu Cloudflare “sập” (rất hiếm), bạn mất kết nối.
  • Quyền riêng tư: Traffic đi qua server của Cloudflare (tuy nhiên với gói Free họ cam kết không xem dữ liệu, nhưng vẫn là điểm cần lưu ý với dữ liệu cực kỳ nhạy cảm).

Hướng Dẫn Thiết Lập Cloudflare Tunnel (Docker)

Điều kiện kiên quyết: Bạn phải sở hữu một Tên miền (Domain) và tên miền đó đã được trỏ Name Server về Cloudflare.

Bước 1: Thiết Lập Cloudflare Zero Trust

Dịch vụ Tunnel nằm trong hệ sinh thái Zero Trust. Bạn cần kích hoạt nó lần đầu:

  1. Truy cập Dashboard Cloudflare, chọn mục Zero Trust trên menu trái.
  2. Làm theo hướng dẫn (Next), đặt tên Team Name (ví dụ: adtek-lab).
  3. Chọn gói Free Plan ($0). Bước thanh toán cứ chọn Proceed (không mất tiền, không cần thẻ Visa).

Bước 2: Tạo Tunnel mới

Sau khi vào được Dashboard Zero Trust:

  1. Vào menu Access > Tunnels.
  2. Nhấn nút Create a Tunnel.
  3. Đặt tên cho Tunnel (ví dụ: homelab-server) và nhấn Save Tunnel.
  4. Tại màn hình tiếp theo, bạn sẽ thấy phần “Install and run a connector”. Hãy chọn tab Docker.

Bạn sẽ thấy một đoạn mã token trông như sau: eyJhIjoi.... Hãy copy đoạn token này.

Bước 3: Cài Đặt Cloudflared lên HomeLab

Chúng ta có 2 cách chạy. Bạn nên dùng cách 2 (Docker Compose) để dễ quản lý về sau.

Cách 1: Chạy lệnh Docker trực tiếp (Nhanh gọn)

SSH vào máy chủ và chạy lệnh sau (thay thế Token của bạn vào):

docker run -d --restart always --name cloudflared \
cloudflare/cloudflared:latest tunnel --no-autoupdate run --token EY_JHI_MA_TOKEN_CUA_BAN

Cách 2: Dùng Docker Compose (Khuyên dùng)

Tạo file docker-compose.yml:

version: '3.9'
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=EY_JHI_MA_TOKEN_CUA_BAN_PASTE_VAO_DAY

Chạy lệnh: docker-compose up -d

Sau khi chạy xong, quay lại trình duyệt web trên Cloudflare, bạn sẽ thấy trạng thái Connector chuyển sang CONNECTED màu xanh lá.

Bước 4: Public dịch vụ (Route Tunnel)

Giả sử bạn muốn public Portainer (đang chạy ở cổng 9000) ra tên miền portainer.tenmien.com.

  1. Trong giao diện Tunnel, chuyển sang tab Public Hostname.
  2. Nhấn Add a public hostname.
  3. Điền thông tin:
    • Subdomain: portainer
    • Domain: tenmien.com
    • Service Type: HTTP
    • URL: localhost:9000 (hoặc IP nội bộ: 192.168.1.10:9000)
  4. Nhấn Save hostname.

Bước 5: Tận hưởng kết quả

Bây giờ, bạn có thể truy cập https://portainer.tenmien.com từ bất kỳ đâu. Cloudflare đã tự động cấp SSL, kết nối của bạn đã được mã hóa an toàn.

Bạn có thể lặp lại Bước 4 để thêm các dịch vụ khác như: Home Assistant (8123), Nextcloud (443), v.v…

Kết luận

Cloudflare Tunnel là giải pháp “ngon-bổ-miễn phí” giúp biến HomeLab của bạn trở nên chuyên nghiệp và an toàn hơn bao giờ hết. Bạn không cần lo lắng về Dynamic IP hay mở port rườm rà nữa.

Tuy nhiên, public dịch vụ ra internet luôn đi kèm rủi ro. Ở bài sau, chúng ta sẽ học cách cấu hình Access Policy để chỉ cho phép Email của chính bạn mới được quyền truy cập vào các đường dẫn này.


👉 Xem lại phần 1: Cài đặt Portainer quản lý Docker

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *