Headscale, uma implementação de código aberto do Tailscale

Há alguns dias, falamos aqui no blog sobre o Firezone, que é um excelente utilitário para criar servidores VPN baseados em WireGuard.

E agora, nesta ocasião, falaremos sobre um utilitário muito semelhante chamado "Headscale", que é um projeto desenvolvido como uma implementação de código aberto do componente de servidor VPN Tailscale , permitindo que você crie VPNs semelhantes ao Tailscale em suas próprias instalações, sem estar vinculado a serviços de terceiros.

O Tailscale permite combinar um número arbitrário de hosts geograficamente dispersos em uma rede , construída à imagem de uma rede mesh, na qual cada nó se comunica com outros nós diretamente (P2P) ou através de nós vizinhos, sem transmitir tráfego por meio de servidores externos centralizados do provedor de VPN.

Além de suportar roteamento baseado em ACL e controle de acesso , e permitir o estabelecimento de canais de comunicação sob condições de uso de Network Address Translation (NAT), o sistema suporta os mecanismos STUN, ICE e DERP (análogos ao TURN, mas baseados em HTTPS). Se o canal de comunicação entre determinados nós for bloqueado, a rede pode redirecionar o tráfego por meio de outros nós.

O Tailscale difere do projeto Nebula , que também foi projetado para criar redes VPN distribuídas com roteamento em malha, usando o protocolo Wireguard para organizar a transferência de dados entre os nós, enquanto o Nebula utiliza desenvolvimentos do projeto Tinc, que usa o algoritmo AES-256 para criptografar pacotes GSM (o Wireguard usa a criptografia ChaCha20, que em testes demonstra maior desempenho e capacidade de resposta).

Outro projeto similar, o Innernet, está sendo desenvolvido separadamente, no qual o protocolo Wireguard também é usado para troca de dados entre os nós. Ao contrário do Tailscale e do Nebula, o Innernet utiliza um sistema de separação de acesso diferente, baseado em ACLs; os rótulos não são vinculados a nós e sub-redes individuais para separar e isolar diferentes faixas de endereços IP, como nas redes de internet convencionais.

Além disso, Innernet usa Rust em vez de Go e vale a pena mencionar que Innernet 1.5 com suporte a NAT traversal aprimorado foi lançado alguns dias atrás. Existe também um projeto Netmaker, que permite conectar redes com diferentes topologias usando Wireguard, mas seu código é fornecido sob a SSPL (Server Side Public License), que não é aberto devido à presença de requisitos discriminatórios.

O Tailscale é distribuído usando um modelo freemium, oferecendo acesso gratuito para indivíduos e acesso pago para empresas e equipes. Os componentes do cliente Tailscale, com exceção dos aplicativos gráficos para Windows e macOS, são desenvolvidos como projetos de código aberto sob a licença BSD.

O software de servidor terceirizado da Tailscale, que autentica novos clientes , coordena o gerenciamento de chaves e organiza a comunicação entre os nós, é proprietário. O projeto Headscale resolve esse problema e fornece uma implementação de código aberto independente dos componentes do servidor Tailscale.

O Headscale assume as funções de troca de chaves públicas entre os nós e também realiza as operações de atribuição de endereços IP e distribuição de tabelas de roteamento entre os nós.

Em sua forma atual, o Headscale implementa todos os recursos principais de um servidor de gerenciamento, com exceção do suporte para MagicDNS e Smart DNS. Especificamente, ele suporta o registro de nós (inclusive via web), a adaptação da rede para adicionar ou remover nós, a criação de sub-redes usando namespaces (permitindo a criação de uma VPN para múltiplos usuários), a organização do acesso compartilhado de nós a sub-redes em diferentes namespaces, o controle de roteamento (incluindo a atribuição de nós de saída para acessar o mundo externo), o acesso compartilhado via ACLs e a execução de DNS.

O código Headscale é escrito em Go e é distribuído sob a licença BSD. O projeto está sendo desenvolvido por Juan Font da Agência Espacial Europeia.

Por fim, se tiver interesse em saber mais, você pode encontrar os detalhes no seguinte link.


Adicionar como fonte preferencial no Google