Como Criar uma VPN Mesh P2P Leve com Tinc

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.

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.

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 -yBaixe e instale o Tinc diretamente dos repositórios de pacotes do Ubuntu:
sudo apt install tinc
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.

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

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/hostsCrie um novo arquivo de configuração usando seu editor de texto favorito:
sudo nano /etc/tinc/mynetwork/tinc.confCole o seguinte bloco de código dentro do seu novo arquivo de configuração:
Name = mynode
Device = /dev/net/tunNota: 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 cCrie 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 = 655Substitua o valor da variável “Address” pelo endereço IP da sua máquina. Você pode encontrar isso executando ip addr.

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 $INTERFACESalve 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
Gere uma chave para o seu nó Tinc executando tincd:
sudo tincd -n mynetwork --generate-keys=4096Pressione Enter duas vezes para aceitar o local de salvamento padrão para ambas as chaves privada e pública em seu nó Tinc.

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

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.confCole as seguintes linhas de código dentro do arquivo de configuração da sua segunda máquina:
Name = myclient
Device = /dev/net/tun
ConnectTo = mynodeCrie 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/myclientCole 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 = 655Salve 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 $INTERFACESalve 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 downFinalize sua configuração do cliente Tinc gerando seu par de chaves:
sudo tincd -n mynetwork --generate-keys=4096
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/hostsCopie 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:~
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 mynetworkConfirme 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
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.