VPS

Cloudflare Tunnel: đưa web trên VPS ra net không mở port

Thanh Nguyễn Cập nhật Đăng 8 phút đọc 2 khối lệnh

Cloudflare Tunnel: đưa web trên VPS ra net không mở port
Mục lục bài viết
  1. Cơ chế: gọi điện ra thay vì mở cửa chờ
  2. Cài đặt 10 phút
  3. Bốn cảnh dùng ngọt nhất
  4. Ranh giới và lưu ý thật thà
  5. Ranh giới: khi nào dùng và khi nào không
  6. Kiểm sau khi dựng
  7. Ba điều thật thà cần biết
  8. Câu hỏi thường gặp
  9. Bài viết liên quan

Trả lời nhanh: Cloudflare Tunnel đảo ngược cách web ra internet: thay vì mở port 80/443 chờ thiên hạ gõ cửa, VPS của bạn chạy cloudflared: tiến trình tự kết nối chiều đi lên mạng Cloudflare và giữ đường ống đó; khách truy cập tên miền → Cloudflare → chui qua ống về dịch vụ nội bộ. Kết quả: không mở port nào, IP thật được giấu, HTTPS và chống DDoS có sẵn từ Cloudflare. Miễn phí, cài 10 phút, vũ khí yêu thích của dân self-host để phơi n8n, demo, admin panel ra ngoài một cách kín đáo.

Nỗi lo lớn nhất khi phơi dịch vụ tự host ra internet: IP trần trước bot quét, port mở là bề mặt tấn công, lại còn vụ chứng chỉ. Cloudflare Tunnel, công cụ có lượng tìm kiếm tăng gấp 13 lần ở VN, giải cả cụm bằng một cú lộn ngược chiều kết nối. Bài này: cơ chế, cài đặt từng bước, và ranh giới khi nào nên dùng nó thay vì mở port truyền thống.

Cơ chế: gọi điện ra thay vì mở cửa chờ

Truyền thống: mở port + trỏ DNS vào IP → cả internet biết địa chỉ nhà bạn, bot đến quét mỗi ngày. Tunnel: cloudflared trên VPS chủ động "gọi lên tổng đài" Cloudflare và giữ máy, mọi khách đi qua tổng đài rồi theo cuộc gọi có sẵn về nhà. Firewall VPS đóng kín hoàn toàn (chỉ chừa SSH cho chính bạn), nhưng dịch vụ vẫn phục vụ thế giới. Kèm quà: request đi qua hạ tầng Cloudflare nên hưởng luôn HTTPS ở rìa, cache tĩnh, và tấm khiên DDoS nổi tiếng của họ.

Cài đặt 10 phút

TerminalCài đặt 10 phútbash
# 1) cai cloudflared (Ubuntu)curl -L https://pkg.cloudflare.com/cloudflared-stable-linux-amd64.deb -o cf.deb && sudo dpkg -i cf.deb# 2) dang nhap (mo link tren trinh duyet may ca nhan, chon ten mien)cloudflared tunnel login# 3) tao tunnel va gan ten miencloudflared tunnel create vps-chinhcloudflared tunnel route dns vps-chinh n8n.ten-mien.vn# 4) file cau hinh ~/.cloudflared/config.ymltunnel: vps-chinhcredentials-file: /home/ban/.cloudflared/.jsoningress:  - hostname: n8n.ten-mien.vn    service: http://127.0.0.1:5678  - hostname: demo.ten-mien.vn    service: http://127.0.0.1:3000  - service: http_status:404# 5) chay nhu dich vu he thongsudo cloudflared service install && sudo systemctl start cloudflared

Khối ingress đọc như bảng phân phối: tên miền nào → dịch vụ nội bộ nào; dòng cuối là phễu bắt phần còn lại. Thêm dịch vụ mới = thêm 2 dòng + một lệnh route dns.

Bốn cảnh dùng ngọt nhất

  • Demo cho khách xem: app đang dở trên VPS/máy dev → một tên miền đẹp có HTTPS trong 2 phút, xem xong gỡ, không đụng cấu hình mạng.
  • n8n và đồ tự host: webhook cần HTTPS công khai nhưng giao diện admin không nên phơi IP, tunnel cho cả hai (kết hợp Cloudflare Access khóa admin bằng email OTP: lớp bảo vệ trước cả trang đăng nhập).
  • Che chở origin web chính: site sau Cloudflare nhưng IP gốc từng lộ → kẻ tấn công đánh thẳng IP. Tunnel bịt hẳn đường đó: origin không còn port mở để đánh.
  • Server sau NAT: máy trong mạng công ty/nhà không có IP công khai vẫn phục vụ internet, điều mở port truyền thống bó tay.

Ranh giới và lưu ý thật thà

  • Phải dùng DNS Cloudflare cho tên miền, rào cản duy nhất đáng kể; chuyển NS mất một buổi và đáng làm vì cả hệ tính năng miễn phí đi kèm.
  • Traffic đi vòng qua Cloudflare: khách Việt ↔ điểm Cloudflare gần ↔ VPS Việt, thêm vài ms so với đánh thẳng. Web thường không nhận ra; dịch vụ nhạy độ trễ tuyệt đối (game server, VoIP) không hợp mô hình HTTP tunnel.
  • Điểm phụ thuộc mới: Cloudflare trục trặc là đường vào trục trặc, hiếm, nhưng dịch vụ tối quan trọng nên có đường dự phòng (mở port có kiểm soát) trong túi.
  • SSH qua tunnel được không? Được (chế độ TCP + cloudflared ở máy khách), hữu ích khi muốn đóng nốt port SSH, đổi lại cài thêm phần mềm ở phía người kết nối.

Ranh giới: khi nào dùng và khi nào không

Tình huốngDùng đường hầm được khôngGhi chú
Trang web, ứng dụng web bình thườngĐược, rất hợpĐây là công dụng chính
Bảng điều khiển nội bộ cần chia sẻ cho vài ngườiĐược, kèm lớp xác thực đứng trướcCách an toàn hơn hẳn việc mở cổng
Máy chủ trò chơi hoặc dịch vụ không chạy trên giao thức webThường khôngĐường hầm thiết kế cho lưu lượng web
Truyền tệp rất lớn liên tụcCân nhắcCó giới hạn kích thước và điều khoản sử dụng cần đọc
Cần địa chỉ mạng thật của người truy cậpĐược, nhưng phải đọc từ tiêu đềỨng dụng thấy địa chỉ của lớp trung gian, không phải của khách
Muốn hoàn toàn không phụ thuộc bên thứ baKhôngToàn bộ lưu lượng đi qua hạ tầng của nhà cung cấp đường hầm

Kiểm sau khi dựng

TerminalKiểm sau khi dựngbash
# 1. Duong ham dang chay va da noi duoc chuasystemctl status cloudflaredcloudflared tunnel listcloudflared tunnel info TEN_DUONG_HAM # 2. Xac nhan may chu KHONG con mo cong ra ngoaiss -ltnp# chi nen thay dich vu lang nghe tren 127.0.0.1, khong phai 0.0.0.0 # 3. Kiem tuong lua da dong het cong webufw status verbose # 4. Thu tu ben ngoaicurl -sI https://tenmien.vn | head -5

Lệnh thứ hai là lệnh quan trọng nhất và hay bị bỏ qua: rất nhiều người dựng đường hầm nhưng quên đóng cổng cũ, nên máy chủ vẫn phơi ra internet và toàn bộ lợi ích bảo mật biến mất.

Ba điều thật thà cần biết

  • Bạn đổi một sự phụ thuộc lấy một sự phụ thuộc khác. Không mở cổng, nhưng phụ thuộc vào dịch vụ đường hầm. Dịch vụ đó gặp sự cố thì trang của bạn không truy cập được.
  • Toàn bộ lưu lượng đi qua hạ tầng của bên thứ ba. Với dữ liệu nhạy cảm, đây là điều cần cân nhắc và ghi vào hồ sơ tuân thủ.
  • Nó không thay thế việc vá lỗ hổng ứng dụng. Đường hầm chặn việc dò cổng, không chặn được lỗ hổng trong chính ứng dụng của bạn.

Với dịch vụ chỉ dành cho nội bộ, một phương án đáng cân nhắc song song là mạng riêng ảo giữa các thiết bị, xem bài về mạng riêng nối mọi thiết bị.

Câu hỏi thường gặp

Cloudflare Tunnel có thật sự miễn phí không?

Có, tunnel, HTTPS, DDoS cơ bản nằm trong gói free của Cloudflare. Trả phí chỉ khi cần các tầng doanh nghiệp (Access nhiều người dùng nâng cao, Load Balancing...).

Tunnel với ngrok khác gì nhau?

Cùng ý tưởng; khác định vị: ngrok mạnh về phiên tạm thời cho dev (URL ngẫu nhiên, bật tắt nhanh), Tunnel mạnh về chạy lâu dài trên tên miền của chính bạn, miễn phí không giới hạn giờ. Demo 15 phút: ngrok tiện; dịch vụ sống hàng tháng: Tunnel.

Đang dùng Caddy mở port truyền thống, có nên đổi sang Tunnel?

Không bắt buộc, web công khai bình thường chạy Caddy + port là kiến trúc chuẩn và đơn giản. Tunnel thắng ở các cảnh đặc thù: giấu IP, dịch vụ nội bộ, sau NAT, demo. Nhiều người dùng cả hai: web chính đi Caddy, đồ admin/demo đi Tunnel.

Tunnel có che được nguồn gốc VPS đặt ở đâu không?

Khách chỉ thấy Cloudflare, không thấy IP VPS, đúng. Nhưng độ trễ vật lý vẫn theo vị trí máy thật: VPS tại Việt Nam vẫn là lợi thế tốc độ cho khách Việt, tunnel hay không.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.