- Tailscale Peer Relays là tính năng relay lưu lượng mới thay thế máy chủ DERP hiện có, với cấu trúc cho phép người dùng tự triển khai và tự quản lý
- Mỗi node chỉ cần mở một cổng UDP duy nhất là có thể đảm nhiệm vai trò relay, và có thể kích hoạt dễ dàng vì được tích hợp sẵn trong client Tailscale
- Hỗ trợ kết nối tốc độ cao, thông lượng lớn, giúp đạt hiệu năng gần như kết nối trực tiếp ngay cả khi nằm sau NAT đám mây hoặc tường lửa
- Toàn bộ lưu lượng vẫn duy trì mã hóa đầu-cuối dựa trên WireGuard®, đồng thời hỗ trợ fallback tự động sang DERP và DERP tùy chỉnh
- Hiện được cung cấp dưới dạng beta công khai, và mọi gói cước đều có thể sử dụng tối đa 2 Peer Relay miễn phí
Tổng quan về Tailscale Peer Relays
- Tailscale Peer Relays là cơ chế relay lưu lượng do người dùng quản lý có thể thay thế máy chủ DERP do Tailscale quản lý
- Bất kỳ node Tailscale nào cũng có thể được cấu hình làm relay và chuyển tiếp lưu lượng giữa các node trong cùng một tailnet
- Relay chỉ có thể chuyển tiếp cho các node thuộc tailnet mà nó đang tham gia
- Do khách hàng tự quản lý nên ít bị giới hạn về thông lượng hơn DERP, đồng thời mang lại hiệu năng cao trong hạ tầng đám mây khép kín hoặc môi trường tường lửa
- Trong các thử nghiệm ban đầu với đối tác, hệ thống ghi nhận thông lượng tiệm cận kết nối trực tiếp, xác nhận hiệu năng nhanh hơn hàng chục lần so với DERP hiện tại
Vượt qua môi trường Hard NAT
- Tailscale áp dụng công nghệ NAT traversal được cải tiến để duy trì kết nối trực tiếp (trên 90%) nhiều nhất có thể ngay cả trong môi trường NAT
- Tuy nhiên, trong một số môi trường đám mây, kết nối trực tiếp có thể không khả thi hoặc kém hiệu quả
- DERP hiện tại vẫn cung cấp kết nối ổn định, nhưng do giới hạn QoS và trần hiệu năng, một số môi trường triển khai vẫn gặp khó khăn
- Peer Relays được thiết kế như một công cụ kết nối ưu tiên hiệu năng, với giao tiếp độ trễ thấp dựa trên UDP và kiến trúc tích hợp trong client giúp triển khai dễ dàng
- Khách hàng có thể tự bố trí relay để xây dựng mạng hiệu năng cao và linh hoạt hơn
Cách hoạt động
- Peer Relay sử dụng một cổng UDP duy nhất mà cả hai node đều có thể truy cập
- Có thể kích hoạt dễ dàng bằng lệnh CLI
tailscale set --relay-server-port
- Khi không thể kết nối trực tiếp, hệ thống sẽ tự động fallback theo thứ tự Peer Relay → DERP (quản lý hoặc tùy chỉnh)
- Mọi kết nối đều được bảo vệ bằng mã hóa WireGuard®
- Có thể cấu hình để chỉ cho phép lưu lượng nội bộ tailnet trong khi vẫn giảm thiểu ngoại lệ tường lửa
- Hỗ trợ đầy đủ khả năng mở rộng liên vùng, khả năng chịu lỗi mạng và fallback tự động sang DERP
Nhiều kịch bản sử dụng
- Chuyển tiếp tốc độ cao cho lưu lượng không thể kết nối trực tiếp trong môi trường NAT đám mây (như AWS Managed NAT Gateway)
- Trong môi trường tường lửa nghiêm ngặt, chỉ cần mở một cổng UDP duy nhất để rút ngắn quy trình phê duyệt
- Giảm tải cho mạng DERP và không cần bảo trì DERP tùy chỉnh
- Khi truy cập mạng khách hàng khép kín, chỉ cần mở số lượng cổng tối thiểu thông qua endpoint có thể dự đoán trước
- Trong thực tế, khách hàng đã dùng Peer Relay để triển khai truy cập mạng không được quản lý, kiểm soát đường kết nối đối tác, và cấu trúc mạng phân đoạn chi tiết dựa trên VPC peering
Beta công khai và chính sách cung cấp
- Tailscale Peer Relays hiện có thể sử dụng ngay dưới dạng bản beta công khai
- Hiện vẫn đang tiếp tục cải thiện một số tính năng quan sát và gỡ lỗi
- Các đối tác ban đầu đã xác nhận triển khai dễ dàng và hiệu năng ổn định
- Mọi gói cước (kể cả miễn phí) đều được cung cấp tối đa 2 Peer Relay miễn phí, và có thể mở rộng thêm relay nếu cần
- Nếu cần thêm relay, có thể mở rộng bằng cách liên hệ đội ngũ kinh doanh của Tailscale
1 bình luận
Ý kiến Hacker News
Tôi nghĩ tính năng này thực sự hợp lý
Cấu trúc chỉ dùng nút trung gian khi không thể kết nối trực tiếp, và lưu lượng được mã hóa đầu cuối
Nó tương tự như tự vận hành máy chủ derp, nhưng không cần mở cổng, đồng thời giảm mức sử dụng relay của Tailscale nên cũng tiết kiệm chi phí băng thông
Tuy vậy, tôi thắc mắc vì sao dùng hơn hai relay lại phải trả phí
Nếu không thì ngay từ đầu có khi cũng chẳng cần tailscale
Ngoại lệ là trường hợp hai client đều truy cập được relay nhưng không thể kết nối trực tiếp với nhau
tinc trước đây đã giải quyết vấn đề này rồi
Mọi nút đều có thể làm relay, và nó hoạt động như một mạng mesh thực sự mà không cần máy chủ trung tâm
Thay vì làm lại từ đầu, tôi nghĩ tốt hơn là port nó sang nền tảng wireguard bằng ngôn ngữ an toàn bộ nhớ
Nhiều khi route còn đứt ngay sau khi vừa SSH vào
Vì cấu trúc lưu lượng bị giải mã rồi mã hóa lại tại nút relay, nên muốn có mã hóa đầu cuối thì phải dùng giao thức thử nghiệm
Tôi muốn thử viết lại dựa trên giao thức cjdns, nhưng không hề dễ
Tính năng Peer Relay mới của Tailscale trông khá giống thứ mà ZeroTier đã làm từ trước
Khó mà gọi đây là “tính năng độc quyền chỉ Tailscale mới có”, và tôi thấy thu thêm phí ngoài giá theo người dùng là hơi quá
Thay vào đó, vấn đề là cơ chế mã hóa riêng, hiệu năng đơn luồng kém, và tốc độ phát triển chậm
Tôi đã thử nhiều lựa chọn khác, nhưng đến giờ vẫn chưa có cái nào vừa có tính năng vừa có hiệu năng như Tailscale
Cảm giác như kiểu so sánh “đã có FTP thì cần gì Dropbox”
Tôi tò mò không biết có thể chỉ định trực tiếp địa chỉ IPv4/IPv6 bên ngoài hay không
Vì có những trường hợp lưu lượng gửi và nhận dùng địa chỉ khác nhau, hoặc tường lửa chỉ cho phép một vài địa chỉ trong số nhiều kết nối Internet
Tuần trước tôi đã cấu hình headscale và split horizon SSL, rồi cuối cùng phát hiện ra là chỉ DERP mới dùng được
Tôi nghĩ cứ trực tiếp mở cổng UDP trong mạng cục bộ còn tốt hơn
Nếu độ an toàn của client Wireguard đã được kiểm chứng đủ tốt thì cách đó tiện hơn
Muốn hỏi là bạn đã thử mở trực tiếp cổng Wireguard, hay đang nói tới cổng của Tailscale
Nếu dùng tính năng này thay cho DERP thì nó sẽ không hoạt động trong trình duyệt
Vì nó dựa trên UDP native
Không biết sau này có thể triển khai bằng WebTransport hay không
Nhưng nó không giải quyết được vấn đề NAT traversal
Tôi cũng đang theo dõi rất kỹ tiến độ QAD của Iroh
Nếu mọi thứ khớp với nhau, có lẽ mạng sẽ trở nên kỳ diệu hơn rất nhiều
Tôi nghĩ bước tiếp theo sẽ là để mọi client tailscale tự động nhận yêu cầu chuyển tiếp, để mạng mesh có thể tự phục hồi liền mạch khi bị đứt
Tuy vậy, điểm mấu chốt là có cho phép trung chuyển lưu lượng của người khác hay không
Có thể dùng Tailscale để kết nối giữa các dịch vụ, nhưng tôi thắc mắc nếu Tailscale gặp sự cố thì liệu các dịch vụ của tôi cũng mất kết nối với nhau không
Tôi không thể kết nối vào tailscale nên cũng không thể tái kết nối
Vì vậy giờ tôi định tự dựng headscale
Ngay cả thiết bị trong LAN nội bộ mà cũng không liên lạc được với nhau thì thật khá vô lý
Tôi đã làm một giải pháp tạm cho Kubernetes Operator suốt cả cuối tuần, mà giờ nhờ tính năng này có thể dẹp hết đi được
Đúng là bravo
Tôi từng thắc mắc trường hợp sử dụng của tính năng này là gì
Có vẻ nó phù hợp cho việc sản phẩm SaaS cần dữ liệu từ hệ thống của khách hàng, khi phía khách hàng phơi dữ liệu qua relay để tích hợp
Dù vậy, có lẽ vẫn cần phần mềm cho xác thực, ghi log v.v.
Vì nhiều trường hợp không thể vượt NAT nên DERP được dùng khá thường xuyên, nhưng tốc độ chậm
Giờ thì có thể chỉ định một peer trong mạng có kết nối tốt làm relay để dùng nhanh hơn
Đây không hẳn là trường hợp sử dụng mới mà là phiên bản cải thiện hiệu năng của DERP hiện có
Thay vì cấu trúc hub-and-spoke truyền thống, nó hướng tới kiến trúc P2P nơi mọi nút kết nối trực tiếp qua UDP/IP bất cứ khi nào có thể
Nhưng vì NAT và tường lửa nên thường có nhiều trường hợp không thể kết nối trực tiếp, và DERP sẽ đứng ra chuyển tiếp
DERP thì chậm và người dùng không có cách nào để tự cải thiện hiệu năng, còn Peer Relay lần này cho phép tự vận hành relay
Nếu đặt vị trí hợp lý thì cũng có thể giảm độ trễ
Dĩ nhiên đây không phải tính năng mà mọi người dùng đều cần