En el mundo de las redes privadas virtuales (VPN), Tinc destaca por ofrecer una solución de mesh P2P ligera y flexible que permite conectar múltiples equipos a través de diversos entornos de red, formando una red virtual LAN.
Al igual que OpenVPN o Wireguard, Tinc permite crear túneles cifrados y atravesar entornos NAT, pero su diseño orientado a redes en malla lo convierte en una opción resiliente y adaptable, ideal para conexiones inestables o de baja calidad.
En este artículo, exploraremos las ventajas de usar Tinc, cómo instalarlo en Linux y cómo configurar una red mesh básica.
¿Por Qué Elegir Tinc sobre Wireguard y OpenVPN?
Tinc posee características únicas que lo diferencian de otros daemon de VPN:
Diseño en Malla
A diferencia de Wireguard, Tinc está diseñado para formar redes en malla. Esto significa que puede adaptarse fácilmente a cambios en las condiciones de la red, estableciendo conexiones P2P de forma automática mediante descubrimiento de pares o coordinación con servidores públicos Tinc. Esto no solo hace a Tinc más resistente ante conexiones inestables, sino que también mejora la velocidad y la capacidad de respuesta de la red.
Funciones Tradicionales de VPN
Al igual que OpenVPN, Tinc permite atravesar entornos NAT, crear túneles cifrados y conectar aplicaciones que operan únicamente en redes locales.
En definitiva, Tinc combina lo mejor de ambos mundos: la flexibilidad y eficiencia de una red en malla junto con las características esenciales de seguridad y cifrado de una VPN tradicional.
Instalación de Tinc en Linux
Antes de comenzar, es importante actualizar tu sistema. En Ubuntu, puedes hacerlo con:
sudo apt update && sudo apt upgrade -y
Instalación en Ubuntu/Debian
Instala Tinc directamente desde los repositorios:
sudo apt install tinc
Instalación en Fedora
En Fedora, utiliza:
sudo dnf install tinc
Para confirmar que Tinc se ha instalado correctamente, ejecuta:
tincd --version
Creando una Red Mesh Básica con Tinc
Una vez instalado Tinc, el siguiente paso es configurar tu primer nodo en la red mesh. Supongamos que queremos crear una red llamada mynetwork.
Configuración del Nodo Principal
Debes seguir los siguientes pasos para conseguir configurar el nodo sin problemas.
1. Crear la estructura de directorios
Crea un nuevo directorio en /etc/tinc para almacenar la configuración de la red y los archivos de host:
sudo mkdir -p /etc/tinc/mynetwork/hosts
2. Configurar el archivo principal
Crea el archivo de configuración tinc.conf para tu nodo:
sudo nano /etc/tinc/mynetwork/tinc.conf
Añade el siguiente contenido:
Name = mynode
Device = /dev/net/tun
Nota: Algunos sistemas pueden ubicar el dispositivo TUN en una ruta distinta. Para verificar su ubicación, ejecuta:
find /dev -name *tun* -type c
3. Configurar el archivo de host
Crea un archivo en la carpeta hosts con el nombre de tu nodo, por ejemplo, mynode:
sudo nano /etc/tinc/mynetwork/hosts/mynode
Añade la siguiente configuración:
Subnet = 192.168.11.1/32
Address = TU-IP-DE-MÁQUINA-AQUÍ
Port = 655
Reemplaza TU-IP-DE-MÁQUINA-AQUÍ por la dirección IP de tu máquina. Si deseas que la VPN sea accesible públicamente, utiliza la IP pública.
4. Crear los scripts de conexión
Crea los scripts tinc-up y tinc-down en el directorio /etc/tinc/mynetwork para configurar y desactivar la interfaz virtual.
sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}
Edita el archivo tinc-up:
sudo nano /etc/tinc/mynetwork/tinc-up
Inserta el siguiente código:
#!/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
Ahora edita el archivo tinc-down:
sudo nano /etc/tinc/mynetwork/tinc-down
Y añade:
#!/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
5. Generar el par de claves:
Finalmente, genera un par de claves (privada y pública) para tu nodo:
sudo tincd -n mynetwork --generate-keys=4096
Presiona Enter dos veces para aceptar la ubicación predeterminada de guardado.
Agregar el Primer Cliente Tinc
Para ampliar la red, debes agregar al menos un cliente adicional.
Configuración en la Segunda Máquina (Cliente)
1. Instala Tinc y crea la estructura de directorios:
sudo apt install tinc
sudo mkdir -p /etc/tinc/mynetwork/hosts
2. Configura el archivo tinc.conf:
sudo nano /etc/tinc/mynetwork/tinc.conf
Inserta:
Name = myclient
Device = /dev/net/tun
ConnectTo = mynode
3. Configura el archivo de host para el cliente:
Crea un archivo en /etc/tinc/mynetwork/hosts llamado myclient:
sudo nano /etc/tinc/mynetwork/hosts/myclient
Añade:
Subnet = 192.168.11.2/32
Port = 655
4. Crea los scripts tinc-up y tinc-down:
sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}
Edita tinc-up:
sudo nano /etc/tinc/mynetwork/tinc-up
Con el siguiente contenido:
#!/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
Y luego edita tinc-down:
sudo nano /etc/tinc/mynetwork/tinc-down
Inserta:
#!/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
5. Genera el par de claves en el cliente:
sudo tincd -n mynetwork --generate-keys=4096
Conectando los Nodos de la Red Mesh
Con ambos nodos configurados (el nodo principal y el cliente), es necesario intercambiar sus archivos de configuración de hosts para que se reconozcan mutuamente.
1. Transferencia desde el Nodo Principal al Cliente:
En el nodo principal, navega al directorio de hosts:
cd /etc/tinc/mynetwork/hosts
Copia el archivo del nodo (mynode) y transfiérelo al cliente mediante SCP:
scp ./mynode TU-IP-DEL-CLIENTE:~
2. Instala el archivo en el Cliente:
En la máquina cliente, copia el archivo transferido a la carpeta de hosts:
sudo cp ~/mynode /etc/tinc/mynetwork/hosts/
3. Transferencia desde el Cliente al Nodo Principal:
Del lado del cliente, transfiere su archivo de configuración (myclient) al nodo principal:
scp /etc/tinc/mynetwork/hosts/myclient TU-IP-DEL-NODO:~
4. Instala el archivo en el Nodo Principal:
En el nodo principal, copia el archivo recibido en la carpeta de hosts:
sudo cp ~/myclient /etc/tinc/mynetwork/hosts/
Ejecutando la Red Mesh Tinc
Una vez que ambos nodos han intercambiado la información de hosts, es momento de iniciar la red VPN.
1. Iniciar Tinc en ambos nodos:
Ejecuta el siguiente comando en cada máquina:
sudo tincd -n mynetwork
2. Verificar la Conectividad:
Para comprobar que ambos nodos están conectados, realiza un ping desde uno de ellos a la dirección asignada al otro, por ejemplo, desde el nodo principal:
ping -c 5 192.168.11.2
3. Habilitar Tinc en el Inicio del Sistema
Para que la VPN se inicie automáticamente en el arranque, habilita el servicio de Tinc:
sudo systemctl enable --now tinc@mynetwork.service
Conclusión
Crear una VPN mesh P2P con Tinc en Linux es una excelente forma de establecer una red privada, segura y altamente adaptable, perfecta para conectar equipos a través de diversos entornos de red.
Siguiendo estos pasos, podrás configurar tu propia red VPN que se autoajuste a las condiciones de la red, ofreciendo conexiones rápidas y resilientes.
Explorar y experimentar con Tinc es solo el comienzo de un apasionante mundo en el campo de la seguridad y la administración de redes. ¡Atrévete a crear tu propia VPN y lleva tu experiencia en redes al siguiente nivel!