Là một người “nhập môn” Tailscale khá muộn (có lẽ là rất muộn), tôi thực sự bị ấn tượng bởi khả năng tạo mạng ảo mạnh mẽ mà nó mang lại. Trước đây, tôi đã sử dụng nhiều nhà cung cấp VPN truyền thống khác nhau. Hơn nữa, cho đến gần đây, tôi không có nhu cầu truy cập “home lab” (mạng thiết bị tại nhà cho mục đích thử nghiệm/học tập) từ xa vì đơn giản là tôi chưa xây dựng một home lab nào cả.
Giờ đây, mọi thứ đã thay đổi. Câu hỏi không còn là làm thế nào để cài đặt Tailscale, mà là “có bao nhiêu thiết bị của tôi chưa được kết nối vào mạng ảo này?”. Tôi có thể hiểu phần lớn về mạng, DNS và tên miền, cũng như cách chúng liên kết với nhau để tạo ra Internet. Nhưng điều đó không có nghĩa là tôi thích thú với việc cấu hình chúng, đặc biệt là “vũ điệu” phức tạp khi phải thay đổi cài đặt ở nhiều nơi và đảm bảo từng “octet” (phần trong địa chỉ IP) nằm đúng vị trí.
Đừng hiểu lầm, tôi yêu thích việc học hỏi và cảm giác mọi thứ hoạt động trơn tru sau (đôi khi) hàng giờ bực bội. Nhưng tôi còn nhiều ưu tiên khác. Home lab của tôi không thể tự vận hành, và càng dành nhiều thời gian cho việc cấu hình mạng, tôi càng ít thời gian cho các thử nghiệm thú vị. Đó là lúc Tailscale phát huy tác dụng, và cụ thể hơn là Tailscale Funnel.
Là một phần nội tại của tính năng MagicDNS trong Tailscale, Funnel cho phép tôi kiểm tra các dịch vụ self-hosted thông qua một URL công khai mà không cần mất công thiết lập các bản ghi tên miền hoặc bất kỳ thứ gì liên quan đến mạng mà tôi không muốn làm. Nhờ đó, tôi có thể tập trung vào dịch vụ và làm cho nó hoạt động. Funnel thật tuyệt vời, và điều tuyệt vời nhất là chúng không tốn nhiều thời gian để sử dụng.
Một máy tính hiển thị giao diện Tailscale kết nối tới Raspberry Pi trong môi trường home lab.
5 Lý do khiến Tailscale Funnel trở nên hữu ích
Tôi đã thử rất nhiều cách khác nhau để truy cập các dịch vụ đang chạy trong home lab của mình từ bên ngoài mạng gia đình. Hầu hết đều là các giải pháp VPN (khiến thiết bị của tôi hoạt động như thể nó đang ở nhà), reverse proxy (để xử lý việc truyền các gói dữ liệu qua thiết bị mạng của tôi), hoặc sự kết hợp của cả hai. Một số thì phức tạp khi thiết lập, số khác thì đỡ hơn, nhưng tất cả đều yêu cầu các bước bổ sung để có thể hoạt động.
Tailscale Funnel thì khác. Cài đặt Tailscale rất nhanh chóng, và thiết lập một Funnel để lộ một ứng dụng self-hosted ra ngoài chỉ đơn giản như một dòng lệnh duy nhất trong cửa sổ terminal.
tailscale funnel [port]
Chỉ cần vậy là đủ để kết nối cổng dịch vụ nội bộ với cổng bên ngoài, tạo một bản ghi DNS liên kết và cung cấp một URL Tailnet để dễ dàng truy cập. Có thể mất vài phút để các bản ghi DNS được lan truyền, nhưng đó là tốc độ tối đa mà các máy chủ tên miền có thể đạt được. Không cần chỉnh sửa file YAML, không cần nhớ (hoặc gõ sai!) cú pháp hay ánh xạ cổng, chỉ một lệnh duy nhất. Lệnh này cũng có thể sử dụng các cổng khác nhau cho nội bộ và bên ngoài nếu bạn cần.
Giao diện dòng lệnh terminal hiển thị các lệnh, minh họa việc sử dụng Tailscale Funnel bằng một dòng lệnh đơn giản.
4. Funnel rất bảo mật
Mã hóa đầu cuối là yếu tố cốt lõi
Kết nối đến các ứng dụng self-hosted của tôi khá dễ dàng khi tôi ở nhà, ngoại trừ việc phải đối phó với các chứng chỉ tự ký (self-signed certificates) cho việc sử dụng HTTPS. Tuy nhiên, những chứng chỉ tự ký này có thể gây rắc rối khi cố gắng đưa các ứng dụng đó ra bên ngoài nhà, ví dụ như thông qua một reverse proxy được bảo mật đúng cách. Không phải là không thể, nhưng nó yêu cầu thêm vài bước để xác minh chứng chỉ đáng tin cậy, và đôi khi còn tốn kém chi phí.
Nhưng ngay khi một Tailscale Funnel được khởi tạo, Tailscale sẽ cung cấp cho bạn một tên miền con (subdomain) DNS thực. Điều này có nghĩa là bạn nhận được một chứng chỉ được cung cấp từ cấp độ tin cậy của Tailscale và do đó được trình duyệt web của bạn tự động tin cậy. Đó vẫn là chứng chỉ được cấp bởi Let’s Encrypt (thường là chứng chỉ được tin cậy công khai, không phải tự ký như bài gốc có vẻ gây nhầm lẫn nhỏ ở đây), nhưng bạn không cần phải có tên miền riêng, thiết lập một VPS, và trỏ nhà đăng ký tên miền của bạn đến đó để có được chứng chỉ đáng tin cậy; nó chỉ đơn giản là hoạt động. Xin nhắc lại, tôi ghét phải đối phó với sự phiền phức của DNS, và có thứ gì đó làm tất cả những điều đó một cách liền mạch cho tôi thật kỳ diệu.
Khi URL Funnel được sử dụng, nó thiết lập một TCP proxy giữa ứng dụng liên quan và thiết bị mà URL đó được nhấp vào. Kết nối này được mã hóa hoàn toàn và không bao giờ giải mã lưu lượng truy cập giữa các thiết bị công cộng và thiết bị của bạn. Phần duy nhất của liên kết không được mã hóa là giữa máy chủ Tailscale trong nhà tôi và ứng dụng tôi đang truy cập, giống hệt như khi tôi đang ở nhà.
Hệ thống cáp mạng phức tạp trong tủ rack, biểu trưng cho sự phức tạp của cấu hình mạng truyền thống.
Các cổng kết nối phía sau của một máy chủ, nhấn mạnh tầm quan trọng của mã hóa đầu cuối trong các hệ thống này.
3. Không cần Port Forwarding
Càng ít cổng mở từ home lab ra ngoài càng tốt
Tôi luôn cảnh giác về việc để các cổng mở ra Internet, và bất kỳ ai trong thời đại này cũng nên như vậy. Việc thiết lập các bản quét IP tự động để xác định các cổng mở cho các cuộc tấn công sau này là quá dễ dàng, và việc bảo mật chúng đúng cách là một thách thức đáng kể. Ngay cả khi bạn có thể cấu hình port forwarding, các nhà cung cấp dịch vụ Internet (ISP) thường hạn chế khả năng này, đặc biệt là trên các cổng cụ thể (cổng 25 cho SMTP là cổng thường bị chặn). Đó là lý do tại sao tôi thường không bận tâm và sử dụng thứ gì đó như Pangolin (một công cụ khác tương tự Tailscale) sử dụng các phương pháp xuyên NAT (NAT traversal) để tránh cần bất kỳ cổng mở hoặc cấu hình tường lửa nào.
Về mặt kỹ thuật, Tailscale Funnel có mở một cổng, nhưng chỉ tới mạng Tailnet của bạn, chứ không phải Internet công cộng có thể quét được. Với một URL được bảo mật bằng HTTPS để truy cập các ứng dụng của mình, tôi không phải lo lắng về các cuộc tấn công tự động hoặc bất kỳ vấn đề nào khác mà việc có một cổng mở vĩnh viễn trên tường lửa của tôi có thể gây ra. Tôi thậm chí không phải lo lắng về việc thay đổi các bản ghi DNS. Hơn nữa, tôi không phải thực hiện port forwarding, điều mà tôi rất vui mừng mỗi khi thiết lập một Funnel.
Tủ mạng trong môi trường gia đình hoặc văn phòng nhỏ, liên quan đến việc quản lý cổng mạng và bảo mật.
Bộ định tuyến (router) minh họa thiết bị quản lý mạng, nơi thường cấu hình port forwarding.
2. Các trường hợp sử dụng sáng tạo
Nếu bạn có thể biến một dịch vụ thành nhiều?
Funnel rất mạnh mẽ như một reverse proxy đơn giản, cho phép một dịch vụ self-hosted được dễ dàng sử dụng từ một URL có thể chia sẻ được. Bạn có thể sử dụng nhiều Funnel để truy cập mọi thứ trong home lab của mình, nhưng có một cách thanh lịch hơn đã ở ngay trước mắt tôi bấy lâu nay. Lệnh funnel cũng hỗ trợ TCP forwarding, và điều đó có nghĩa là bạn có thể thiết lập nó để chuyển tiếp tới Caddy, hoặc bất kỳ reverse proxy cục bộ nào khác.
Ưu điểm của việc này là phần thường gây phiền toái nhất trong việc bảo mật reverse proxy không bao giờ rời khỏi mạng nội bộ của bạn, do đó bề mặt tấn công giảm đi đáng kể. Lối vào duy nhất là thông qua một URL Tailscale an toàn, vì vậy việc có một nhà cung cấp xác thực (authentication provider) trên reverse proxy của bạn sẽ chặn bất kỳ ai bạn không muốn truy cập. Điều này cũng có nghĩa là bạn có thể truy cập các ứng dụng, dịch vụ, thư mục và các tài nguyên khác có thể không nằm trong mạng Tailnet của bạn mà không cần cài đặt ứng dụng Tailnet trên từng thiết bị đó.
Một bộ chuyển mạch (switch) mạng, biểu trưng cho khả năng kết nối nhiều dịch vụ trong mạng nội bộ.
Bộ định tuyến mạng trong không gian gia đình, liên quan đến việc định tuyến internet và truy cập dịch vụ.
1. Truy cập dễ dàng cho người dùng không dùng Tailscale
Gia đình và bạn bè của bạn sẽ cảm ơn bạn
Cho đến nay, mọi tính năng mà tôi yêu thích về Tailscale Funnel đều mang lại lợi ích cá nhân. Nhưng vì Funnel rất tuyệt vời để chia sẻ các dịch vụ self-hosted của bạn với bạn bè và thành viên gia đình đáng tin cậy, có một tính năng nội tại mang lại lợi ích lớn nhất cho họ. Tất cả chúng ta có lẽ đã từng trải qua sự phản đối khi cố gắng chuyển sang các giải pháp self-hosted thay thế, vì đôi khi chúng có thể khó kết nối hơn so với các dịch vụ đăng ký trả phí mà chúng đang thay thế.
Không ai muốn gõ địa chỉ IP hoặc thông tin kết nối SSH. Điều đó tốn nhiều công sức hơn là sử dụng tính năng đăng nhập một lần (SSO) để truy cập dịch vụ. Tuy nhiên, tất cả họ đều có thể, và sẽ, nhấp vào một liên kết (ngay cả khi chúng ta cố gắng ngăn họ làm điều đó!), biến URL Tailscale Funnel trở thành một phần vô giá trong chiến lược của bạn. Không phải ai cũng muốn tìm hiểu cách mọi thứ hoạt động, nhưng nếu rào cản gia nhập được loại bỏ, họ sẽ sẵn lòng lắng nghe lý do tại sao đó là lựa chọn phù hợp hơn cho nhu cầu của họ.
Giao diện web của Tailscale, cho phép quản lý các thiết bị và cấu hình Funnel.
Tôi có thể sẽ chuyển sang sử dụng Tailscale Funnel vĩnh viễn để tiết kiệm thời gian đau đầu với DNS và Proxy
Tôi đã thấy ánh sáng ở cuối “đường hầm” (funnel), và Tailscale sắp trở thành một trong những thứ đầu tiên tôi cài đặt bất cứ khi nào tôi đưa một dịch vụ home lab hoặc thử nghiệm mới vào hoạt động. Tôi đã luôn nói rằng hãy tập trung vào những gì bạn yêu thích trong home lab của mình, và trả tiền hoặc thuê ngoài những thứ bạn không thích. Và bạn biết tôi không thích điều gì không? Thiết lập các bản ghi DNS, port forwarding, reverse proxy, và mọi thứ cần thiết khác để sử dụng các công cụ self-hosted bên ngoài mạng của tôi mà vẫn giữ được bảo mật. Tailscale Funnel làm tất cả những công việc khó khăn đó cho tôi, cho phép tôi tập trung vào việc thử các công cụ và dịch vụ mới, đó thực sự là điều tôi yêu thích khi làm home lab.
Tài liệu tham khảo
- 5 tính năng Tailscale có thể bạn chưa biết
- 7 công cụ dòng lệnh giúp tự động hóa tác vụ hàng ngày trên mọi hệ điều hành
- Self-hosting không đáng sợ – Sử dụng các công cụ này mà không cần kiến thức phát triển
- Reverse proxy bạn nên dùng cho mạng gia đình
- 4 lý do nhà cung cấp dịch vụ đám mây của bạn nên sử dụng mã hóa đầu cuối
- Port forwarding là gì? Tại sao tôi cần làm điều đó?
- Reverse proxy Caddy tích hợp với OPNsense
- Đã chuyển từ Tailscale sang giải pháp tự host hoàn toàn NetBird
- Định tuyến internet là gì và tại sao nó quan trọng?
- Tôi dùng Tailscale để truy cập dịch vụ tự host từ xa – Đây là cách thực hiện