Tôi là người chuyển đổi (có lẽ là rất muộn) sang Tailscale và các sắp xếp mạng ảo mạnh mẽ mà nó hỗ trợ. Một phần là vì tôi đã sử dụng nhiều nhà cung cấp VPN truyền thống, và cũng vì cho đến gần đây, tôi không có nhu cầu truy cập home lab từ xa do chưa có home lab nào để truy cập.
À, thời thế đang thay đổi, và giờ đây không còn là câu hỏi làm thế nào để cài Tailscale, mà là “tôi đã bỏ sót bao nhiêu thiết bị?”. Thấy đấy, tôi có thể tạm hiểu về mạng máy tính, DNS và domain, cũng như cách chúng kết nối lại với nhau để tạo thành thứ mà chúng ta gọi là internet. Nhưng điều đó không có nghĩa là tôi thực sự thích thú với việc cấu hình chúng, chẳng hạn như vũ điệu phức tạp của việc thay đổi cài đặt ở nhiều nơi và đảm bảo từng octet 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 sau (đôi khi) hàng giờ thất vọng, nhưng tôi cũng có những ưu tiên khác. Home lab của tôi không tự chạy, và càng dành nhiều thời gian cho mạng, tôi càng có ít thời gian để thực hiện các thử nghiệm thú vị. Đó là lúc Tailscale phát huy tác dụng, và đặc biệt hơn là Tailscale Funnel.
Tính năng này, là một phần nội tại của MagicDNS trong Tailscale, cho phép tôi kiểm tra các dịch vụ tự host (self-hosted services) từ một URL công khai mà không cần thiết lập các bản ghi domain hay bất kỳ thứ gì liên quan đến mạng mà tôi không muốn làm, để tôi có thể tập trung vào dịch vụ và khiến nó hoạt động. Chúng thật tuyệt vời, và điều tuyệt nhất là không mất nhiều thời gian để sử dụng.
Thiết bị Raspberry Pi chạy Tailscale kết nối với máy tính
Chúng thật đơn giản
Một câu lệnh duy nhất cho phép tôi truy cập
Tôi đã sử dụng hàng loạt phương pháp 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, và 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à, các reverse proxy để xử lý việc truyền 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ố phức tạp để cài đặt, số khác thì ít hơn, nhưng tất cả đều liên quan đến các bước bổ sung để chạy được.
Tailscale Funnel thì không. Cài đặt Tailscale rất nhanh chóng, và thiết lập một Funnel để công khai một ứng dụng tự host đơn giản chỉ là một dòng lệnh duy nhất trong cửa sổ terminal.
tailscale funnel [port]
Chỉ cần vậy là đủ để cổng dịch vụ được kết nối với cổng bên ngoài, tạo một bản ghi DNS liên quan và một URL tailnet để dễ dàng truy cập. Có thể mất vài phút để bản ghi DNS được lan truyền, nhưng đó là tốc độ tối đa mà các nameserver 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 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 muốn.
Giao diện dòng lệnh (terminal) trên Windows 11, nơi nhập lệnh Tailscale Funnel
Chúng an toàn
Mã hóa đầu cuối là chìa khóa
Tủ mạng trong trung tâm dữ liệu hoặc phòng lab tại nhà
Kết nối với các ứng dụng tự host của tôi thật 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ý đó có thể là vấn đề khi cố gắng cung cấp các ứng dụng đó ra ngoài nhà tôi, chẳng hạn 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ó đòi hỏi thêm vài bước để xác minh chứng chỉ đáng tin cậy, và cả một khoản chi phí tài chính.
Nhưng ngay khi một Tailscale Funnel được khởi tạo, Tailscale cung cấp cho bạn một subdomain DNS thực, nghĩa là bạn nhận được một chứng chỉ được 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ỉ Let’s Encrypt tự ký, nhưng bạn không phải mua domain của mình, thiết lập một VPS, và trỏ trình quản lý domain của bạn đến đó để nhận chứng chỉ đáng tin cậy; nó chỉ đơn giản là hoạt động. Lặp lại một lần nữa, tôi ghét phải xử lý những phiền toái của DNS, và có một thứ làm tất cả cho tôi một cách liền mạch gần như là phép màu.
Khi URL Funnel được sử dụng, nó thiết lập một proxy TCP giữa ứng dụng liên quan và thiết bị mà URL được nhấp vào. Nó đượ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 như khi tôi đang ở nhà.
Mặt sau của máy chủ (server) Lenovo ThinkServer với các cổng kết nối
Không cần Port Forwarding
Càng ít cổng mở từ home lab của tôi càng tốt
Chi tiết cáp mạng và thiết bị bên trong tủ mạng gia đình
Tôi luôn cảnh giác về việc để các cổng mở ra internet, và mọi người cũng nên như vậy trong thời đại nà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 việc thăm dò trong tương lai là quá dễ dàng, và bảo mật chúng đúng cách là một thách thức đáng kể. Nếu bạn có thể port forward ngay từ đầu, các ISP thường giới hạn khả năng này, đặc biệt là trên các cổng cụ thể (cổng 25 cho SMTP rất phổ biến 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 sử dụng các phương thức NAT traversal để tránh cần bất kỳ cổng mở hoặc cấu hình tường lửa nào.
Tailscale Funnels về mặt kỹ thuật có mở một cổng, nhưng chỉ đến tailnet của bạn, chứ không phải internet công khai 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 tôi, 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 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ỗi khi thiết lập một Funnel.
Router GL.iNet chạy hệ điều hành OpenWrt, thiết bị mạng gia đình
Các trường hợp sử dụng sáng tạo
Điều gì sẽ xảy ra nếu bạn có thể biến một dịch vụ thành nhiều dịch vụ?
Thiết bị switch mạng có quản lý (managed switch) Zyxel
Funnels rất mạnh mẽ như một reverse proxy đơn giản, cho phép một dịch vụ tự host duy nhất được sử dụng dễ dàng từ một URL có thể chia sẻ. Bạn có thể sử dụng nhiều Funnels để truy cập mọi thứ trong home lab của mình, nhưng có một cách tao nhã 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 đến Caddy, hoặc bất kỳ reverse proxy nào khác được host cục bộ.
Cái hay của điều này là phần thường gây khó chịu trong việc bảo mật của reverse proxy không bao giờ rời mạng cục bộ của bạn, do đó bề mặt tấn công giảm đáng kể. Điểm truy cập duy nhất đến thông qua một URL Tailscale an toàn, vì vậy việc có nhà cung cấp xác thực trên reverse proxy của bạn sẽ chặn bất kỳ ai bạn không muốn. Điều đó 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 trên tailnet của bạn, mà không cần cài đặt ứng dụng client Tailscale trên từng thiết bị đó.
Bộ định tuyến (router) kết nối internet trong môi trường gia đình
Dễ dàng truy cập cho người 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 tôi yêu thích ở Tailscale Funnel đều mang lại lợi ích cá nhân. Nhưng vì Funnels rất tuyệt vời để chia sẻ các dịch vụ tự host của bạn với bạn bè và 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ẽ đều từng gặp phải sự phản đối khi cố gắng chuyển sang các giải pháp tự host 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ý mà chúng đang thay thế.
Không ai muốn gõ địa chỉ IP hoặc chi tiết kết nối SSH. Nó tốn nhiều công sức hơn so với việc sử dụng SSO để truy cập dịch vụ. Tuy nhiên, họ 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 vậy), khiế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 bị loại bỏ, họ sẽ vui vẻ lắng nghe lý do tại sao đó là lựa chọn tốt hơn cho nhu cầu của họ.
Giao diện quản lý web của Tailscale hiển thị danh sách các thiết bị (nodes)
Tôi có thể chuyển sang sử dụng Tailscale Funnel vĩnh viễn để tránh những rắc rối về 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 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 gì không? Thiết lập bản ghi DNS, port forward, reverse proxy và mọi thứ cần thiết khác để sử dụng các công cụ tự host bên ngoài mạng của tôi mà vẫn an toàn. Tailscale Funnel làm tất cả 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, đó mới là điều tôi thực sự yêu thích ở home lab.