Việc truy cập các thiết bị trong home lab từ xa có thể là một nhiệm vụ đầy thách thức, dù bạn cần truy cập NAS hay một tổ hợp các máy chủ vật lý và đám mây. Bạn có thể thiết lập một mạng riêng ảo (VPN) hoặc một reverse proxy, nhưng những giải pháp này đòi hỏi các mức độ kiến thức kỹ thuật khác nhau. Một lựa chọn khác là sử dụng Cloudflare Tunnels, song chúng lại có những hạn chế về loại dữ liệu bạn có thể truyền tải, do đó bạn sẽ không thể truyền phát từ máy chủ media của mình.
Tuy nhiên, có một giải pháp tiềm năng hơn là thiết lập Tailscale, một công cụ đã trở thành yêu thích của nhiều người. Cá nhân tôi phải thừa nhận rằng mình đã không đào sâu vào các tính năng nâng cao của nó cho đến tận bây giờ. Trước đây, tôi đã sử dụng Tailscale để kết nối các thiết bị của mình như một mạng VPN ngang hàng (peer-to-peer), tránh được những 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 đã có thể làm được nhiều hơn thế, ngay cả khi một số tính năng vẫn đang trong giai đoạn thử nghiệm beta, và kết quả là nó đã trở thành một sản phẩm với đầy đủ tính năng hơn. Một số tính năng hiện có đã được đơn giản hóa, và do đó, tôi có thể sẽ bắt đầu sử dụng Tailscale cho toàn bộ home lab của mình.
Giao diện quản lý web của Tailscale hiển thị các thiết bị đã kết nối trong Tailnet
1. Tailscale Funnel: Mở Cổng Dịch Vụ Ra Internet An Toàn, Đơn Giản
Phơi bày từng dịch vụ riêng lẻ ra Internet qua Tailnet của bạn
Sẽ thật tuyệt vời nếu bạn có thể phơi bày các dịch vụ trong home lab của mình ra internet từng cái một, một cách an toàn và sử dụng các URL dễ dùng phải không? Bạn có thể sử dụng Cloudflare Tunnels, nhưng vấn đề với chúng là chúng không được mã hóa giữa dịch vụ của bạn và Cloudflare, vì vậy về mặt kỹ thuật, Cloudflare có thể “nghe lén” những gì đang diễn ra. Tôi rất nghi ngờ họ làm vậy trừ khi đó là một kiểm tra để đảm bảo không vi phạm điều khoản dịch vụ, nhưng dù sao thì ý nghĩ đó vẫn khiến tôi lo lắng.
Tailscale Funnel chính là một giải pháp tương tự, nhưng nó được mã hóa end-to-end 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 điều 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 này giờ đây chỉ còn một dòng duy nhất trong Tailscale CLI:
tailscale funnel [port]
Chỉ vậy thôi. Nó sẽ cung cấp cho bạn một URL trên Tailscale để chia sẻ, cho phép người khác truy cập dịch vụ mà không cần thực hiện thêm hành động nào ngoài việc nhấp vào liên kết. À, và đăng nhập, nếu bạn đã thiết lập xác thực trên ứng dụng tự host đó. Đây thực sự là một tính năng mạnh mẽ, và vì nó duy trì mã hóa, nên nó an toàn hơn các tùy chọn khác. Đừng quên đợi một lúc trước khi cố gắng truy cập, vì máy chủ DNS của Tailscale mất từ mười đến măm phút để lan truyền (propagate).
Nếu bạn cần các tính năng mạnh mẽ hơn, bạn có thể đặt nó để luôn mở ngay cả khi CLI đã đóng, hoặc đặt nó thành một đường dẫn, hoặc như một reverse proxy, hoặc một tệp, thư mục, hoặc 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à nhiều điểm gắn kết (mount points) hoặc OpenSSH song song nếu cần.
Giao diện website Cloudflare khi thiết lập Cloudflare Tunnels, một giải pháp thay thế cho việc truy cập dịch vụ từ xa
2. Tailscale Serve: Chia Sẻ Dịch Vụ Nội Bộ Trong Tailnet Không Cần Mở Cổng
Chia sẻ các dịch vụ nội bộ với người dùng Tailnet mà không cần mở cổng
Nếu Tailscale Funnel phơi bày 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 cũng làm điều tương tự, nhưng chỉ giới hạn 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 và không yêu cầu cấu hình nâng cao; Tailscale xử lý tất cả công việc khó khăn cho bạn để bạn có thể tập trung vào thử nghiệm. Dù đó là một máy chủ tệp đơn giản hay một dịch vụ nào khác, nó đều có thể được chia sẻ nhanh chóng với tailnet của bạn.
Tương tự, bạn chỉ cần một dòng lệnh duy nhất 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, qua HTTPS. Đây chẳng phải là một giải pháp thanh lịch sao? Bạn không cần phải loay hoay với cài đặt DNS, tên miền hay ánh xạ mọi thứ thủ công. Nó chỉ 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ì khác thực sự đều có thể được chia sẻ bằng lệnh này, và bạn biết các thành viên trong tailnet của mình, vì vậy đó đã là những người dùng đáng tin cậy.
Lệnh Tailscale Serve được thực thi trên terminal để chia sẻ dịch vụ nội bộ trong mạng Tailnet
3. Subnets: Mở Rộng Tailnet Đến Toàn Bộ Mạng LAN Không Cần Cài Đặt Trên Mọi Thiết Bị
Phơi bày toàn bộ mạng LAN mà không cần cài đặt 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 của 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 như vậ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ó hiện diện vật lý, nhưng bạn không phải rời khỏi tailnet của mình để làm điều đó, khiến 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.
Bộ chuyển mạch quản lý Zyxel XGM1915, đại diện cho thiết bị mạng có thể kết nối qua Subnet routers của Tailscale
4. Ephemeral Authentication Keys và Nodes: Tự Động Quản Lý Thiết Bị Tạm Thời
Tự động đăng ký thiết bị và khóa tự hủy để dọn dẹp
Một điều có thể gây khó chịu về Tailscale là quy trình loại bỏ các node thông thường là thủ công. Điều đó không thành vấn đề khi bạn có ít 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ẽ nhanh chóng trở nên phiền phức. Rốt cuộc, các container và k8s được tạo ra để được 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ẽ 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 sau khi node được thiết lập. Sử dụng một khóa có thể tái sử dụng (reusable key) nếu bạn muốn nhiều phiên bản của cùng một container, như khi bạn đang xây dựng các cụm HA (High Availability), và một điều khác về các node tạm thời là chúng sẽ biến mất khỏi trang quản lý của bạn nếu chúng không được sử dụng trong mười phút. Điều này cho bạn đủ thời gian để tắt và khởi động lại container của mình mà không cần thiết lập khóa mới, nhưng cũng không đủ lâu để một container biến mất vẫn còn trong danh sách và gây nhầm lẫn.
Tùy chọn 'Ephemeral' (tạm thời) khi tạo khóa xác thực trong giao diện quản lý Tailscale để quản lý node tự động
5. Tailnet Lock: Nâng Cao Bảo Mật Bằng Cách Phân Phối Khóa P2P
Đảm bảo chỉ các thiết bị được bạn cấp quyền mới có thể truy cập Tailnet của bạn
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 cho 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ể đặt tailnet của mình sang 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 đó.
Tính năng này có thêm một chút phức tạp vào quá trình thiết lập, vì bạn cần thêm 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ẽ được hoan nghênh vì nó loại bỏ Tailscale khỏi vai trò một “threat actor” (tác nhân đe dọa) tiềm ẩn. Nếu dịch vụ bị tấn công, có khả năng kẻ tấn công 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à tôi đã bật nó phòng trường hợp, chủ yếu là vì tôi có thể quên ngắt kết nối các thiết bị khỏi tailnet của mình hoặc ngừng sử dụng nó.
Tùy chọn 'Tailnet Lock' trong cài đặt Tailscale, giúp tăng cường bảo mật bằng cách kiểm soát phân phối khóa công khai
Tailscale Vượt Xa Một VPN Mạng Lưới Đơn Thuần
Từ kiểm soát truy cập mạnh mẽ đến chia sẻ dịch vụ an toàn, Tailscale thực sự vô cùng mạnh mẽ. Nó cũng rất dễ sử dụng, và sẽ không mất nhiều thời gian để nắm bắt các khái niệm đằng sau nó, cũng như cách mọi thứ hoạt động. Tài liệu hướng dẫn của Tailscale cực kỳ chi tiết và tôi chưa từng gặp vấn đề gì với nó trong nhiều năm. Có dịch vụ nào bạn thường xuyên sử dụng mà bạn có thể nói điều tương tự không? Vẫn còn rất nhiều tính năng khác mà tôi chưa kịp đề cập, như Taildrop để gửi từng 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ẽ ngày càng tốt hơn. Hãy cùng congnghemoi.net khám phá và tận dụng tối đa tiềm năng của Tailscale để biến home lab của bạn trở nên an toàn và tiện lợi hơn bao giờ hết!