Tôi là một người mới (một số người có thể nói là rất muộn) chuyển sang sử dụng Tailscale và ấn tượng với những tiện ích mạng ảo mạnh mẽ mà nó mang lại. Một phần là vì tôi đã quen dùng các nhà cung cấp VPN truyền thống khác, và cũng vì trước đây tôi chưa thực sự cần truy cập Home Lab từ xa, đơn giản là vì tôi chưa có Home Lab.
Giờ đây mọi thứ đã thay đổi, và vấn đề không còn là làm thế nào để cài đặt Tailscale, mà là “liệu còn thiết bị nào của mình chưa cài đặt không?”. Bạn thấy đấy, tôi có thể tương đối hiểu về mạng máy tính, DNS, tên miền, và cách chúng kết nối lại với nhau để tạo nên thứ 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ư những bước phức tạp khi thay đổi cài đặt ở nhiều nơi và đảm bảo từng con số trong địa chỉ IP đều đúng vị trí.
Đừng hiểu lầm, tôi thích học hỏi và cái cảm giác thành công sau khi (đôi khi) vật lộn hàng giờ, nhưng tôi còn có những ưu tiên khác. Home Lab của tôi không tự chạy được, và càng dành nhiều thời gian cho mạng thì tôi càng ít thời gian để thực hiện những thử nghiệm thú vị khác. Đó là lúc Tailscale xuất hiện, và cụ thể hơn là tính năng Tailscale Funnel.
Là một phần quan trọng của tính năng MagicDNS trong Tailscale, Funnel cho phép tôi kiểm thử các dịch vụ tự host từ một URL công cộng mà không cần phải tự tay thiết lập bản ghi tên miền hay bất kỳ cấu hình mạng phức tạp nào mà tôi muốn tránh xa. Điều này giúp tôi tập trung vào bản thân dịch vụ và làm cho nó hoạt động. Funnel thực sự tuyệt vời, và điều tốt nhất là nó không tốn nhiều thời gian để sử dụng.
5. Chúng rất đơn giản
Chỉ với một lệnh duy nhất để truy cập
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 là các giải pháp VPN khiến thiết bị của tôi hoạt động như thể đang ở nhà, hoặc là reverse proxy để xử lý việc chuyển gói dữ liệu qua thiết bị mạng của tôi, hoặc là kết hợp cả hai. Một số thì phức tạp để thiết lập, số khác thì đơn giản hơn, nhưng tất cả đều yêu cầu các bước bổ sung để hoạt động.
Tailscale Funnel thì không như vậy. Cài đặt Tailscale rất nhanh chóng, và việc 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ỉ vậy thôi là đủ để kết nối cổng dịch vụ nội bộ với cổng ngoài, tạo một bản ghi DNS liên kết, và một URL trên mạng Tailscale (tailnet) để dễ dàng truy cập. Có thể mất vài phút để bản ghi DNS được cập nhật, nhưng điều đó nhanh nhất có thể theo tốc độ của các máy chủ tên miền. 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 mà thậm chí 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.
Máy tính hiển thị giao diện dòng lệnh PowerShell
4. Chúng an toàn
Mã hóa đầu cuối là yếu tố then chốt
Truy cập các ứng dụng tự host 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 lại là vấn đề khi cố gắng đưa các ứng dụng đó ra ngoài mạng gia đì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ó đòi hỏi 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 sau khi một Tailscale Funnel được khởi tạo, Tailscale sẽ cấp cho bạn một tên miền phụ (subdomain) DNS thực sự, điều này có nghĩa là bạn sẽ nhận được một chứng chỉ được cấp từ mức độ tin cậy của Tailscale và do đó được trình duyệt web của bạn tự động tin cậy. Nó vẫn là chứng chỉ Let’s Encrypt, nhưng bạn không phải mua tên miền, thiết lập một máy chủ VPS, và trỏ nhà cung cấp tên miền của bạn đến đó để có chứng chỉ đáng tin cậy; mọi thứ chỉ hoạt động. Lặp lại lần nữa, tôi ghét phải đối phó với những rắc rối của DNS, và có thứ gì đó tự động làm tất cả cho tôi một cách liền mạch thật gần như là phép thuật.
Khi URL của Funnel được sử dụng, nó thiết lập một proxy TCP giữa ứng dụng liên kết 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 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 mà tôi đang truy cập, giống hệt như khi tôi đang ở nhà vậy.
Tủ mạng với các cáp kết nối
3. Không cần Port Forwarding
Càng ít cổng mở ra từ Home Lab càng tốt
Tôi luôn cảnh giác về việc để các cổng mở ra internet công cộng, và bất kỳ ai cũng nên như vậy trong thời đại này. Rất dễ dàng để thiết lập các công cụ quét IP tự động để xác định các cổng đang mở cho việc thăm dò sau này, 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ể thiết lập port forwarding, các nhà cung cấp dịch vụ internet (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 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ỉ mở cho mạng Tailscale (tailnet) của bạn, chứ không phải internet công cộng có thể bị quét. 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 có thể phát sinh từ việc có một cổng mở vĩnh viễn trên tường lửa của mình. Tôi thậm chí còn 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 cần thực hiện port forwarding, và tôi mừng vì điều đó mỗi khi thiết lập một Funnel.
Router GL.iNet Slat AX1800 chạy OpenWrt
2. Trường hợp sử dụng sáng tạo
Điều gì nếu bạn có thể biến một dịch vụ thành nhiều?
Funnels rất mạnh mẽ như một reverse proxy đơn giản, cho phép dễ dàng sử dụng một dịch vụ tự host duy nhất 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 thanh lịch hơn mà tôi đã bỏ sót bấy lâu nay. Lệnh funnel
cũng hỗ trợ chuyển tiếp TCP (TCP forwarding), điều này 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 đang chạy trong mạng nội bộ của bạn.
Điểm tuyệt vời của cách này là phần thường khó bảo mật của 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ể. Điểm truy cập duy nhất chỉ đến qua một URL Tailscale bảo mật, vì vậy việc sử dụng 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 mong muốn. Nó 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 Tailscale của bạn, mà không cần cài đặt client Tailscale trên mỗi thiết bị đó.
Bộ chuyển mạch (switch) được quản lý Zyxel XGM1915
1. 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 cố hữu mang lại lợi ích lớn nhất cho họ. Chắc hẳn tất cả chúng ta đều đã trải qua sự phản kháng 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ụ trả phí mà chúng thay thế.
Không ai muốn gõ địa chỉ IP hoặc chi tiết kết nối SSH. Điều đó tốn nhiều công sức hơn việc sử dụng đăng nhập một lần (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, 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 kỹ thuật được loại bỏ, họ sẽ vui vẻ lắng nghe lý do tại sao giải pháp này phù hợp hơn với nhu cầu của họ.
Giao diện người dùng web của Tailscale
Tôi có thể sẽ chuyển sang sử dụng Tailscale Funnel vĩnh viễn để tránh những rắc rối với DNS và proxy
Tôi đã nhìn 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 mỗi khi đư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 gì không? Thiết lập các bản ghi DNS, port forward, reverse proxy, và tất cả những 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 trong khi vẫn giữ an toàn. 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ử nghiệm các công cụ và dịch vụ mới, đó mới thực sự là điều tôi yêu thích ở việc xây dựng Home Lab.
Tài liệu tham khảo:
- 5 Tailscale features you didn’t know existed
- 7 command-line tools that will automate your daily tasks on any OS
- 4 reasons your cloud provider should be using end-to-end encryption
- What is port forwarding? Why do I need to do it?
- What is internet routing, and why does it matter?
- I use Tailscale to remotely access my self-hosted services – here’s how