2 điểm bởi GN⁺ 2025-04-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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ủ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ợ

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

  • Cộng đồng người dùng và nhà phát triển đang hoạt động sôi nổi trên kênh Discord
  • Trước khi đóng góp, cần đọc kỹ CONTRIBUTING.md

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

 
GN⁺ 2025-04-04
Ý 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

    • Toàn bộ tiền đề của Tailscale SaaS là tạo các đường hầm xuyên qua tường lửa và cho phép người dùng quản lý một cách trực quan, tích hợp việc định tuyến qua các đường hầm đó
    • Có vẻ Headscale đã giải quyết tốt phần vượt qua tường lửa và thực hiện NAT-traversal. Tuy nhiên, tôi nghi ngờ liệu nó có thể cung cấp đủ bảo mật để bù cho những gì nó đã vượt qua, hay cuối cùng chỉ trở thành một công cụ cản trở quản trị viên mạng nội bộ
    • 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
  • 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ỉ

    • Đề xuất: tập trung vào mạng overlay chỉ dùng IPv6 trong dải địa chỉ cục bộ duy nhất (ULA), rồi chia 121 bit còn lại thành 20 bit cho địa chỉ thiết bị (~1 triệu thiết bị) và 101 bit cho hash khóa công khai của máy chủ. Thêm khóa công khai của các instance khác và dùng policy cùng ACL để quản lý giao tiếp giữa các node
    • Tôi nghĩ ý tưởng này hay, nhưng khi tôi nêu vấn đề này vào năm 2023, maintainer kradalby nói rằng nó nằm ngoài phạm vi Liên kết issue GitHub
  • Nên thêm tên dự án, Headscale, vào tiêu đề

    • Headscale đã xuất hiện trên HN nhiều lần
  • 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

    • Nếu Tailscale bắt đầu cắt giảm tính năng theo hướng khó tránh khỏi, thì tính năng này sẽ biến mất
    • Tôi nói điều này với tư cách là một khách hàng Tailscale hiện rất hài lòng, dù trước đây đã nhiều lần thất vọng khi các công ty khác bị bán đi hoặc cạn vốn VC
  • 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"

    • Khi dùng máy chủ điều khiển Headscale, người dùng có thể "hiểu hoặc từ chối mọi thứ mà máy chủ điều khiển chỉ thị cho client". Điều này đạt được bằng cách đọc, chỉnh sửa và biên dịch mã nguồn
    • Khi dùng máy chủ điều khiển Tailscale, người dùng chỉ có thể "hiểu hoặc từ chối những gì máy chủ điều khiển chỉ thị cho client" trong phạm vi mà công ty Tailscale cho phép. Người dùng bị cấm chỉnh sửa hoặc biên dịch mã nguồn
    • Không phải mọi người dùng đều muốn có lựa chọn đọc, chỉnh sửa và biên dịch phần mềm bên thứ ba mà họ sử dụng. Một số người có thể hài lòng với việc dựa vào sự bảo đảm liên tục từ một công ty được vận hành bằng nguồn vốn VC ở Thung lũng Silicon. Với những người muốn một dự án mã nguồn mở 100%, Headscale có thể hữu ích
    • Tác giả của Headscale gọi máy chủ điều phối Tailscale là "về bản chất chỉ là một Dropbox chia sẻ cho khóa công khai"