Come Creare una VPN Mesh P2P Leggera con Tinc

Una grafica che rappresenta una nuvola con un lucchetto sottostante.

Tinc è un adattatore di rete privata virtuale (VPN) open-source che offre un modo semplice per creare una rete mesh privata peer-to-peer (P2P) su Linux, Windows e macOS. Simile a OpenVPN e Wireguard, può collegare più computer attraverso diverse topologie di rete in una singola LAN virtuale. Qui mostriamo i vantaggi di utilizzare Tinc e come installarlo e creare una semplice rete mesh basata su Tinc.

Perché Usare Tinc al Posto di Wireguard e OpenVPN?

Un punto di forza unico di Tinc rispetto ad altri demoni VPN è che è progettato per essere una rete mesh. Questo significa che, a differenza di Wireguard, può facilmente adattarsi ai cambiamenti nelle condizioni di rete. Questo lo rende più resistente, specialmente per i computer con una connessione di rete scarso.

Un terminale che mostra la misurazione delle prestazioni di Tinc su Ubuntu.

A parte questo, Tinc gode della maggior parte delle funzionalità che ci si aspetterebbe da una VPN tradizionale come OpenVPN. Ciò include la capacità di attraversare ambienti NAT, creare tunnel crittografati e collegare applicazioni solo LAN.

Un terminale che mostra le prestazioni del ping di Tinc su Debian.

Infine, Tinc si sforza anche di rendere ogni connessione che fai all’interno della rete P2P. Questo potrebbe avvenire tramite scoperta automatica dei peer o coordinandosi con un server Tinc accessibile pubblicamente. Di conseguenza, le connessioni all’interno di una VPN Tinc non sono solo resistenti ma anche veloci e reattive.

Buono a sapersi: sei ancora indeciso su quale VPN scegliere? Dai un’occhiata al nostro articolo in cui confrontiamo Wireguard e OpenVPN tra loro.

Installare Tinc su Linux

Il primo passo per installare Tinc è assicurarti che il tuo sistema sia aggiornato. Su Ubuntu, esegui il seguente comando:

sudo apt update && sudo apt upgrade -y

Scarica e installa Tinc direttamente dai repository di pacchetti di Ubuntu:

sudo apt install tinc

Un terminale che mostra il processo di installazione del pacchetto per Tinc in Ubuntu.

Per installare Tinc su altre distribuzioni Linux, utilizza il gestore di pacchetti appropriato per quel sistema. Ad esempio, devo eseguire sudo dnf install tinc per scaricare il programma su Fedora.

Un terminale che mostra il processo di installazione in Fedora Linux.

Conferma di aver installato correttamente Tinc aprendo una sessione del terminale e eseguendo tincd --version.

Un terminale che mostra la versione corrente di Tinc in esecuzione su Ubuntu.

Creare una Rete Mesh di Base con Tinc

Con Tinc sulla tua macchina, puoi ora configurare la tua prima rete basata su Tinc. Crea una nuova cartella all’interno di “/etc/tinc.” Questa conterrà tutti i file relativi al tuo nodo Tinc:

sudo mkdir -p /etc/tinc/mynetwork/hosts

Crea un nuovo file di configurazione utilizzando il tuo editor di testo preferito:

sudo nano /etc/tinc/mynetwork/tinc.conf

Incolla il seguente blocco di codice nel tuo nuovo file di configurazione:

Name = mynode  
Device = /dev/net/tun

Nota: alcune distribuzioni Linux potrebbero cambiare la posizione dell’adattatore tun all’interno di “/dev.” Per trovare il suo percorso esatto per il tuo sistema, esegui:

find /dev -name *tun* -type c

Crea un file di testo all’interno della cartella “hosts” con il nome del tuo nodo Tinc e incolla il seguente dentro:

Subnet = 192.168.11.1/32  
Address = TUO-INDIRIZZO-IP-MACCHINA-QUI  
Port = 655

Sostituisci il valore della variabile “Address” con l’indirizzo IP della tua macchina. Puoi trovarlo eseguendo ip addr.

Un terminale che evidenzia l'indirizzo IP privato della macchina Ubuntu.

Nota: devi fornire l’indirizzo IP pubblico della tua macchina se desideri creare una VPN accessibile pubblicamente.

Salva il file hosts della tua macchina, quindi crea due file sotto “/etc/tinc/mynetwork:”

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Apri il file “tinc-up” e incolla il seguente codice Bash all’interno. Questo crea l’interfaccia di rete virtuale per Tinc e assegna l’indirizzo IP a tale interfaccia:

#!/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

Salva il file, poi apri il file “tinc-down” e incolla anche qui il seguente:

#!/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

Un terminale che mostra il contenuto dello script tinc-down in Ubuntu.

Genera una coppia di chiavi per il tuo nodo Tinc eseguendo tincd:

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

Premi Invio due volte per accettare la posizione di salvataggio predefinita per entrambe le chiavi, privata e pubblica, sul tuo nodo Tinc.

Un terminale che mostra il processo di generazione della coppia di chiavi per Tinc su Ubuntu.

Aggiungere il Primo Client Tinc

Per aggiungere un nuovo client Tinc, inizia assicurandoti di aver installato correttamente Tinc sulla tua seconda macchina.

Un terminale che mostra la versione di Tinc su Debian.

Crea la struttura delle directory per la tua configurazione Tinc usando mkdir -p.

Usa il tuo editor di testo preferito per creare il file di configurazione per il tuo client Tinc:

sudo nano /etc/tinc/mynetwork/tinc.conf

Incolla le seguenti righe di codice nel file di configurazione della tua seconda macchina:

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

Crea un file con il nome della tua macchina Tinc sotto “/etc/tinc/mynetwork/hosts.” In questo caso, ho chiamato la mia seconda macchina “myclient,” quindi creerò un file con il nome “myclient:”

sudo nano /etc/tinc/mynetwork/hosts/myclient

Incolla il seguente blocco di codice nel tuo nuovo file hosts. Simile al tuo primo nodo, questo stabilisce la configurazione di rete del tuo demone Tinc:

Subnet = 192.168.11.2/32  
Port = 655

Salva il tuo nuovo file hosts, quindi crea uno script “tinc-up” e “tinc-down” sulla tua seconda macchina:

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Apri il file tinc-up usando il tuo editor di testo preferito, quindi incolla il seguente blocco di codice all’interno:

#!/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

Salva il tuo file tinc-up, quindi apri tinc-down e incolla anche qui le seguenti righe di codice:

#!/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

Completa la tua configurazione del client Tinc generando la sua coppia di chiavi:

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

Un terminale che mostra il processo di generazione della coppia di chiavi nella seconda macchina Tinc.

Eseguire la Rete Mesh Tinc

A questo punto, hai ora due demoni Tinc configurati correttamente. Tuttavia, devi ancora collegare questi due demoni Tinc per creare la tua VPN P2P in Linux. Per questo, devi copiare il file di configurazione hosts dal tuo nodo Tinc al tuo client e viceversa.

Inizia aprendo la sessione del terminale del tuo nodo e navigando nella sua directory “/etc/tinc/mynetwork/hosts”:

cd /etc/tinc/mynetwork/hosts

Copia il file di configurazione all’interno di questa directory e trasferiscilo al tuo client. Nel mio caso, userò scp per inviare questo file tramite ssh:

scp ./mynode TUO-INDIRIZZO-CLIENT-IP:~

Un terminale che mostra il processo di trasferimento della configurazione del client Tinc da un sistema a un altro.

Nota: mentre in questo esempio ho usato scp, puoi anche trasferirli manualmente utilizzando chiavette USB.

Vai alla tua macchina client e copia il file hosts che hai appena trasferito nella cartella “/etc/tinc/mynetwork/hosts” del client:

sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/

Dopo, esegui scp sul lato della macchina client per trasferire il suo file hosts indietro al tuo nodo:

scp /etc/tinc/mynetwork/hosts/myclient TUO-INDIRIZZO-NODO-IP:~

Copia il file hosts del tuo client nella directory hosts del tuo nodo:

sudo cp ~/myclient /etc/tinc/mynetwork/hosts/

Nota a margine: preoccupato per la tua privacy personale su internet? Scopri come puoi migliorare la privacy e la sicurezza del tuo PC Linux.

Avviare la Rete Mesh Tinc

Avvia la tua rete Tinc completamente configurata eseguendo il seguente comando su ciascuno dei tuoi host:

sudo tincd -n mynetwork

Conferma di essere in grado di comunicare con i tuoi nodi attraverso l’interfaccia Tinc facendo un semplice ping:

ping -c 5 192.168.11.2

Un terminale che mostra la latenza della VPN Tinc così come il dispositivo di rete in esecuzione su Ubuntu.

Infine, abilita il servizio Tinc per garantire che la tua VPN funzioni all’avvio del sistema:

sudo systemctl enable --now [email protected]

Imparare a creare la tua VPN mesh P2P in Linux con Tinc è solo il primo passo per esplorare questo meraviglioso mondo delle reti informatiche. Approfondisci le complessità di questa tecnologia consultando la nostra panoramica completa sulle VPN.

Crediti immagine: Growtika tramite Unsplash. Tutte le alterazioni e schermate di Ramces Red.