Accedi al tuo dispositivo IoT ovunque tu sia, con ZeroTier

“People use ZeroTier to seamlessly connect laptops, desktops, phones, embedded devices, cloud resources, and apps any way they want anywhere they go. Our software transforms the entire world into a single data center.”

Premetto che questo è un post abbastanza tecnico. Qui parliamo di VPN, tunneling, NAT e port forwarding. E di come certe volte sia necessario poter accedere da remoto a dispositivi che sono all’interno di reti private, come la rete WiFi casalinga o la LAN dell’ufficio.

Lavorando ad un mio progetto, basato su Raspberry Pi Zero W, ho avuto l’esigenza di potermi collegare via SSH al dispositivo, senza dover ogni volta impazzire con il cavo USB e il modulo RNDIS/cdc_ether. Qualcosa che, semplicemente attraverso la connessione alla rete WiFi più vicina disponibile, mi permettesse di arrivare via SSH al sistema del Rpi dal mio laptop.

Ci sono svariate possibilità per farlo: ad esempio, da casa, semplicemente effettuo una scansione con nmap -sP della mia rete locale e vedo quale IP il router ha assegnato al Rpi. Oppure uso semplicemente mDNS. Ma in reti più articolate, con una separazione tra la rete Wireless e la cablata (ad esempio) o con la separazione tra i dispositivi, una connessione diretta non sempre è possibile. Per questo sono stati realizzati dei servizi che offrono un tunnel, come ngrok, hamachi o zerotier, capace di bypassare anche i firewall aziendali.

Sia chiaro che per situazioni più mission critical, dove ad esempio sono in gioco dati riservati o apparecchiature particolari, non mi sognerei mai di affidarmi ad un servizio di terze parti: in questi casi conviene puntare su soluzioni VPN gestite interamente in-house.

Tuttavia, per le esigenze quotidiane di un normale cittadino smanettone, questi servizi sono più che adeguati.

Ero partito con l’intenzione di scrivere un post su ngrok ma poi mi hanno segnalato zerotier e, devo ammetterlo, mi ha impressionato più degli altri servizi, non solo per il codice del client disponibile liberamente su GitHub. Hanno inoltre realizzato il client anche per i NAS Synology, QNAP e Western Digital, oltre che per gli altri sistemi operativi più comuni.

La configurazione di una rete virtuale con ZeroTier non è così banale (ngrok, ad esempio, è più immediato) ma le potenzialità e la flessibilità che offre sono nettamente superiori.

In sostanza, con ZeroTier è possibile creare delle “reti virtuali” tra dispositivi (sia IPv4 che IPv6), indipendentemente dalla loro collocazione fisica, ad esempio smartphone connessi via HDSPA con server dietro firewall aziendali e PC casalinghi, dietro il NAT del router ADSL. Ognuno di questi dispositivi ha il suo indirizzo IP, raggiungibile da tutti gli altri, come se fossero tutti connessi al medesimo switch invece di essere, ad esempio, a km di distanza e su reti diverse.

Tralascio i dettagli tecnici poiché sono ben descritti nella documentazione del progetto, per passare direttamente a descrivere la parte di setup ed installazione, tutt’altro che banale.

Registrazione e creazione del network

Come prima cosa, registriamoci gratuitamente sul portale ZeroTier Central ed accediamo al pannello delle “Networks“.

l’ID della rete serve ad effettuare il “join” dei vari clients, quindi teniamolo a portata di mano.

Installazione sui clients

Adesso passiamo all’installazione di zerotier sui nostri clients. Su Raspbian, distro derivata da Debian dedicata a Raspberry Pi, l’installazione è davvero banale. Da terminale eseguiamo semplicemente:

curl -s https://install.zerotier.com/ | sudo bash

e dopo pochi minuti il pacchetto “zerotier-one” è installato e già eseguito, pronto ad essere connesso alla nostra rete con il comando:

sudo zerotier-cli join [networkID]

e con il comando:

sudo zerotier-cli status

verifichiamo lo stato della connessione (in questa fase un errore tipo “ACCESS_DENIED” è normale, poiché il client deve essere abilitato). Quando il client sarà collegato alla rete, la risposta è “ONLINE”:

Gestire la rete

Dal portale ZeroTier Central, sezione Networks, cliccando sulle proprietà della nostra rete si accede alle impostazioni ed all’elenco dei clients che si sono uniti a questa Network. Di default, e questo è importante, i client non sono abilitati: necessario, per poterli raggiungere, abilitarli esplicitamente cliccando sulla checkbox di sinistra.

Da notare che l’IP “locale” di ogni dispositivo è nella colonna “Managed IPs“, lo stesso IP che è impostato nell’interfaccia virtuale che viene creata dal client:

Da ogni client è possibile consultare lo stato dei vari peers con il comando:

sudo zerotier-cli listpeers

che risponde con l’elenco degli “host” nella rete virtuale ed i loro IP reali:

Conclusioni

Ovviamente ZeroTier offre molto di più di quanto ho appena descritto qui. Diciamo che, dopo aver perso qualche ora a capire come configurare il tutto, ho deciso di presentare questo interessante prodotto attraverso una veloce guida per il setup di una rete privata virtuale, la cui connessione è totalmente cifrata attraverso algoritmi come 256-bit Salsa20 e autenticato usando l’algoritmo Poly1305.

Dopo averci sbattuto la testa per qualche ora, leggendo la documentazione ed effettuando alcune prove, sono riuscito nel setup di una rete privata virtuale tra 4 host, di cui due dietro un NAT ed uno dietro ad un firewall: tutti perfettamente raggiungibili.

Se decidete di provare ZeroTier o se avete provato un prodotto simile e volete segnalarmi commenti, impressioni o altro, potete farlo aggiungendo un commento.

Hai trovato utile questo articolo?

Questo articolo è stato visto 1.095 volte (Oggi 1 visite)
3 comments
  1. Ma….. Se il dispositivo è per esempio una telecamera ip, come si fa ad aggiungerlo sulla. Rete virtuala

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.