VPN Tinc · 13 min read · Dec 21, 2025
Instalando um VPN com Tinc no Ubuntu 16.04 LTS
Uma Rede Privada Virtual (VPN) é uma rede privada segura que opera sobre uma rede pública maior, como a internet. As VPNs se tornaram cada vez mais populares nos últimos anos, principalmente porque oferecem maior segurança e privacidade sem a necessidade de configurar hardware novo caro e complexo. Elas também oferecem várias outras vantagens, incluindo redução de custos de rede e suporte.
As VPNs funcionam criando um túnel criptografado através de uma rede pública e usando isso para enviar dados de forma segura entre servidores e terminais. Essas conexões podem ser criptografadas de várias maneiras, e existem muitos clientes e daemons de VPN diferentes para se adequar à sua arquitetura, orçamento e nível de experiência.
Tinc é uma dessas soluções (1). Um daemon de VPN de código aberto, agora está disponível para uma ampla gama de plataformas e tem várias vantagens sobre clientes de VPN semelhantes. Ele oferece criptografia segura e confiável, compressão opcional e é facilmente expansível à medida que sua rede cresce. O roteamento automático em malha total significa que o tráfego da VPN é sempre (sempre que possível) enviado diretamente para a máquina de destino, sem passar por transferências intermediárias, e isso melhora muito a segurança ao limitar a possibilidade de roubo de dados (3). Além disso, como a VPN Tinc aparece para o código de rede de nível IP como um dispositivo de rede normal, após configurar uma VPN Tinc, não há necessidade de adaptar o software existente. Isso torna a VPN Tinc inerentemente escalável.
O único problema menor com o Tinc é que algumas pessoas acharam um pouco complicado configurá-lo. Se isso soa como você, não tema – hoje eu vou te guiar por um caminho (mais ou menos) sem complicações para colocar uma VPN Tinc em funcionamento em seus servidores.
Pré-Requisitos
Para seguir este tutorial completamente, você precisará de pelo menos três servidores Ubuntu 16.04 e acesso root em cada máquina. Se você não tem isso ou não tem certeza do que isso significa, este tutorial não é para você – você deve primeiro verificar como configurar um servidor usando Ubuntu (2).
Se você está construindo um sistema de servidor do zero, primeiro precisa pensar em como suas máquinas vão se comunicar entre si. Neste tutorial, vou usar os nomes de variáveis que eu acho que a maioria das pessoas escolheria, mas esteja ciente de que você pode precisar adaptar alguns dos nomes de variáveis para se adequar à sua própria configuração.
Se você quiser seguir este tutorial exatamente, você precisará primeiro configurar dois VPSs no mesmo datacenter e depois fazer um terceiro VPS em um segundo datacenter. Meus datacenters são chamados NYC2, que tem os dois VPSs, e AMS2, que tem o terceiro. Esses VPSs são chamados da seguinte forma:
externalnyc – Todos os nossos nós de VPN vão se conectar a este servidor, o que significa que ele deve permanecer conectado e disponível para garantir que a rede funcione corretamente. Se você eventualmente quiser adicionar servidores extras à sua configuração, eles precisarão ser configurados da mesma forma que o externalnyc.
internalnyc – Este VPS se conecta ao nó VPN externalnyc usando uma interface de rede privada.
ams1 – Esta é nossa conexão VPN pública. Ela se conecta ao externalnyc usando a internet pública.
Objetivo
O que queremos alcançar é o seguinte:

Nossa rede privada é representada pela linha verde e conecta todos os três servidores. O laranja é nossa rede privada, ligando os dois servidores NYC2. Todos os três servidores podem se conectar através da VPN, embora a rede privada não seja acessível ao AMS1.
Para fazer isso, siga estes passos:
Instalar Tinc
Primeiro, precisamos instalar o Tinc. Como sempre, certifique-se de que todos os seus repositórios apt estão atualizados executando:
sudo apt-get updateEm seguida, instale o Tinc da maneira padrão através do apt:
sudo apt-get install tincE é isso! Sua máquina agora fará o download do Tinc, além de quaisquer pré-requisitos que você precise. Agora precisamos dar uma olhada na configuração.
Configuração
Configurar o Tinc pode ser um pouco diferente de outras VPNs que você está acostumado. Ele usa um “netname” para distinguir uma VPN de outra. Isso se torna muito útil quando você tem várias VPNs rodando através do Tinc, mas é um pouco contra-intuitivo no início. Como esta é nossa primeira rede Tinc, vamos mantê-la simples e chamar nossa VPN de “netname”.
Agora, para cada um de nossos servidores. Cada um precisará de três componentes de configuração:
Os arquivos de configuração: tinc.conf, tinc-up, tinc-down e um número opcional de outros arquivos.
Pares de chaves públicas e privadas: estas são para criptografia e autenticação.
Arquivos de configuração do host: Estes contêm chaves públicas e outros elementos de configuração da VPN.
Vamos agora configurar cada um de nossos servidores por sua vez. Primeiro, externalnyc.
Configurar externalnyc
OK, agora vamos ao que interessa. No externalnyc, comece criando a estrutura de diretórios de configuração para a VPN netname. Execute:
sudo mkdir -p /etc/tinc/netname/hostsAgora abra o tinc.conf no seu editor de texto escolhido:
sudo vi /etc/tinc/netname/tinc.confUma vez que você tenha o arquivo à sua frente, adicione o seguinte ao final do arquivo:
Name = externalnyc
AddressFamily = ipv4
Interface = tun0Tudo o que você está fazendo aqui é configurar um nó chamado externalnyc e informar ao servidor que sua interface de rede usará ipv4 e será chamada de “tun0”. Salve o arquivo e feche-o.
Em seguida, precisamos criar um arquivo de configuração de host para externalnyc. Para fazer isso, abra o arquivo de configuração de hosts em um editor de texto:
sudo vi /etc/tinc/netname/hosts/externalnycNovamente, adicione algumas linhas ao final deste arquivo, substituindo o endereço IP público do seu VPS na primeira linha:
Address = externalnyc_public_IP
Subnet = 10.0.0.1/32Este é o arquivo que outros servidores usarão para se conectar ao externalnyc. O endereço informa a outros nós como e onde se conectar a este servidor, e o endereço da sub-rede é a sub-rede na qual este daemon operará. Novamente, salve suas alterações neste arquivo e feche-o.
Agora precisamos gerar o par de chaves pública/privada para este host. Isso é fácil, basta executar:
sudo tincd -n netname -K4096Isso cria uma chave RSA privada e adiciona um par de chaves públicas ao final do arquivo de configuração que acabamos de criar. Você pode abri-lo novamente para ver que isso foi feito, se quiser.
Agora, precisamos fazer o tinc-up, um pequeno script que será executado quando nossa VPN for iniciada. Abra o seguinte arquivo para edição:
sudo vi /etc/tinc/netname/tinc-upE adicione:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0Sempre que a VPN netname for iniciada, este script será executado. Ele criará uma interface de rede a ser usada pela nossa VPN, e nesta VPN o externalnyc terá um IP de 10.0.0.1.
Mas quando a VPN for parada, queremos que esta interface de rede desapareça, então precisamos de mais um script. Isso deve ser adicionado ao tinc-down. Abra:
sudo vi /etc/tinc/netname/tinc-downE então adicione:
#!/bin/sh
ifconfig $INTERFACE downE novamente salve e saia. Agora temos nossos scripts, mas para que funcionem, eles precisam ser marcados como executáveis. Isso é fácil, usando a linha de comando:
sudo chmod 755 /etc/tinc/netname/tinc-*Salve e saia, e você terminou de configurar este servidor. Agora, internalnyc e ams1.
Configurar internalnyc e ams1
Para configurar os dois servidores restantes, você precisa executar os mesmos comandos em cada máquina. Existem algumas pequenas variações, que eu vou apontar, mas o processo é basicamente o mesmo.
Como fizemos com externalnyc acima, primeiro precisamos fazer a estrutura de diretórios para nossos arquivos de configuração. Em cada servidor, execute o seguinte e depois abra o arquivo de configuração do Tinc para edição:
sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.confEntão adicione algumas linhas ao final deste arquivo, substituindo “node_name” pelo nome de cada nó:
Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnycVocê pode ver que ambos os nossos servidores agora estão configurados para tentar se conectar ao externalnyc. Salve este arquivo e feche-o.
Agora precisamos fazer o arquivo de configuração de hosts. Execute:
sudo vi /etc/tinc/netname/hosts/node_nameEntão, para internalnyc, adicione esta linha:
Subnet = 10.0.0.2/32E para ams1, adicione esta linha:
Subnet = 10.0.0.3/32A única diferença aqui é que os endereços diferem, para que possamos distinguir nossos servidores. Salve este arquivo e feche-o.
Agora, assim como antes, precisamos gerar nossos pares de chaves pública/privada e criar o script de inicialização da interface de rede. Em cada servidor, execute:
sudo tincd -n netname -K4096E então:
sudo vi /etc/tinc/netname/tinc-upAgora, para cada servidor, precisamos usar os endereços que especificamos anteriormente. Se você está me seguindo precisamente, para internalnyc você precisa adicionar:
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0E para ams1:
ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0Mas, se você especificou endereços diferentes acima, altere-os aqui também. Salve esses arquivos e saia. Estamos quase lá.
Precisamos apenas fazer o script de parada da interface de rede, assim como antes:
sudo vi /etc/tinc/netname/tinc-downE então adicione esta linha em ambos os servidores:
ifconfig $INTERFACE downE a última parte da configuração é tornar nossos novos scripts executáveis:
sudo chmod 755 /etc/tinc/netname/tinc-*Salve e saia. Ufa. Se tudo correu bem, todos os três servidores agora estão configurados. Agora para implementar a criptografia.
Distribuindo Chaves
Se você já está usando um sistema de gerenciamento de configuração, você está com sorte. Em um mundo ideal, cada nó que agora criamos precisa ser capaz de se comunicar diretamente com outro nó usando uma interface de chave pública/privada. As chaves, como vimos acima, agora estão nos arquivos de configuração de hosts para cada servidor. Na rede simples que estamos criando aqui, na verdade, apenas o externalnyc precisa trocar chaves com os outros nós.
E assim, a maneira mais fácil de fazer isso é simplesmente copiar cada chave pública para todos os membros dos vários nós. Isso é realmente bem fácil, apenas tenha cuidado para mudar o valor “address” no arquivo de configuração do externalnyc para seu próprio endereço IP privado quando você copiá-lo. Dessa forma, a conexão será estabelecida pela rede privada.
Se você me seguiu e chamou sua VPN de “netname”, os arquivos de configuração de hosts estão aqui: /etc/tinc/netname/hosts
Trocar Chaves Entre externalnyc e internalnyc
Isso é direto. No internalnyc, encontre o arquivo de configuração de hosts e copie-o para o externalnyc:
scp /etc/tinc/netname/hosts/internalnyc user@externalnyc_private_IP:/tmpEntão, no externalnyc, copie o mesmo arquivo para o local correto:
cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .Agora fazemos o procedimento oposto. No externalnyc, copie o arquivo de configuração de hosts para internalnyc:
scp /etc/tinc/netname/hosts/externalnyc user@internalnyc_private_IP:/tmpE então, no internalnyc, copie o arquivo para que ele fique no lugar certo:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Agora precisamos editar o arquivo de configuração de hosts do externalnyc no internalnyc para que o endereço esteja correto. Isso é para que os nós se conectem à VPN através da rede privada. Então, no internalnyc, abra o arquivo de configuração de hosts para externalnyc:
sudo vi /etc/tinc/netname/hosts/externalnycE mude o valor do endereço para o endereço IP privado do externalnyc, assim:
Address = externalnyc_private_IPSalve o arquivo e saia. Essas duas chaves estão feitas. Agora só precisamos trocar chaves com nosso único nó restante.
Trocar Chaves Entre externalnyc e ams1
O processo aqui é bem semelhante. Usando ams1, copie o arquivo de configuração de hosts para externalnyc:
scp /etc/tinc/netname/hosts/ams1 user@externalnyc_public_IP:/tmpE então, novamente copie-o para o lugar certo, usando externalnyc:
cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .Permanecendo no externalnyc, copie o arquivo na outra direção, para ams1:
scp /etc/tinc/netname/hosts/externalnyc user@ams1_public_IP:/tmpE mais uma vez, no ams1, copie este arquivo para que ele fique no lugar certo:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .E você terminou a troca de chaves. Em teoria, você agora tem uma VPN funcionando e criptografada através do Tinc. Se você seguiu este tutorial à risca, pode passar para testar sua configuração. Se, no entanto, você também aproveitou a oportunidade para adicionar nós extras, agora é um bom momento para trocar todas as chaves que você precisará.
Lembre-se de que se você estiver usando um nó central, como estou fazendo aqui, não precisa copiar todas as chaves para todos os servidores. No entanto, se você quiser que os nós possam se comunicar diretamente entre si, eles precisarão trocar chaves. O processo para fazer isso é o mesmo que descrevi acima – basta fazer quantas iterações você precisar para alcançar a conectividade desejada.
Testando
Você deve agora estar pronto para testar. Para fazer isso, é uma boa ideia iniciar o Tinc em modo de depuração, para que possamos capturar quaisquer erros e obter mais informações se algo der errado. Lembre-se de que uma VPN mal configurada pode realmente ser um risco de segurança, então certifique-se de que tudo funcione corretamente antes de começar a usar sua VPN para qualquer coisa importante.
Para iniciar o Tinc em modo de depuração, em cada nó, começando com externalnyc, execute:
sudo tincd -n netname -D -d3Se você chamou sua VPN de algo diferente, claro, mude a variável “netname” para o nome apropriado.
Depois que o daemon iniciar em cada nó, ele deve retornar uma saída dando o nome de cada nó à medida que se conectam. Se isso não acontecer, você cometeu um erro em algum lugar.
Agora, podemos testar a VPN. Em uma nova janela no ams1, faça ping no internalnyc usando seu endereço IP. Nós atribuímos isso a 10.0.0.2 anteriormente, então digite:
ping 10.0.0.2Esperançosamente, seu ping funcionará. Você também deve ver algumas saídas de depuração nas outras janelas, descrevendo as conexões que você acabou de fazer. O ams1 agora está conectado, através da sua nova VPN, ao externalnyc, e pode se conectar ao internalnyc através dele. Pressione CTRL-C e o ping irá parar.
Agora que você tem uma conexão VPN segura, pode usá-la para qualquer outro tipo de comunicação de rede – conexões de aplicativo, cópia de arquivos, SSH ou qualquer outra coisa que você quiser.
Se seu ping não funcionou, mas você acha que fez tudo certo, pode ser que um firewall tenha atrapalhado. Verifique suas configurações de firewall e tente novamente.
Tinc na Inicialização
Apenas mais uma coisa. Se você agora vai usar sua VPN Tinc para toda a sua rede, pode querer configurá-la para iniciar na inicialização. Você precisará fazer isso em cada nó, editando o arquivo de configuração nets.boot. Abra o arquivo usando:
sudo vi /etc/tinc/nets.bootE então adicione o nome da sua nova VPN a este arquivo. Se você escolheu “netname” como eu, isso ficará assim:
# Este arquivo contém todos os nomes das redes a serem iniciadas na inicialização do sistema.
netnameSalve e saia, e você está feito. O Tinc agora está funcionando e será iniciado na inicialização. Parabéns.
Se você precisar controlar o Tinc, agora pode executar o comando “service” para fazê-lo. Em cada nó, basta executar:
sudo service tinc startE brinque um pouco. A maioria dos controles básicos pode ser alcançada através deste comando.
Conclusão
Você agora deve ter uma conexão VPN segura rodando através do Tinc em todas as suas máquinas. Esta VPN pode ser usada como base para construir mais funcionalidades de rede.
Se você quiser adicionar mais nós no futuro, ou combinar o Tinc com outras VPNs, o Tinc permitirá que você faça isso. O processo para cada nó extra é o mesmo que descrevi acima, e você deve ser capaz de ver facilmente quais variáveis e endereços precisam ser alterados. Apenas lembre-se de que se você quiser que os nós possam se conectar diretamente entre si, precisará trocar chaves diretamente entre eles. Assim, o Tinc opera como uma VPN em malha, que é um pouco mais segura do que minha abordagem. Caso contrário, você pode apenas configurar sua rede como eu fiz e ter tudo passando por um nó central.
De qualquer forma, agora você está livre para brincar. Boa sorte!
Recursos
(2) https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.