Cómo crear una VPN de malla P2P ligera con Tinc

Un render gráfico de una nube con un candado debajo.

Tinc es un adaptador de Red Privada Virtual (VPN) de código abierto que proporciona una forma simple de crear una red de malla privada de igual a igual (P2P) en Linux, Windows y macOS. Al igual que OpenVPN y Wireguard, puede unir múltiples computadoras a través de diferentes topologías de red en una sola LAN virtual. Aquí te mostramos los beneficios de usar Tinc y cómo instalarlo y crear una red de malla simple basada en Tinc.

¿Por qué usar Tinc en lugar de Wireguard y OpenVPN?

Un punto de venta único de Tinc sobre otros demonios VPN es que está diseñado para ser una red de malla. Esto significa que, a diferencia de Wireguard, puede adaptarse fácilmente a los cambios en las condiciones de la red. Esto lo hace más resistente, especialmente para computadoras con una conexión de red deficiente.

Una terminal mostrando la medición de rendimiento de Tinc en Ubuntu.

Además de eso, Tinc disfruta de la mayoría de las características que esperarías de una VPN tradicional como OpenVPN. Esto incluye la capacidad de atravesar entornos NAT, crear túneles cifrados y enlazar aplicaciones solo de LAN.

Una terminal mostrando el rendimiento de ping de Tinc en Debian.

Por último, Tinc también se esfuerza por hacer que cada conexión que realices dentro de la red sea P2P. Esto podría ser a través del descubrimiento automático de pares o coordinando con un servidor Tinc accesible públicamente. Como resultado, las conexiones dentro de una VPN Tinc no solo son resistentes sino también rápidas y receptivas.

Bueno saber: ¿aún indeciso sobre qué VPN elegir? Consulta nuestro artículo donde comparamos Wireguard y OpenVPN.

Instalando Tinc en Linux

El primer paso para instalar Tinc es asegurarte de que tu sistema esté actualizado. En Ubuntu, ejecuta el siguiente comando:

sudo apt update &&sudo apt upgrade -y

Descarga e instala Tinc directamente desde los repositorios de paquetes de Ubuntu:

sudo apt install tinc

Una terminal mostrando el proceso de instalación del paquete Tinc en Ubuntu.

Para instalar Tinc en otras distribuciones de Linux, utiliza el gestor de paquetes apropiado para ese sistema. Por ejemplo, necesito ejecutar sudo dnf install tinc para obtener el programa en Fedora.

Una terminal mostrando el proceso de instalación en Fedora Linux.

Confirma que has instalado Tinc correctamente abriendo una sesión de terminal y ejecutando tincd --version.

Una terminal mostrando la versión actual de Tinc en Ubuntu.

Creando una red de malla básica con Tinc

Con Tinc en tu máquina, ahora puedes configurar tu primera red basada en Tinc. Crea una nueva carpeta dentro de “/etc/tinc.” Esta contendrá todos los archivos relacionados con tu nodo Tinc:

sudomkdir-p/etc/tinc/mynetwork/hosts

Crea un nuevo archivo de configuración utilizando tu editor de texto favorito:

sudonano/etc/tinc/mynetwork/tinc.conf

Pega el siguiente bloque de código dentro de tu nuevo archivo de configuración:

Name = mynode  
Device = /dev/net/tun

Nota: algunas distribuciones de Linux pueden cambiar la ubicación del adaptador tun dentro de “/dev.” Para encontrar su ruta exacta para tu sistema, ejecuta:

find/dev -name*tun*-type c

Crea un archivo de texto bajo la carpeta “hosts” con el nombre de tu nodo Tinc y pega lo siguiente dentro:

Subnet = 192.168.11.1/32  
Address = TU-DIRECCION-IP-DE-MAQUINA-AQUI  
Port = 655

Reemplaza el valor de la variable “Address” con la dirección IP de tu máquina. Puedes encontrar esto ejecutando ip addr.

Una terminal destacando la dirección IP privada de la máquina Ubuntu.

Nota: necesitas proporcionar la dirección IP pública de tu máquina si deseas crear una VPN accesible públicamente.

Guarda el archivo de hosts de tu máquina, luego crea dos archivos en “/etc/tinc/mynetwork:”

sudotouch/etc/tinc/mynetwork/tinc-{up,down}  
sudochmod +x /etc/tinc/mynetwork/tinc-(up,down}

Abre el archivo “tinc-up” y luego pega el siguiente código Bash dentro de él. Esto crea la interfaz de red virtual para Tinc y asigna la dirección IP a esa interfaz:

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

Guarda el archivo, luego abre el archivo “tinc-down” y pega lo siguiente dentro de él también. Esto hace lo contrario de “tinc-up:” quita la dirección IP de tu interfaz Tinc y remueve esa interfaz de tu 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 linkset$INTERFACE down

Una terminal mostrando el contenido del script tinc-down en Ubuntu.

Genera un par de claves para tu nodo Tinc ejecutando tincd:

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

Presiona Enter dos veces para aceptar la ubicación de guardado predeterminada tanto para las claves privadas como públicas en tu nodo Tinc.

Una terminal mostrando el proceso de generación de pares de claves para Tinc en Ubuntu.

Agregando el primer cliente Tinc

Para agregar un nuevo cliente Tinc, comienza asegurándote de que has instalado Tinc correctamente en tu segunda máquina.

Una terminal mostrando la versión de Tinc en Debian.

Crea la estructura de directorios para tu configuración de Tinc usando mkdir -p.

Utiliza tu editor de texto favorito para crear el archivo de configuración para tu cliente Tinc:

sudonano/etc/tinc/mynetwork/tinc.conf

Pega las siguientes líneas de código dentro del archivo de configuración de tu segunda máquina:

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

Crea un archivo con el nombre de tu máquina Tinc dentro de “/etc/tinc/mynetwork/hosts.” En este caso, he nombrado a mi segunda máquina como “myclient,” así que crearé un archivo con el nombre “myclient:”

sudonano/etc/tinc/mynetwork/hosts/myclient

Pega el siguiente bloque de código dentro de tu nuevo archivo de hosts. Similar a tu primer nodo, esto dicta la configuración de red de tu demonio Tinc:

Subnet = 192.168.11.2/32  
Port = 655

Guarda tu nuevo archivo de hosts, luego crea un script “tinc-up” y “tinc-down” en tu segunda máquina:

sudotouch/etc/tinc/mynetwork/tinc-{up,down}  
sudochmod +x /etc/tinc/mynetwork/tinc-{up,down}

Abre el archivo tinc-up usando tu editor de texto favorito, luego pega el siguiente bloque de código dentro de él:

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

Guarda tu archivo tinc-up, luego abre tinc-down y pega las siguientes líneas de código dentro de él también:

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

Finaliza la configuración de tu cliente Tinc generando su par de claves:

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

Una terminal mostrando el proceso de generación de pares de claves en la segunda máquina Tinc.

Ejecutando la red de malla Tinc

En este punto, ahora tienes dos demonios Tinc correctamente configurados. Sin embargo, aún necesitas vincular estos dos demonios Tinc para crear tu VPN P2P en Linux. Para ello, necesitas copiar el archivo de configuración de hosts de tu nodo Tinc a tu cliente y viceversa.

Comienza abriendo la sesión de terminal de tu nodo y navegando a su directorio “/etc/tinc/mynetwork/hosts”:

cd/etc/tinc/mynetwork/hosts

Copia el archivo de configuración dentro de este directorio y transfiérelo a tu cliente. En mi caso, usaré scp para enviar este archivo a través de ssh:

scp ./mynode TU-DIRECCION-IP-CLIENTE:~

Una terminal mostrando el proceso de transferencia del archivo de configuración del cliente Tinc de un sistema a otro.

Nota: Aunque he usado scp en este ejemplo, también puedes transferirlos manualmente usando unidades flash.

Ve a tu máquina cliente y copia el archivo de hosts que acabas de transferir a la carpeta “/etc/tinc/mynetwork/hosts” del cliente:

sudocp-v ~/mynode /etc/tinc/mynetwork/hosts/

Después de eso, ejecuta scp en el lado de la máquina cliente para transferir su archivo de hosts de vuelta a tu nodo:

scp/etc/tinc/mynetwork/hosts/myclient TU-DIRECCION-IP-NODO:~

Copia el archivo de hosts de tu cliente al directorio de hosts de tu nodo:

sudocp ~/myclient /etc/tinc/mynetwork/hosts/

En una nota al margen: ¿preocupado por tu privacidad personal en Internet? Aprende cómo puedes mejorar la privacidad y seguridad de tu PC Linux.

Iniciando la red de malla Tinc

Inicia tu red Tinc completamente configurada ejecutando el siguiente comando en cada uno de tus hosts:

sudo tincd -n mynetwork

Confirma que puedes comunicarte con tus nodos a través de la interfaz Tinc haciendo un simple ping:

ping-c5 192.168.11.2

Una terminal mostrando la latencia de la VPN Tinc así como el dispositivo de red en funcionamiento en Ubuntu.

Por último, habilita el servicio Tinc para asegurarte de que tu VPN funcionará al iniciar el sistema:

sudo systemctl enable--now [email protected]

Aprender a crear tu propia VPN de malla P2P en Linux con Tinc es solo el primer paso en la exploración de este maravilloso mundo de la red informática. Profundiza en las complejidades de esta tecnología consultando nuestra completa descripción general sobre VPNs.

Crédito de la imagen: Growtika a través de Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.