Como Criar uma VPN Mesh P2P Leve com Tinc

Uma renderização gráfica de uma nuvem com um cadeado embaixo dela.

Tinc é um adaptador de Rede Virtual Privada (VPN) de código aberto que fornece uma maneira simples de criar uma rede mesh privada ponto a ponto (P2P) em Linux, Windows e macOS. Semelhante ao OpenVPN e Wireguard, ele pode conectar vários computadores em diferentes topologias de rede em uma única LAN virtual. Aqui mostramos os benefícios de usar o Tinc e como instalar e criar uma rede mesh básica baseada em Tinc.

Por Que Usar Tinc em Vez de Wireguard e OpenVPN?

Um ponto de venda exclusivo do Tinc em relação a outros demons de VPN é que ele foi projetado para ser uma rede mesh. Isso significa que, ao contrário do Wireguard, ele pode se adaptar facilmente a mudanças nas condições da rede. Isso o torna mais resiliente, especialmente para computadores com uma conexão de rede deficiente.

Um terminal mostrando a medição de desempenho do Tinc no Ubuntu.

Além disso, o Tinc desfruta da maioria dos recursos que você esperaria de uma VPN tradicional, como OpenVPN. Isso inclui a capacidade de atravessar ambientes NAT, criar túneis criptografados e conectar aplicativos apenas LAN.

Um terminal mostrando o desempenho de ping do Tinc no Debian.

Por fim, o Tinc também se esforça para tornar cada conexão que você faz dentro da rede P2P. Isso pode ser feito por meio de descoberta automática de pares ou coordenando com um servidor Tinc acessível publicamente. Como resultado, as conexões dentro de uma VPN Tinc não são apenas resilientes, mas também rápidas e responsivas.

Bom saber: ainda indeciso sobre qual VPN escolher? Confira nosso artigo onde analisamos como o Wireguard e o OpenVPN se comparam.

Instalando o Tinc no Linux

O primeiro passo para instalar o Tinc é garantir que seu sistema esteja atualizado. No Ubuntu, execute o seguinte comando:

sudo apt update && sudo apt upgrade -y

Baixe e instale o Tinc diretamente dos repositórios de pacotes do Ubuntu:

sudo apt install tinc

Um terminal mostrando o processo de instalação do pacote Tinc no Ubuntu.

Para instalar o Tinc em outras distribuições Linux, use o gerenciador de pacotes apropriado para esse sistema. Por exemplo, eu preciso executar sudo dnf install tinc para buscar o programa no Fedora.

Um terminal mostrando o processo de instalação no Fedora Linux.

Confirme que você instalou corretamente o Tinc abrindo uma sessão de terminal e executando tincd --version.

Um terminal mostrando a versão atual do Tinc rodando no Ubuntu.

Criando uma Rede Mesh Básica com Tinc

Com o Tinc em sua máquina, você agora pode configurar sua primeira rede baseada em Tinc. Crie uma nova pasta dentro de “/etc/tinc.” Esta pasta conterá todos os arquivos relacionados ao seu nó Tinc:

sudo mkdir -p /etc/tinc/mynetwork/hosts

Crie um novo arquivo de configuração usando seu editor de texto favorito:

sudo nano /etc/tinc/mynetwork/tinc.conf

Cole o seguinte bloco de código dentro do seu novo arquivo de configuração:

Name = mynode  
Device = /dev/net/tun

Nota: algumas distribuições Linux podem mudar a localização do adaptador tun dentro de “/dev.” Para encontrar seu caminho exato para seu sistema, execute:

find /dev -name '*tun*' -type c

Crie um arquivo de texto na pasta “hosts” com o nome do seu nó Tinc e cole o seguinte dentro dele:

Subnet = 192.168.11.1/32  
Address = SEU-ENDEREÇO-IP-DA-MÁQUINA-AQUI  
Port = 655

Substitua o valor da variável “Address” pelo endereço IP da sua máquina. Você pode encontrar isso executando ip addr.

Um terminal destacando o endereço IP privado da máquina Ubuntu.

Nota: você precisa fornecer o endereço IP público da sua máquina se quiser criar uma VPN acessível publicamente.

Salve o arquivo de hosts da sua máquina, então crie dois arquivos em “/etc/tinc/mynetwork:”

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Abra o arquivo “tinc-up” e cole o seguinte código Bash dentro dele. Isso cria a interface de rede virtual para o Tinc e atribui o endereço IP a essa interface:

#!/bin/sh  
  
ip link set $INTERFACE up  
ip addr add 192.168.11.1/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Salve o arquivo, em seguida, abra o arquivo “tinc-down” e cole o seguinte dentro dele também. Isso faz o inverso de “tinc-up:” desatribui o endereço IP de sua interface Tinc e remove essa interface de sua máquina:

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.1/32 dev $INTERFACE  
ip link set $INTERFACE down

Um terminal mostrando o conteúdo do script tinc-down no Ubuntu.

Gere uma chave para o seu nó Tinc executando tincd:

sudo tincd -n mynetwork --generate-keys=4096

Pressione Enter duas vezes para aceitar o local de salvamento padrão para ambas as chaves privada e pública em seu nó Tinc.

Um terminal mostrando o processo de geração de chave para Tinc no Ubuntu.

Adicionando o Primeiro Cliente Tinc

Para adicionar um novo cliente Tinc, comece garantindo que você instalou o Tinc corretamente em sua segunda máquina.

Um terminal mostrando a versão do Tinc no Debian.

Crie a estrutura de diretórios para sua configuração Tinc usando mkdir -p.

Use seu editor de texto favorito para criar o arquivo de configuração para seu cliente Tinc:

sudo nano /etc/tinc/mynetwork/tinc.conf

Cole as seguintes linhas de código dentro do arquivo de configuração da sua segunda máquina:

Name = myclient  
Device = /dev/net/tun  
ConnectTo = mynode

Crie um arquivo com o nome da sua máquina Tinc na pasta “/etc/tinc/mynetwork/hosts.” Neste caso, eu nomeei minha segunda máquina como “myclient,” então criarei um arquivo com o nome “myclient:”

sudo nano /etc/tinc/mynetwork/hosts/myclient

Cole o seguinte bloco de código dentro do seu novo arquivo de hosts. Semelhante ao seu primeiro nó, isso dita a configuração de rede do seu daemon Tinc:

Subnet = 192.168.11.2/32  
Port = 655

Salve seu novo arquivo de hosts, então crie um script “tinc-up” e “tinc-down” em sua segunda máquina:

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Abra o arquivo tinc-up usando seu editor de texto favorito, depois cole o seguinte bloco de código dentro dele:

#!/bin/sh  
ip link set $INTERFACE up  
ip addr add 192.168.11.2/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Salve seu arquivo tinc-up, depois abra o tinc-down e cole as seguintes linhas de código dentro dele também:

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.2/32 dev $INTERFACE  
ip link set $INTERFACE down

Finalize sua configuração do cliente Tinc gerando seu par de chaves:

sudo tincd -n mynetwork --generate-keys=4096

Um terminal mostrando o processo de geração de chave para Tinc na segunda máquina.

Executando a Rede Mesh do Tinc

Neste ponto, você agora tem dois demons Tinc configurados corretamente. No entanto, você ainda precisa vincular esses dois demons Tinc para criar sua VPN P2P no Linux. Para isso, você precisa copiar o arquivo de configuração de hosts do seu nó Tinc para o seu cliente e vice-versa.

Comece abrindo a sessão de terminal do seu nó e navegando até seu diretório “/etc/tinc/mynetwork/hosts”:

cd /etc/tinc/mynetwork/hosts

Copie o arquivo de configuração dentro deste diretório e transfira-o para seu cliente. No meu caso, usarei scp para enviar este arquivo através do ssh:

scp ./mynode SEU-ENDEREÇO-IP-DO-CLIENTE:~

Um terminal mostrando o processo de transferência da configuração do cliente Tinc de um sistema para outro.

Nota: Embora eu tenha usado scp neste exemplo, você também pode transferi-los manualmente usando pen drives.

Vá até sua máquina cliente e copie o arquivo de hosts que você acabou de transferir para a pasta “/etc/tinc/mynetwork/hosts” do cliente:

sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/

Depois disso, execute scp no lado da máquina cliente para transferir seu arquivo de hosts de volta ao seu nó:

scp /etc/tinc/mynetwork/hosts/myclient SEU-ENDEREÇO-IP-DO-NÓ:~

Copie o arquivo de hosts do seu cliente para o diretório de hosts do seu nó:

sudo cp ~/myclient /etc/tinc/mynetwork/hosts/

Como observação: preocupado com sua privacidade pessoal na internet? Descubra como você pode melhorar a privacidade e a segurança do seu PC Linux.

Iniciando a Rede Mesh do Tinc

Inicie sua rede Tinc totalmente configurada executando o seguinte comando em cada um de seus hosts:

sudo tincd -n mynetwork

Confirme que você consegue se comunicar com seus nós através da interface Tinc fazendo um simples ping:

ping -c 5 192.168.11.2

Um terminal mostrando a latência da VPN Tinc, bem como o dispositivo de rede executando no Ubuntu.

Por fim, ative o serviço Tinc para garantir que sua VPN funcionará no início do sistema:

sudo systemctl enable --now [email protected]

Aprender como criar sua própria VPN mesh P2P no Linux com Tinc é apenas o primeiro passo para explorar este maravilhoso mundo de redes de computadores. Mergulhe nas complexidades dessa tecnologia conferindo nossa visão abrangente sobre VPNs.

Crédito da imagem: Growtika via Unsplash. Todas as alterações e capturas de tela por Ramces Red.