Ilang araw na ang nakalipas ay napag-usapan natin dito sa blog ang tungkol sa Firezone, na isang mahusay na utility para sa paggawa ng mga WireGuard-based VPN server.
At ngayon, sa pagkakataong ito, pag-uusapan natin ang isang halos katulad na utility na tinatawag na "Headscale," na isang proyektong binuo bilang isang open-source na implementasyon ng Tailscale VPN server component , na nagbibigay-daan sa iyong lumikha ng mga VPN na parang Tailscale sa iyong sariling lugar, nang hindi nakatali sa mga serbisyo ng third-party.
Pinapayagan ng Tailscale ang pagsasama-sama ng isang arbitraryong bilang ng mga host na nakakalat sa heograpiya sa isang network , na binuo sa imahe ng isang mesh network, kung saan ang bawat node ay direktang nakikipag-ugnayan sa iba pang mga node (P2P) o sa pamamagitan ng mga kalapit na node, nang hindi nagpapadala ng trapiko sa pamamagitan ng mga sentralisadong panlabas na server ng VPN provider.
Bukod sa pagsuporta sa kontrol ng ruta at access na nakabatay sa ACL , at pagpapagana ng pagtatatag ng mga channel ng komunikasyon sa ilalim ng mga kondisyon ng paggamit ng Network Address Translation (NAT), sinusuportahan ng sistema ang mga mekanismo ng STUN, ICE, at DERP (katulad ng TURN, ngunit batay sa HTTPS). Kung ang channel ng komunikasyon sa pagitan ng ilang partikular na node ay naharang, maaaring ilipat ng network ang trapiko sa iba pang mga node.
Ang Tailscale ay naiiba sa proyektong Nebula , na idinisenyo rin upang lumikha ng mga distributed VPN network na may mesh routing, gamit ang Wireguard protocol upang ayusin ang paglilipat ng data sa pagitan ng mga node, habang ang Nebula ay gumagamit ng mga development mula sa proyektong Tinc, na gumagamit ng AES-256 algorithm upang i-encrypt ang mga GSM packet (Ginagamit ng Wireguard ang ChaCha20 encryption, na sa mga pagsubok ay nagpapakita ng mas mataas na performance at responsiveness).
Isa pang katulad na proyekto, ang Innernet, ay binubuo nang hiwalay, kung saan ang Wireguard protocol ay ginagamit din upang makipagpalitan ng data sa pagitan ng mga node. Kabaligtaran ng Tailscale at Nebula, ang Innernet ay gumagamit ng ibang sistema ng paghihiwalay ng access batay sa mga ACL; ang mga label ay hindi naka-link sa mga indibidwal na node at subnet upang paghiwalayin at ihiwalay ang iba't ibang hanay ng IP address, tulad ng sa mga kumbensyonal na network ng internet.
Gayundin, ang Innernet ay gumagamit ng Rust sa halip na Pumunta at sulit na banggitin na ang Innernet 1.5 na may pinahusay na suporta ng traversal na NAT ay inilabas ilang araw na ang nakakaraan. Mayroon ding isang proyekto sa Netmaker, na nagbibigay-daan sa iyo upang ikonekta ang mga network na may iba't ibang mga topology gamit ang Wireguard, ngunit ang code nito ay ibinibigay sa ilalim ng SSPL (Server Side Public Lisensya), na hindi bukas dahil sa pagkakaroon ng mga kinakailangang diskriminasyon.
Ang Tailscale ay ipinamamahagi gamit ang isang freemium na modelo, na nag-aalok ng libreng access para sa mga indibidwal at bayad na access para sa mga negosyo at koponan. Ang mga bahagi ng kliyente ng Tailscale, maliban sa mga graphical na aplikasyon para sa Windows at macOS, ay binuo bilang mga open-source na proyekto sa ilalim ng lisensya ng BSD.
Ang outsourced server software ng Tailscale, na nag-a-authenticate ng mga bagong kliyente , nagko-coordinate ng key management , at nag-oorganisa ng komunikasyon sa pagitan ng mga node, ay pagmamay-ari nito. Tinutugunan ng proyektong Headscale ang isyung ito at nagbibigay ng open-source na implementasyon na hiwalay sa mga bahagi ng Tailscale server.
Ginagampanan ng Headscale ang mga tungkulin ng pagpapalitan ng public key sa pagitan ng mga node at isinasagawa rin ang mga operasyon ng pagtatalaga ng IP address at pamamahagi ng routing table sa pagitan ng mga node.
Sa kasalukuyang anyo nito, ipinapatupad ng Headscale ang lahat ng pangunahing tampok ng isang management server, maliban sa suporta para sa MagicDNS at Smart DNS. Sa partikular, sinusuportahan nito ang pagrerehistro ng mga node (kabilang ang sa pamamagitan ng web), pag-aangkop sa network upang magdagdag o mag-alis ng mga node, pag-subnetting gamit ang mga namespace (na nagbibigay-daan para sa paglikha ng isang VPN para sa maraming user), pag-oorganisa ng shared node access sa mga subnet sa iba't ibang namespace, pagkontrol sa pagruruta (kabilang ang pagtatalaga ng mga outbound node upang ma-access ang labas na mundo), shared access sa pamamagitan ng mga ACL, at pagpapatupad ng DNS.
Ang Headscale code ay nakasulat sa Go at ipinamamahagi sa ilalim ng lisensya ng BSD. Ang proyekto ay binuo ni Juan Font ng European Space Agency.
Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.