2 คะแนน โดย GN⁺ 2025-04-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 หรือ การรันแบบคอนเทนเนอร์
  • วิธีการรันและการตั้งค่า ดูได้จากเอกสารทางการ

ชุมชนและการมีส่วนร่วม

  • ชุมชนผู้ใช้และนักพัฒนามีกิจกรรมอย่างต่อเนื่องในช่อง Discord
  • ก่อนร่วมพัฒนา ต้องอ่านCONTRIBUTING.mdให้ครบถ้วน

สภาพแวดล้อมการพัฒนาและสไตล์โค้ด

  • เครื่องมือหลักที่จำเป็นสำหรับการพัฒนา:
    • 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 ความคิดเห็น

 
GN⁺ 2025-04-04
ความคิดเห็นบน Hacker News
  • ทุก ๆ สองสามเดือนฉันจะกลับมาดูรีโพนี้อีกครั้งเพื่อเช็กว่า Tailnet lock ใช้งานได้แล้วหรือยัง หรือมีการตรวจสอบความปลอดภัยเกิดขึ้นหรือไม่ น่าเสียดายที่ทั้งสองอย่างยังไม่คืบหน้า ทำให้ไม่แน่ใจว่าจะเชื่อถือระบบนี้ให้เป็นส่วนสำคัญของโครงสร้างพื้นฐานได้หรือไม่

    • แนวคิดหลักทั้งหมดของ Tailscale SaaS คือการสร้าง tunnel รอบไฟร์วอลล์ และทำให้ผู้ใช้สามารถจัดการได้อย่างเป็นธรรมชาติและบูรณาการ ว่าจะ route ผ่าน tunnel เหล่านี้อย่างไร
    • ดูเหมือนว่า Headscale จะแก้ปัญหาส่วนของการข้ามไฟร์วอลล์และทำ NAT traversal ได้ดี อย่างไรก็ตาม ยังน่าสงสัยว่ามันจะให้ความปลอดภัยได้เพียงพอเพื่อชดเชยสิ่งที่มันข้ามไปหรือไม่ หรือสุดท้ายจะกลายเป็นแค่เครื่องมือที่ทำให้ผู้ดูแลเครือข่ายภายในปวดหัว
    • การไม่ตรวจสอบโค้ดฝั่งเซิร์ฟเวอร์เลย ในขณะที่ไม่มีวิธีให้ผู้ใช้เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ในการใช้งาน Tailscale implementation นั้น ดูเป็นเรื่องที่กล้ามาก
  • ถ้าคุณสนใจ self-host orchestration server ลองดู Netbird ได้ เครื่องมือนี้คล้ายกันมาก แต่เซิร์ฟเวอร์เปิดเป็นโอเพนซอร์ส ดังนั้นคุณจึงสามารถมี self-host control server พร้อมฟีเจอร์ครบเหมือนเวอร์ชันเสียเงิน และมี GUI ที่สวยงามได้

  • จะดีมากถ้า Headscale อนุญาตให้มี peering/federation ระหว่างอินสแตนซ์ได้ (แม้จะต้องรอหลังปรับ ACL ใหม่ก็ตาม) หนึ่งในปัญหาหลักคือ address conflict

    • ข้อเสนอ: มุ่งไปที่ overlay network แบบ IPv6-only ในช่วง unique local address (ULA) และแบ่งอีก 121 บิตที่เหลือเป็น 20 บิตสำหรับ address ของอุปกรณ์ (~1 ล้านเครื่อง) และ 101 บิตสำหรับแฮชของ public key ของเซิร์ฟเวอร์ จากนั้นเพิ่ม public key ของอินสแตนซ์อื่น และใช้นโยบายกับ ACL เพื่อจัดการการสื่อสารระหว่างโหนด
    • ฉันคิดว่าไอเดียนี้ดี แต่ตอนที่ฉันยกประเด็นนี้ขึ้นมาในปี 2023 ผู้ดูแล kradalby บอกว่ามันอยู่นอกขอบเขต ลิงก์ GitHub issue
  • ควรเพิ่มชื่อโปรเจกต์ Headscale ไว้ในหัวข้อ

    • Headscale โผล่บน HN มาหลายครั้งแล้ว
  • สงสัยว่ามันรันบน Plan 9 ได้ไหม

  • ฉันชอบ Headscale มาก เรานำมันเข้าโปรดักชันแล้วและมันดีมาก

  • ฉันสงสัยว่าถ้า Tailscale coordination server ถูกเจาะ และเปิด tailnet lock อยู่ อุปกรณ์ของฉันจะมีความเสี่ยงถูกเจาะมากแค่ไหน

  • สำหรับหลาย use case (การเข้าถึงจากมือถือ, GUI บน macOS) official Tailscale client ต้องพึ่งความสามารถในการตั้งค่า control server

    • ถ้า Tailscale เริ่มลดฟีเจอร์แบบที่หลีกเลี่ยงไม่ได้ ฟังก์ชันนี้ก็คงหายไป
    • พูดแบบนี้ในฐานะลูกค้า Tailscale ที่ตอนนี้พอใจมาก แต่ก็เคยผิดหวังมาหลายครั้งในอดีตเมื่อบริษัทอื่นถูกขายหรือเงินทุน VC หมด
  • ฉันสงสัยว่าการตั้งค่านี้ให้คุณค่าเพิ่มอะไร เมื่อเทียบกับการตั้งค่า wireguard + openwrt

  • ข้อความที่ว่า "การไม่ตรวจสอบโค้ดฝั่งเซิร์ฟเวอร์เลย ในขณะที่ไม่มีวิธีให้ผู้ใช้เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ในการใช้งาน Tailscale implementation นั้น ดูเป็นเรื่องที่กล้ามาก" ชี้ให้เห็นว่าแค่เปิดเผยซอร์สโค้ดของ Headscale control server อย่างเดียว ยังไม่เพียงพอที่จะทำให้ผู้ใช้ "เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ได้"

    • หากใช้ Headscale control server ผู้ใช้สามารถ "เข้าใจหรือปฏิเสธทุกอย่างที่ control server สั่ง client ได้" ซึ่งทำได้โดยการอ่านซอร์สโค้ด แก้ไข และคอมไพล์มัน
    • หากใช้ Tailscale control server ผู้ใช้จะสามารถ "เข้าใจหรือปฏิเสธสิ่งที่ control server สั่ง client ได้" เท่าที่บริษัท Tailscale อนุญาตเท่านั้น ผู้ใช้ถูกห้ามแก้ไขหรือคอมไพล์ซอร์สโค้ด
    • ไม่ใช่ผู้ใช้ทุกคนที่ต้องการตัวเลือกในการอ่าน แก้ไข และคอมไพล์ซอฟต์แวร์ของบุคคลที่สามที่ตนใช้อยู่ ผู้ใช้บางคนอาจพอใจกับการพึ่งพาการรับประกันอย่างต่อเนื่องจากบริษัทที่ขับเคลื่อนด้วยเงินทุน VC ในซิลิคอนแวลลีย์ สำหรับผู้ใช้ที่ต้องการโปรเจกต์โอเพนซอร์ส 100% Headscale อาจมีประโยชน์
    • ผู้สร้าง Headscale เรียก Tailscale coordination server ว่า "โดยพื้นฐานแล้วคือ Dropbox ที่ใช้แชร์ public key"