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

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.

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.

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 -yDescarga e instala Tinc directamente desde los repositorios de paquetes de Ubuntu:
sudo apt install tinc
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.

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

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/hostsCrea un nuevo archivo de configuración utilizando tu editor de texto favorito:
sudonano/etc/tinc/mynetwork/tinc.confPega el siguiente bloque de código dentro de tu nuevo archivo de configuración:
Name = mynode
Device = /dev/net/tunNota: 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 cCrea 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 = 655Reemplaza el valor de la variable “Address” con la dirección IP de tu máquina. Puedes encontrar esto ejecutando ip addr.

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 $INTERFACEGuarda 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
Genera un par de claves para tu nodo Tinc ejecutando tincd:
sudo tincd -n mynetwork --generate-keys=4096Presiona Enter dos veces para aceptar la ubicación de guardado predeterminada tanto para las claves privadas como públicas en tu nodo Tinc.

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.

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.confPega 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 = mynodeCrea 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/myclientPega 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 = 655Guarda 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 $INTERFACEGuarda 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 downFinaliza la configuración de tu cliente Tinc generando su par de claves:
sudo tincd -n mynetwork --generate-keys=4096
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/hostsCopia 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:~
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 mynetworkConfirma que puedes comunicarte con tus nodos a través de la interfaz Tinc haciendo un simple ping:
ping-c5 192.168.11.2
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.