Neste guia, você aprenderá a utilizar o Tailscale, um cliente VPN de fácil utilização, para se conectar à sua VPN headscale. O Tailscale está disponível para Linux, Windows, Android e Mac/iOS.
Como não iremos utilizar a rede padrão do Tailscale, é necessário modificar o endereço do servidor no cliente.
Índice
Requisitos
Possuir um servidor VPN Headscale configurado e rodando.
Headscale: Acessando o Servidor
Se seu servidor headscale foi instalado no fly.io execute o comando abaixo no diretório da sua aplicação
fly ssh console
Caso voce esteja usando ele uma vps com uma imagem docker o comando seria:
sudo docker exec -it nomedocontainer sh
Tailscale: Configurando no Linux
Para instalar o Tailscale no Linux, você pode seguir os seguintes passos:
Abra um terminal e execute o comando
curl -fsSL https://tailscale.com/install.sh | sh
Esse comando vai baixar e executar um script que vai adicionar o repositório do Tailscale, instalar a chave pública e instalar o pacote do Tailscale.
Execute o comando abaixo para se conectar ao seu servidor
sudo tailscale up --login-server https://seuheadscale.com
Siga as instruções na tela para se conectar. Digite o comando abaixo, substituindo <chave> pelo código gerado e <usuario> pelo nome de usuário que você escolheu para o dispositivo dentro do seu headscale server.
headscale --user nomedeusuario nodes register --key chave
Tailscale: Configurando no Windows
Uma maneira fácil de configurar no Windows é acessar o endereço do seu servidor seguido por /windows
Ex: https://seuheadscale.com/windows
Deve ser disponibilizado um arquivo .reg que, ao ser incorporado ao Registro do Windows, modificará o endereço para o seu servidor.
Reinicie o seu computador.
Depois de reiniciar, faça o download e a instalação do cliente Tailscale para Windows.
Clique no ícone do Tailscale e em Connect. Você deve se conectar à sua VPN com sucesso.
Configurando via PowerShell no Windows
Além das opções mencionadas para se conectar à nossa VPN headscale, podemos configurar manualmente:
Siga os passos abaixo para fazer isso:
- Abra o PowerShell como administrador. Para isso, digite powershell na caixa de pesquisa do Windows, clique com o botão direito no resultado e selecione Executar como administrador.
- Execute o seguinte comando, substituindo seuheadscale.com pelo endereço do seu servidor headscale:
\$url = https://seuheadscale.com
New-Item –Path "HKLM:\SOFTWARE" –Name "Tailscale IPN"
New-ItemProperty -path "HKLM:\SOFTWARE\Tailscale IPN" -name "UnattendedMode" -value "always" -propertytype "string"
New-ItemProperty -path "HKLM:\SOFTWARE\Tailscale IPN" -name "LoginURL" -value "\$url" -propertytype "string"
Tailscale: Configurando no Android
Faça o seguinte para configurar o Tailscale no seu celular:
- Instale o aplicativo do Tailscale na loja de aplicativos do seu celular.
- Abra o aplicativo e toque no ícone de três pontos no canto superior direito da tela três vezes. Toque na opção Change server e digite o endereço do seu servidor headscale. Toque em Save para salvar a alteração.
- Feche e reabra o aplicativo do Tailscale. Na tela principal, toque na opção Sign in with other. Você vai ver informações na tela que deve ser executadas no seu servidor headscale para registrar o seu celular na VPN.
- Copie o comando e execute-o no seu servidor headscale, substituindo <user> pelo nome de usuário que você criou no headscale para o seu celular.
Tailscale: Configuração no MacOS e iOS
Uma maneira fácil de configurar no MacOS é acessar o endereço do seu servidor seguido por /apple
Ex: https://meuheadscale.com/apple
segue um resumo do processo:
Versões Recentes do Tailscale (1.34.0 e superiores)
Configuração no macOS
Linha de Comando:
tailscale login --login-server https://seuheadscale.com
Interface Gráfica (GUI):
- ALT + Clique no ícone do Tailscale no menu.
- Em “Custom Login Server”, escolha “Add Account…”.
- Insira “https://seuheadscale.com” e pressione “Add Account”.
- Siga o procedimento de login no navegador.
Configurações da Apple (1.32.0 e inferiores)
Perfis para macOS:
- AppStore Client: curl https://seuheadscale.com/apple/macos-app-store
- Standalone Client: curl https://seuheadscale.com/apple/macos-standalone
Configuração Padrão via Terminal:
- AppStore Client: defaults write io.tailscale.ipn.macos ControlURL https://seuheadscale.com
- Standalone Client: defaults write io.tailscale.ipn.macsys ControlURL https://seuheadscale.com
Configuração no iOS
Versões Recentes do Tailscale (1.38.1 e superiores)
Configuração no iOS:
- Instale o Tailscale iOS na App Store.
- Abra Tailscale, vá para Configurações.
- Em “third party apps”, encontre Tailscale.
- Se conectado anteriormente, ative “Reset Keychain” e insira “https://seuheadscale.com” em “Alternate Coordination Server URL”.
- Reinicie o aplicativo, selecione o login regular (não SSO) e faça o login. Headscale deve funcionar no seu iOS.
Exit Node
Um exit node é um nó que permite que outros dispositivos na sua rede Headscale acessem a internet através dele, usando o seu endereço IP público. Isso pode ser útil para contornar restrições geográficas, proteger o seu tráfego em redes não confiáveis ou acessar recursos locais do nó. Para usar um exit node, você precisa configurá-lo no nó, no servidor de controle e no cliente.
Tanto no windows como no celular esse processo pode ser feito clicando em “exit node” no aplicativo do tailscale
No linux para o cliente tailscale use o comando abaixo:
sudo tailscale up --login-server https://seuheadscale.com --advertise-exit-node
Comando Úteis Servidor Headscale
headscale namespaces list
: lista todas as redes existentes no headscale.
headscale users create <nome do usuário>
: cria um novo usuário no headscale
headscale nodes list
: lista todos os dispositivos registrados na rede, mostrando seus nomes, IDs, IPs e status.
headscale nodes delete
: exclui um dispositivo da rede, removendo sua chave de autenticação.
headscale routes list
: lista todas as rotas habilitadas e desabilitadas para cada dispositivo na rede.
headscale routes enable -r 1
: habilita uma rota para um dispositivo na rede, permitindo que ele acesse um endereço ou uma sub-rede específica.
headscale routes disable
: desabilita uma rota para um dispositivo na rede, impedindo que ele acesse um endereço ou uma sub-rede específica.