Việc truy cập từ xa vào phòng thí nghiệm gia đình (home lab) của bạn, dù là truy cập NAS hay một tổ hợp các máy chủ vật lý và đám mây, luôn tiềm ẩn những thách thức nhất định. Bạn có thể thiết lập VPN hoặc proxy ngược, nhưng những giải pháp này đòi hỏi kiến thức kỹ thuật và mức độ phức tạp khác nhau. Cloudflare Tunnels cũng là một lựa chọn, nhưng chúng lại có những hạn chế về loại dữ liệu bạn có thể truyền tải, ví dụ như không thể dùng để stream từ máy chủ media của bạn.
Tuy nhiên, có một giải pháp tiềm năng vượt trội hơn nhiều, đó là thiết lập Tailscale. Tailscale từ lâu đã là một công cụ được nhiều người yêu thích, nhưng phải đến gần đây các tính năng nâng cao của nó mới được khám phá sâu hơn. Trước đây, Tailscale thường được sử dụng để kết nối các thiết bị như một VPN peer-to-peer, tránh được các nút thắt cổ chai thường thấy ở các hệ thống VPN tập trung truyền thống. Giờ đây, Tailscale đã trở thành một sản phẩm đầy đủ tính năng hơn rất nhiều, ngay cả khi một số tính năng vẫn đang trong giai đoạn thử nghiệm beta. Với những cải tiến này, Tailscale hứa hẹn sẽ trở thành giải pháp toàn diện cho toàn bộ home lab của bạn.
Tailscale Funnel: Công khai dịch vụ đơn lẻ ra Internet an toàn
Bạn có bao giờ mong muốn có thể công khai các dịch vụ trong home lab của mình ra Internet một cách an toàn và dễ dàng bằng các URL thân thiện? Mặc dù bạn có thể sử dụng Cloudflare Tunnels, nhưng vấn đề với chúng là dữ liệu không được mã hóa giữa dịch vụ của bạn và Cloudflare. Điều này có nghĩa là về mặt kỹ thuật, Cloudflare có thể “nghe lén” những gì đang diễn ra, dù khả năng cao họ chỉ thực hiện các kiểm tra để đảm bảo không vi phạm điều khoản dịch vụ.
Tailscale Funnel mang đến giải pháp tương tự, nhưng vượt trội hơn ở chỗ nó được mã hóa đầu cuối bằng WireGuard, giống như bất kỳ kết nối Tailscale nào khác. Đây cũng là một trong những tính năng dễ thiết lập nhất, ngay cả khi nó tự động thiết lập chứng chỉ HTTPS và bản ghi DNS cho bạn. Lệnh thực hiện giờ đây chỉ là một dòng duy nhất trong Tailscale CLI:
tailscale funnel [port]
Chỉ cần vậy thôi. Lệnh này sẽ cung cấp cho bạn một URL trên Tailscale của bạn để chia sẻ, cho phép những người khác truy cập dịch vụ mà không cần thực hiện thêm bất kỳ hành động nào ngoài việc nhấp vào liên kết. Tất nhiên, họ vẫn cần đăng nhập nếu bạn đã thiết lập xác thực trên ứng dụng tự host đó. Đây là một tính năng thực sự mạnh mẽ, và vì nó giữ kết nối được mã hóa, nó an toàn hơn các lựa chọn khác. Đừng quên chờ khoảng mười đến mười lăm phút để các máy chủ DNS của Tailscale truyền bá thông tin trước khi cố gắng truy cập.
Nếu bạn cần các tính năng mạnh mẽ hơn, bạn có thể thiết lập để Funnel luôn mở ngay cả khi CLI đã đóng, hoặc đặt nó thành một đường dẫn, hoặc làm một proxy ngược, hoặc chia sẻ một tệp, thư mục, hay thậm chí là một tin nhắn văn bản thuần túy cho mục đích thử nghiệm. Bạn có thể chỉ định lắng nghe trên một cổng khác nếu cần, và thiết lập nhiều điểm gắn kết hoặc kết nối OpenSSH song song.
Tailscale Serve: Chia sẻ dịch vụ nội bộ với người dùng Tailnet
Máy chủ Tailscale Serve
Nếu Tailscale Funnel công khai các dịch vụ bạn kiểm soát ra Internet thông qua các liên kết dễ sử dụng, thì Tailscale Serve thực hiện điều tương tự, nhưng chỉ dành cho các thành viên trong Tailnet của bạn. Một lần nữa, không cần điều chỉnh tường lửa hay cấu hình nâng cao; Tailscale xử lý tất cả công việc phức tạp, giúp bạn tập trung vào việc kiểm thử. Cho dù đó là một máy chủ tệp đơn giản hay một dịch vụ nào đó, nó đều có thể nhanh chóng được chia sẻ với Tailnet của bạn.
Tương tự như Funnel, bạn chỉ cần một dòng lệnh trong Tailscale CLI:
tailscale serve [port]
Lệnh này sẽ làm cho dịch vụ trên cổng [port] có sẵn trong Tailnet của bạn, thông qua HTTPS. Đó thực sự là một giải pháp rất tinh tế phải không? Bạn sẽ không cần phải bận tâm đến cài đặt DNS, tên miền hay ánh xạ thủ công. Nó chỉ đơn giản là hoạt động, chỉ với một dòng lệnh. Các trang web tĩnh, máy chủ phát triển, hay bất cứ thứ gì đều có thể được chia sẻ bằng lệnh này, và vì bạn đã biết các thành viên trong Tailnet của mình, đây là những người dùng đã được tin cậy.
Subnets: Mở rộng mạng Tailnet đến toàn bộ LAN mà không cần cài Tailscale trên mọi thiết bị
Tailscale không nhất thiết phải được cài đặt trên mọi thiết bị trong Tailnet của bạn. Bạn có thể thiết lập bộ định tuyến mạng con (subnet routers) để mở rộng Tailnet của mình đến các thiết bị như máy in mà không thể chạy client Tailscale, và sau đó mọi người dùng trong Tailnet của bạn đều có thể sử dụng các dịch vụ đó. Khi được thiết lập theo cách này, nó gần giống với một VPN truyền thống, nơi đường hầm mã hóa của bạn đi đến mạng con và sau đó hoạt động như thể nó đang hiện diện vật lý. Tuy nhiên, ưu điểm là bạn không cần phải rời khỏi Tailnet để làm điều đó, làm cho nó an toàn hơn, dễ xử lý hơn và ít gây phiền toái hơn cho người dùng.
Ephemeral Authentication Keys và Nodes: Tự động đăng ký và quản lý thiết bị tạm thời
Tailscale đang tạo khóa tạm thời
Một điều có thể gây khó chịu về Tailscale là quá trình loại bỏ các node thông thường là thủ công. Điều này không sao khi bạn có một vài dịch vụ hoặc thiết bị, nhưng khi bạn sử dụng Tailscale để quản lý một hoặc ba cụm Kubernetes, nó sẽ trở nên phiền phức – rất nhanh. Suy cho cùng, container và Kubernetes được sinh ra để bị phá hủy và khởi động lại, và một khi bạn đã làm điều đó vài lần, trang quản lý của bạn sẽ trở nên khá lộn xộn.
Tuy nhiên, có một giải pháp. Khi tạo các node, hãy chọn nút bật tắt bên cạnh Ephemeral (Tạm thời) và tiến hành như bình thường. Điều đó sẽ làm cho khóa biến mất như phép thuật ngay khi node được thiết lập. Sử dụng khóa có thể tái sử dụng nếu bạn muốn nhiều phiên bản của cùng một container, như khi bạn đang thực hiện các cụm HA (High Availability). Một điều khác về các node tạm thời là chúng biến mất khỏi trang quản lý của bạn nếu không được sử dụng trong mười phút, điều này giúp bạn có đủ thời gian để tắt và khởi động lại container mà không cần thiết lập khóa mới, nhưng cũng không quá lâu để một container biến mất vẫn còn trong danh sách và gây nhầm lẫn.
Tailnet Lock: Nâng cao bảo mật mạng Tailnet chỉ với thiết bị được ủy quyền
Khoá Tailnet của Tailscale
Thông thường, khi bạn thêm các node mới vào Tailnet của mình, máy chủ điều phối của Tailscale sẽ xử lý việc phân phối các khóa công khai đến các peer đó. Đó là máy chủ mà Tailscale kiểm soát, không phải bạn. Nhưng bạn có thể thiết lập Tailnet của mình ở chế độ Lock (Khóa), điều này có nghĩa là các peer trong Tailnet của bạn sẽ tự xử lý việc phân phối các khóa đó.
Điều này làm tăng thêm một chút độ phức tạp cho việc thiết lập, vì bạn cần thêm một khóa Tailnet Lock vào lệnh khi thêm một node mới. Tuy nhiên, đối với một số người dùng, điều này sẽ rất đáng hoan nghênh vì nó loại bỏ Tailscale như một yếu tố rủi ro tiềm ẩn. Nếu dịch vụ này bị xâm phạm, có khả năng nó có thể thêm các peer mới vào Tailnet của bạn và xem dữ liệu của bạn ở dạng văn bản thuần túy. Điều đó không thể xảy ra với Tailnet Lock, và việc kích hoạt tính năng này sẽ tăng cường bảo mật đáng kể.
Tailscale vượt xa một VPN mạng lưới đơn thuần
Từ các điều khiển truy cập mạnh mẽ đến việc chia sẻ dịch vụ an toàn, Tailscale thực sự là một công cụ cực kỳ mạnh mẽ. Nó cũng rất dễ sử dụng, và bạn sẽ không mất nhiều thời gian để nắm bắt các khái niệm cơ bản và cách mọi thứ hoạt động. Tài liệu của Tailscale rất xuất sắc, và đã nhiều năm tôi không gặp bất kỳ vấn đề nào với nó. Có bao nhiêu dịch vụ bạn thường xuyên sử dụng mà bạn có thể nói điều tương tự? Còn rất nhiều tính năng khác mà bài viết này chưa đề cập đến, như Taildrop để gửi các tệp riêng lẻ qua Tailnet của bạn, và với nhiều tính năng mới đang được phát triển, Tailscale chắc chắn sẽ còn tốt hơn nữa. Hãy chia sẻ trải nghiệm của bạn với Tailscale trong phần bình luận bên dưới nhé!