- Headscale เป็นโปรเจกต์ทางเลือกแบบโอเพนซอร์สที่สร้างขึ้นเพื่อให้สามารถโฮสต์ฟังก์ชันของ เซิร์ฟเวอร์ควบคุมของ Tailscale ได้ด้วยตนเอง
- Tailscale คือ โซลูชัน VPN สมัยใหม่ที่ใช้ WireGuard เป็นฐาน ซึ่งสามารถสร้างเครือข่ายแบบโอเวอร์เลย์ที่ทำงานได้แม้อยู่ในสภาพแวดล้อม NAT
- เดิมทีเซิร์ฟเวอร์ Tailscale Control เป็นซอฟต์แวร์ปิดซอร์ส แต่ Headscale ถูกพัฒนาขึ้นเป็น ซอฟต์แวร์เซิร์ฟเวอร์ที่ติดตั้งใช้งานได้อย่างอิสระ เพื่อใช้แทน
- ไคลเอนต์บน Windows, macOS, iOS ยังคงต้องใช้ GUI ของ Tailscale
จุดประสงค์และคุณสมบัติของ Headscale
- Headscale รองรับเพียง tailnet (เครือข่ายส่วนตัวเสมือน) เดียว เพื่อให้ บุคคลทั่วไปและองค์กรโอเพนซอร์สขนาดเล็ก ใช้งานได้
- เป็นโซลูชันที่เหมาะสำหรับ ผู้ใช้ที่ต้องการรันเซิร์ฟเวอร์เอง และ ผู้ที่ชื่นชอบซอฟต์แวร์เสรี
- กำหนดขอบเขตการออกแบบให้แคบ ทำให้ดูแลรักษาและจัดการได้ง่าย
ฟีเจอร์หลัก
- การแลกเปลี่ยนคีย์สาธารณะของ WireGuard ระหว่างโหนดไคลเอนต์
- การกำหนด IP address และขอบเขตให้แต่ละโหนด
- ฟังก์ชันแชร์เครื่องระหว่างผู้ใช้
- การจัดการ route advertisement ของโหนด
- ดูรายการฟีเจอร์อย่างเป็นทางการได้ที่นี่
ระบบปฏิบัติการไคลเอนต์ที่รองรับ
- ดูรายการระบบปฏิบัติการและไคลเอนต์ที่เข้ากันได้กับ Headscale ได้ในเอกสารทางการ
คำแนะนำเกี่ยวกับการติดตั้งและการรัน
- ไม่แนะนำอย่างเป็นทางการให้ใช้ reverse proxy หรือ การรันแบบคอนเทนเนอร์
- วิธีการรันและการตั้งค่า ดูได้จากเอกสารทางการ
ชุมชนและการมีส่วนร่วม
สภาพแวดล้อมการพัฒนาและสไตล์โค้ด
- เครื่องมือหลักที่จำเป็นสำหรับการพัฒนา:
- Go เวอร์ชันล่าสุด
- Buf (ตัวสร้าง Protobuf)
- สามารถตั้งค่าสภาพแวดล้อมพัฒนาด้วย Nix ได้ (
nix develop)
- สไตล์โค้ด:
- โค้ด Go: ใช้
golangci-lint, golines, gofumpt
- โค้ด Proto: ใช้
buf, clang-format
- ไฟล์อื่น ๆ: จัดรูปแบบด้วย
prettier
- ก่อน commit ต้องจัดระเบียบโค้ดด้วย
make lint, make fmt
การบิลด์และการทดสอบ
- เมื่อมีการเปลี่ยนแปลงโค้ด Protobuf ต้องสร้างโค้ด Go ใหม่ด้วย
make generate
- รันทดสอบ:
make test
- บิลด์:
nix build
- หรือใช้คำสั่ง
make build
ข้อมูลเพิ่มเติม
- มีการบรรยายเกี่ยวกับ Headscale ในงาน FOSDEM 2023: ชมวิดีโอ
- โปรเจกต์นี้ไม่มีความเกี่ยวข้องโดยตรงกับ Tailscale Inc. แต่มีผู้ร่วมพัฒนาจาก Tailscale เข้าร่วม และมีการรีวิวโค้ดกับกำหนดทิศทางอย่างอิสระ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ทุก ๆ สองสามเดือนฉันจะกลับมาดูรีโพนี้อีกครั้งเพื่อเช็กว่า Tailnet lock ใช้งานได้แล้วหรือยัง หรือมีการตรวจสอบความปลอดภัยเกิดขึ้นหรือไม่ น่าเสียดายที่ทั้งสองอย่างยังไม่คืบหน้า ทำให้ไม่แน่ใจว่าจะเชื่อถือระบบนี้ให้เป็นส่วนสำคัญของโครงสร้างพื้นฐานได้หรือไม่
ถ้าคุณสนใจ self-host orchestration server ลองดู Netbird ได้ เครื่องมือนี้คล้ายกันมาก แต่เซิร์ฟเวอร์เปิดเป็นโอเพนซอร์ส ดังนั้นคุณจึงสามารถมี self-host control server พร้อมฟีเจอร์ครบเหมือนเวอร์ชันเสียเงิน และมี GUI ที่สวยงามได้
จะดีมากถ้า Headscale อนุญาตให้มี peering/federation ระหว่างอินสแตนซ์ได้ (แม้จะต้องรอหลังปรับ ACL ใหม่ก็ตาม) หนึ่งในปัญหาหลักคือ address conflict
ควรเพิ่มชื่อโปรเจกต์ Headscale ไว้ในหัวข้อ
สงสัยว่ามันรันบน Plan 9 ได้ไหม
ฉันชอบ Headscale มาก เรานำมันเข้าโปรดักชันแล้วและมันดีมาก
ฉันสงสัยว่าถ้า Tailscale coordination server ถูกเจาะ และเปิด tailnet lock อยู่ อุปกรณ์ของฉันจะมีความเสี่ยงถูกเจาะมากแค่ไหน
สำหรับหลาย use case (การเข้าถึงจากมือถือ, GUI บน macOS) official Tailscale client ต้องพึ่งความสามารถในการตั้งค่า control server
ฉันสงสัยว่าการตั้งค่านี้ให้คุณค่าเพิ่มอะไร เมื่อเทียบกับการตั้งค่า wireguard + openwrt
ข้อความที่ว่า "การไม่ตรวจสอบโค้ดฝั่งเซิร์ฟเวอร์เลย ในขณะที่ไม่มีวิธีให้ผู้ใช้เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ในการใช้งาน Tailscale implementation นั้น ดูเป็นเรื่องที่กล้ามาก" ชี้ให้เห็นว่าแค่เปิดเผยซอร์สโค้ดของ Headscale control server อย่างเดียว ยังไม่เพียงพอที่จะทำให้ผู้ใช้ "เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ได้"