Tailscale: Headscale – Ou como gerir Tailscale on-premise.

Olá a todos.

O post de hoje é sobre mais um elemento fundamental para quem faz as coisas on-premise ou em self host:  A gestão de vpn’s SaaS mas com o painel de controle alojado localmente.
Neste caso especifico, para a vpn SaaS da Tailscale, exploraremos o que é o Headscale, como ele funciona e por que nos poderá ser útil.

Nota do autor:

O Headscale é um projeto de opensource que permite aos utilizadores efetuarem self host de um painel de controle Tailscale.
A Tailscale por sua vez é uma VPN moderna que simplifica o acesso seguro a redes e serviços.

O que é Headscale?

headscale logo

Headscale é uma implementação self hosted do painel de controle para VPN’s Tailscale. É utilizado para criar redes virtuais que conectam dispositivos pela internet, sem exigir configurações complicadas ou conhecimentos avançados de administração de rede.

O Tailscale foi projetado para ser fácil de usar e fácil de implantar. É particularmente útil para equipes remotas que precisam de acesso seguro a recursos internos ou para indivíduos que desejam aceder sua rede doméstica de qualquer lugar do mundo. Nota porem que como tudo, a simplicidade em demasia, poderá levar a falta de cuidado na implementação do produto, portanto, CUIDADO COM O QUE FAZEM COM ISTO.

O Headscale utiliza o plano de controle do Tailscale e permite que os utilizadores o hospedem por conta própria, em vez de depender do serviço hospedado propriamente na Tailscale.
Isto dá nos um maior controle sobre nossa infraestrutura de rede e permite a utilizadores locais, quando permitidos para tal, sejam auto suficientes para formarem as suas próprias vpn’s, vpn groups e acessos. Um selfcare de gestão de grupo de vpn if you will.

Como funciona o Headscale?

O Headscale foi projetado para ser o mais simples possível. É um serviço independente executado em uma única máquina. Uma vez instalado, ele fornece uma interface web para gerir dispositivos e redes Tailscale.

Para usar o Headscale, em primeiro lugar teremos de o instalar em uma máquina conectada à internet. Pode ser num servidor em cloud, uma máquina virtual ou um servidor físico em sua casa ou escritório.
Nota: No meu caso, e tendo em conta que tenho varias pessoas a consumir este serviço, cada um dos grupos tem uma vlan atribuída, interface dedicada na firewall e completamente segregada. A ideia é se o pior acontecer dentro da sua própria vpn, o dano será contido dentro da mesma.

Depois do serviço instalado, teremos de criar uma chave de API no site Tailscale. Esta chave de API é usada para autenticar na nossa instância Headscale com o plano de controle Tailscale. Em seguida, inserimos essa chave de API na interface da Web Headscale, que vincula a nossa instância Headscale ao plano de controle Tailscale. Simples.

A partir desse momento, podemos criar redes Tailscale e adicionar dispositivos a essas redes. Podemos também gerir em termos de controle de acesso, configurar regras de firewall dentro da própria vpn e monitorizar o tráfego de rede.

Por que usar o Headscale?

Existem várias razões pelas quais podemos querer usar o Headscale.

  • Privacidade e segurança
    Ao hospedar nós mesmo o plano de controle Tailscale, nós temos maior controle sobre sua infraestrutura de rede. Isso poderá ser particularmente útil se nós estivermos preocupados com privacidade ou segurança.
    Ao usar o serviço hospedado da Tailscale, nós estamos a confiar a eles o controle do nosso tráfego de rede vpn. Embora o Tailscale seja projetado para ser seguro, alguns utilizadores podem preferir hospedar o plano de controle para reduzir o risco de acesso de terceiros aos seus dados.
  • Economia de custos
    O serviço hospedado da Tailscale não é gratuito. Embora exista um nível gratuito que permite até 100 dispositivos, organizações maiores podem precisar pagar por dispositivos ou recursos adicionais.
    Hospedando nós mesmo o plano de controle Tailscale, nós poderemos evitar estes custos. Embora possam haver alguns custos iniciais associados à configuração e manutenção de nossa própria infraestrutura, isto pode se revelar mais econômico a longo prazo.
  • Flexibilidade
    Quando nós hospedamos o plano de controle Tailscale, nós temos maior flexibilidade em como configurar a nossa infraestrutura de rede. Nós podemos personalizar as regras de firewall, configurar o controle de acesso e monitorizar o tráfego de formas que não são possíveis com o serviço hospedado da Tailscale.
    Isto é particularmente útil para organizações maiores que precisam gerir várias redes vpn simultaneamente ou têm requisitos de segurança complexos.
    Outra função extremamente interessante é para grupos de trabalho de escola/faculdade onde os elementos necessitam de rapidamente estabelecer uma comunicação encriptada e segura, ponto a ponto com os outros elementos, com a vantagem de poderem ser eles a estabelecer a conectividade sem necessidade da intervenção de terceiros.
  • Confiabilidade
    Ao hospedar nós mesmo o plano de controle Tailscale, nós temos sobretudo maior controle sobre o tempo de atividade e a confiabilidade do que está la dentro. Embora o serviço hospedado da Tailscale seja projetado para ser altamente disponível, sempre há o risco de tempo de inatividade ou interrupções do serviço.
    Hospedando nós mesmo o plano de controle, nós podemos ainda garantir que a infraestrutura de vpn self managed de rede esteja sempre disponível quando quem consome o serviço precisar.

Como começar:

Para começar a usar o Headscale, nós iremos ter de cumprir algumas etapas:

  • Escolham uma máquina para hospedar Headscale.
    O primeiro passo é escolher uma máquina para hospedar o Headscale. Esta máquina deve estar conectada à Internet e ter um endereço IP acessível publicamente.
    É possivel utilizar um servidor em cloud, uma máquina virtual ou um servidor físico em nossa casa ou homelab. Os requisitos para a máquina são relativamente modestos – o Headscale pode ser executado num Raspberry Pi ou dispositivo similar.
  • Instalem e configurem o Headscale
    Depois de escolher uma máquina para hospedar o Headscale, nós precisaremos de instalar e configurar o software. O Headscale está disponível como um container do Docker, portanto, precisaremos de ter o Docker instalado na nossa máquina.

Para instalar efetuar o seguinte comando:

docker run --privileged -d \
--name=escala de cabeça \
-v /etc/headscale:/etc/headscale \
-v /var/run/wireguard:/var/run/wireguard \
-p 8080:8080 \
headscale/headscale -advertise-route=<nosso IP público>

Este comando iniciará o container Headscale e exporá a interface da web na porta 8080. Nós deveremos substituir `<nosso IP público>` pelo endereço IP público de nossa máquina.

Headscale: Awesome Self-Hosted Tailscale Control Server - Virtualization Howto

Assim que o Headscale estiver em execução, nós precisaremos de configurá-lo criando um file de configuração em `/etc/headscale/headscale.conf`. Nós podemos encontrar instruções para configurar o Headscale na página GitHub do projeto.
Não esquecer que é possível proteger este serviço por detrás de um reverse proxy, coisa que recomendo vivamente.

Vinculem á instancia.

Assim que o Headscale estiver instalado e configurado, nós precisaremos de vinculá-lo ao Tailscale. Para fazer isso, nós teremos de criar uma chave de API no site Tailscale.

Depois de terem a vossa chave de API, nós deveremos inseri-la na interface da Web do Headscale. Isso vinculará a nossa nova instância Headscale ao plano de controle Tailscale e nos permitirá criar redes Tailscale e adicionar dispositivos a essas redes.

Criem redes Tailscale e adicionem dispositivos

Depois que o Headscale estiver vinculado ao Tailscale, nós poderemos então começar a criar redes Tailscale e adicionar dispositivos a estas novas redes. Nós deveremos fazer para tal utilizando a interface da Web Headscale.

Finalmente, para criar uma rede, nós precisaremos de dar um nome a ela e escolher uma sub-rede. Poderemos então adicionar dispositivos à rede partilhando o nome da nossa recém-criada rede com outros utilizadores Tailscale.

Depois que um dispositivo é adicionado a uma rede, ele poderá se comunicar com segurança com outros dispositivos nessa rede, mesmo que estejam localizados em redes diferentes ou protegidos por firewalls.

Conclusão

Headscale é uma ferramenta poderosa que permite aos utilizadores selfhosted e on-premise configurar o plano de controle Tailscale. Hospedando nós mesmo o plano de controle, nós passaremos a ter maior controle sobre a nossa infraestrutura de rede o que nos dará a capacidade de personalizar as regras de firewall, configurar o controle de acesso e monitorizar o tráfego de formas que não são possíveis com o serviço hospedado da Tailscale.

Embora configurar e manter nossa própria infraestrutura possa ser mais trabalhoso 🙂 será garantidamente mais econômico a longo prazo, principalmente para organizações maiores com requisitos de rede complexos.

Se estiverem interessado em experimentar o Headscale, poderá encontrar mais informações e instruções na página GitHub do projeto.

Até ao próximo post, e já sabem se notarem alguma coisa menos correcta, sabem onde me encontrar.
Um abraço
Nuno