- Headscale là dự án thay thế mã nguồn mở được tạo ra để có thể tự lưu trữ chức năng của máy chủ điều khiển Tailscale
- Tailscale là giải pháp VPN hiện đại dựa trên WireGuard, cho phép xây dựng mạng overlay hoạt động cả trong môi trường NAT
- Máy chủ Control gốc của Tailscale là phần mềm không công khai, nhưng Headscale được phát triển thành phần mềm máy chủ có thể cài đặt tự do để thay thế nó
- Các client Windows, macOS, iOS vẫn cần GUI của Tailscale
Mục đích và đặc điểm của Headscale
- Headscale chỉ hỗ trợ một tailnet (mạng riêng ảo) duy nhất để cá nhân và các tổ chức mã nguồn mở quy mô nhỏ có thể sử dụng
- Đây là giải pháp phù hợp cho người dùng muốn tự vận hành máy chủ và những người yêu thích phần mềm tự do
- Phạm vi thiết kế được thu hẹp để việc bảo trì và quản lý trở nên đơn giản hơn
Tính năng chính
- Trao đổi khóa công khai WireGuard giữa các node client
- Cấp phát địa chỉ IP và thiết lập ranh giới cho từng node
- Tính năng chia sẻ máy giữa các người dùng
- Quản lý quảng bá route của node
- Danh sách tính năng chính thức có thể xem tại đây
Hệ điều hành client được hỗ trợ
- Danh sách hệ điều hành và client tương thích với Headscale có thể xem trong tài liệu chính thức
Hướng dẫn cài đặt và chạy
- Reverse proxy hoặc chạy dựa trên container không được khuyến nghị chính thức
- Cách chạy và cấu hình hãy tham khảo tài liệu chính thức
Cộng đồng và đóng góp
Môi trường phát triển và phong cách mã
- Các công cụ chính cần cho phát triển:
- Phiên bản Go mới nhất
- Buf (trình tạo Protobuf)
- Có thể thiết lập môi trường phát triển bằng Nix (lệnh
nix develop)
- Phong cách mã:
- Mã Go: dùng
golangci-lint, golines, gofumpt
- Mã Proto: dùng
buf, clang-format
- Các tệp khác: định dạng bằng
prettier
- Trước khi commit, bắt buộc dọn dẹp mã bằng
make lint, make fmt
Build và test
- Khi thay đổi mã Protobuf, cần tạo lại mã Go:
make generate
- Chạy test:
make test
- Build:
nix build
- hoặc dùng lệnh
make build
Thông tin khác
- Đã có bài thuyết trình về Headscale tại FOSDEM 2023: xem video
- Dự án không liên quan trực tiếp đến Tailscale Inc., nhưng có các contributor thuộc Tailscale tham gia, và việc review mã cũng như định hướng phát triển được thực hiện độc lập
1 bình luận
Ý kiến trên Hacker News
Cứ vài tháng tôi lại quay lại kho lưu trữ này để xem liệu Tailnet lock đã hoạt động hay đã có kiểm toán bảo mật nào được tiến hành chưa. Đáng tiếc là cả hai đều chưa có tiến triển, nên tôi không chắc có thể tin tưởng hệ thống này cho phần cốt lõi của hạ tầng hay không
Nếu bạn quan tâm đến việc tự host máy chủ điều phối, có thể xem Netbird. Công cụ này rất tương tự, nhưng máy chủ được cung cấp dưới dạng mã nguồn mở. Vì vậy bạn có thể có một máy chủ điều khiển tự host với đầy đủ mọi tính năng của bản trả phí cùng một GUI đẹp mắt
Sẽ thật tuyệt nếu Headscale cho phép peering/liên kết giữa các instance (dù là sau khi làm lại ACL). Một trong những vấn đề chính là xung đột địa chỉ
Nên thêm tên dự án, Headscale, vào tiêu đề
Không biết nó có chạy được trên Plan 9 không
Tôi rất thích Headscale. Chúng tôi đã đưa nó vào production và nó hoạt động rất tốt
Tôi thắc mắc nếu máy chủ điều phối Tailscale bị xâm phạm và tailnet lock được bật, thì thiết bị của tôi có nguy cơ bị xâm phạm ở mức nào
Với nhiều trường hợp sử dụng (truy cập di động, GUI trên macOS), client Tailscale chính thức phụ thuộc vào khả năng thiết lập máy chủ điều khiển
Tôi tự hỏi cấu hình này mang lại giá trị bổ sung gì so với thiết lập wireguard + openwrt
Phát biểu rằng "Việc hoàn toàn không kiểm toán mã máy chủ, trong khi cũng không cung cấp cho người dùng cách nào để hiểu hoặc từ chối những gì máy chủ điều khiển chỉ thị cho client trong triển khai Tailscale, có vẻ khá táo bạo" cho thấy chỉ riêng việc công khai mã nguồn của máy chủ điều khiển Headscale vẫn chưa phải là điều kiện đủ để người dùng có thể "hiểu hoặc từ chối những gì máy chủ điều khiển chỉ thị cho client"