幾天前,我們在部落格上討論了 Firezone,這是一個用於創建基於 WireGuard 的 VPN 伺服器的優秀實用程式。
現在,我們將討論一個非常類似的實用程序,名為“Headscale”,它是一個開源項目,是Tailscale VPN伺服器組件的實現,允許您在自己的場所創建類似 Tailscale 的 VPN,而無需依賴第三方服務。
Tailscale允許將任意數量的地理位置分散的主機組合成一個網絡,該網絡以網狀網絡的形式構建,其中每個節點直接與其他節點通信(P2P)或通過相鄰節點通信,而無需通過 VPN 提供商的集中式外部伺服器傳輸流量。
除了支援基於存取控制清單 (ACL) 的路由和存取控制,以及在網路位址轉換 (NAT) 條件下建立通訊通道外,該系統還支援 STUN、ICE 和 DERP 機制(類似於 TURN,但基於 HTTPS)。如果某些節點之間的通訊通道被阻塞,網路可以將流量重新路由到其他節點。
Tailscale與 Nebula 專案有所不同,後者也旨在創建具有網狀路由的分散式 VPN 網絡,使用 Wireguard 協定來組織節點之間的資料傳輸,而 Nebula 則使用了 Tinc 專案的開發成果,該專案使用 AES-256 演算法來加密 GSM 資料包(Wireguard 使用 ChaCha20 效能,測試其具有更高效能的效能感,表明其具有更高效能感)顯示其具有更高效能感,表明其具有更高效能的效能感,表明其具有更高效能感)。
另一個類似的獨立專案 Innernet 也使用 WireGuard 協定在節點間交換資料。與 Tailscale 和 Nebula 不同,Innernet 採用基於存取控制清單 (ACL) 的不同存取隔離系統;與傳統網際網路網路不同,Innernet 不使用標籤將不同的 IP 位址範圍與單一節點和子網路關聯起來。
此外,Innernet 使用 Rust 而不是 Go,值得一提的是,幾天前發布了具有改進 NAT 遍歷支持的 Innernet 1.5。 還有一個 Netmaker 項目,它允許您使用 Wireguard 連接具有不同拓撲的網絡,但它的代碼是在 SSPL(服務器端公共許可證)下提供的,由於存在歧視性要求,該項目不開放。
Tailscale採用免費增值模式分發,為個人用戶提供免費存取權限,為企業和團隊提供付費存取權限。除Windows和macOS圖形應用程式外,Tailscale用戶端元件均以BSD許可證下的開源專案形式開發。
Tailscale 的外包伺服器軟體(用於驗證新用戶端身分、協調金鑰管理以及組織節點間通訊)是專有的。 Headscale 專案旨在解決此問題,並提供一個獨立於 Tailscale 伺服器元件的開源實作。
Headscale 承擔節點間公鑰交換的功能,並執行節點間 IP 位址分配和路由表分發的操作。
目前,Headscale 實現了管理伺服器的所有核心功能,但不支援 MagicDNS 和 Smart DNS。具體來說,它支援節點註冊(包括透過 Web 註冊)、調整網路以新增或刪除節點、使用命名空間進行子網路劃分(允許為多個使用者建立 VPN)、組織對不同命名空間子網路的共用節點存取、路由控制(包括分配出站節點以存取外部網路)、透過 ACL 進行共用存取以及 DNS 執行。
Headscale 代碼是用 Go 編寫的,並在 BSD 許可下分發。 該項目由歐洲航天局的胡安·豐特開發。