0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng Dẫn Sử Dụng Argo Tunnel (Cloudflare Tunnel) để Đưa Ứng Dụng lên Internet

Đăng vào 3 ngày trước

• 5 phút đọc

Mở Đầu

Khi bạn cần cung cấp dịch vụ của mình lên Internet để khách hàng hoặc đối tác có thể tiếp cận, bạn thường gặp khó khăn vì máy chủ không có IP WAN hoặc không có cách nào để đưa dịch vụ ra ngoài. Trước đây, nhiều người thường sử dụng ngrok, nhưng hiện tại dịch vụ này đã bắt đầu thu phí và hạn chế sử dụng trong phiên bản miễn phí, điều này gây khó khăn cho người dùng. Đồng thời, ngrok có hiệu suất không cao do chỉ có máy chủ ở Mỹ và EU, khiến quá trình lai tạo dịch vụ không phù hợp cho môi trường sản xuất. Trong bài viết này, tôi sẽ giới thiệu đến bạn Argo Tunnel, một dịch vụ được cung cấp bởi Cloudflare, với nhiều tính năng vượt trội, hứa hẹn có thể sử dụng trong cả môi trường sản xuất!

Giới Thiệu Argo Tunnel (Cloudflare Tunnel)

Cloudflare Tunnel cung cấp cho bạn một phương pháp an toàn để kết nối các tài nguyên của bạn với Cloudflare mà không cần IP WAN. Với Tunnel, bạn không gửi lưu lượng truy cập đến một địa chỉ IP bên ngoài mà thay vào đó, một daemon nhẹ tên là 'cloudflared' trên máy chủ của bạn sẽ tạo kết nối với mạng toàn cầu của Cloudflare. Cloudflare Tunnel có khả năng kết nối an toàn với các dịch vụ HTTP, SSH, RDP và nhiều giao thức khác, giúp bảo vệ các dịch vụ của bạn khỏi những cuộc tấn công.

Nguyên Tắc Hoạt Động

Cloudflared thiết lập các kết nối ra ngoài (tunnels) giữa dịch vụ của bạn và mạng của Cloudflare. Những tunnel này là các đối tượng cố định, hỗ trợ định tuyến lưu lượng đến các bản ghi DNS được tạo tự động mà tôi sẽ hướng dẫn chi tiết dưới đây. Trong một tunnel, bạn có thể chạy nhiều tiến trình 'cloudflared' (các connector). Những tiến trình này sẽ kết nối đến mạng Cloudflare và chuyển lưu lượng đến datacenter gần nhất để tối ưu hiệu suất. Đây chính là ưu điểm nổi bật hơn so với ngrok!

Hướng Dẫn Expose HTTP Service

Tiếp theo, tôi sẽ hướng dẫn bạn cách sử dụng cloudflared để đưa ứng dụng HTTP của bạn lên Internet. Để sử dụng Cloudflare Tunnel, bạn có hai lựa chọn: sử dụng WARP CLI hoặc Cloudflared. Tuy nhiên, do độ tương thích của WARP CLI với các hệ điều hành không cao nên chúng ta sẽ tập trung vào việc sử dụng cloudflared.

Cài Đặt Cloudflared

Cài Đặt trên Linux (Ubuntu)

bash Copy
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && 
sudo dpkg -i cloudflared.deb

Cài Đặt trên MacOS

bash Copy
brew install cloudflared

Cài Đặt trên Windows

Tải xuống tệp cài đặt từ đây và chạy.

Cho Mục Đích Thử Nghiệm

Để nhanh chóng đưa dịch vụ của bạn ra ngoài Internet phục vụ kiểm thử hoặc chia sẻ, bạn có thể sử dụng lệnh sau:

bash Copy
cloudflared tunnel --url localhost:8000

Khi chạy lệnh trên, quá trình cloudflared sẽ tạo một tunnel đến Cloudflare và tạo một domain ngẫu nhiên để expose dịch vụ đang chạy tại localhost:8000. Bạn có thể truy cập ứng dụng của mình thông qua domain được hiển thị.

Cho Môi Trường Sản Xuất

Để sử dụng trong môi trường sản xuất với độ ổn định cao hơn, tôi khuyên bạn nên mua một domain riêng và chuyển nameserver về Cloudflare. Tôi sẽ không hướng dẫn chi tiết cách mua domain ở đây, mà sẽ giả định rằng bạn đã có domain và tài khoản trên Cloudflare.

Bước 1: Truy cập vào trang quản lý của Cloudflare, vào mục Zero Trust.

Bước 2: Chọn mục Networks => Tunnel, sau đó chọn Add a Tunnel để tạo một tunnel mới.

Bước 3: Chọn Cloudflared làm công cụ kết nối, đặt tên cho tunnel và cài đặt connector (cloudflared) trên máy cục bộ. Nếu bạn đã cài đặt Cloudflared ở bước trên, chỉ cần chạy lệnh cloudflared service install ey.... để xác thực với tunnel vừa tạo.

Nếu kết nối thành công, bạn sẽ thấy connector hiển thị.

Bước 4: Xác định định tuyến cho tunnel để chọn dịch vụ mà bạn muốn expose.

Ví dụ, nếu bạn đang chạy một dịch vụ HTTP ở cổng 8000, bạn có thể expose thông qua domain web.hoangviet.site/.

Với mỗi tunnel, bạn có thể expose nhiều dịch vụ cùng lúc. Sau khi cấu hình hoàn tất, bạn có thể lưu tunnel và kiểm tra DNS record trên domain đã sử dụng, bạn sẽ thấy một bản ghi CNAME tương ứng với tunnel. Bạn có thể truy cập dịch vụ thông qua domain đã cấu hình.

Ngoài ra, Cloudflare Tunnel còn nhiều tính năng hấp dẫn khác:

  • Expose nhiều giao thức khác nhau như SSH, RDP, SMB...
  • Cấu hình các thông số như timeout, quản lý HTTP header, kiểm soát truy cập...

Tìm hiểu thêm tại trang chủ của Cloudflare: đây.

Các Giới Hạn

  1. Cloudflare Tunnel chỉ bảo đảm an toàn HTTPS cho các yêu cầu đi vào thông qua tunnel, không bảo vệ lưu lượng từ dịch vụ ra API bên ngoài hay Database.
  2. Một số dịch vụ sử dụng giao thức TCP hoặc UDP có thể không expose được qua Cloudflare Tunnel (ví dụ: thử nghiệm với MySQL vẫn không thành công).
  3. Mỗi tunnel chỉ hỗ trợ cấu hình một server origin duy nhất. Để sử dụng nhiều server origin, bạn cần tạo nhiều tunnel.
  4. Độ trễ của tunnel có thể cao trong một số trường hợp do quá trình routing qua nhiều điểm trong mạng Cloudflare.
  5. Nếu mạng Cloudflare bị tấn công, ứng dụng của bạn có thể bị ảnh hưởng.

Kết Luận

Hy vọng bài viết này đã cung cấp cho bạn những thông tin hữu ích trong công việc. Chúc bạn có một ngày làm việc hiệu quả!

Nếu bạn thấy bài viết này hữu ích, hãy Upvote và theo dõi tôi để cập nhật thêm nhiều nội dung về DevOps, hệ thống và các kỹ năng mềm khác nhé! Cảm ơn bạn rất nhiều!

Quảng Cáo

Nếu bạn gặp khó khăn trong vấn đề chuyên môn hoặc cần hỗ trợ về hệ thống, DevOps tools, tôi sẵn sàng giúp đỡ. Hãy liên hệ với tôi để thảo luận thêm: hoangviet.io.vn.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào