NetBird è una piattaforma open source progettata per creare reti private virtuali (VPN) sicure in modo estremamente semplice, che funziona su tutti i principali sistemi operativi (Windows, MacOS, Linux, Android e iOS) e può essere installato anche su Proxmox, TrueNas e OPNSense.

» Leggi: OPNsense: un firewall di ultima generazione virtualizzabile nel nostro host
Ciò che contraddistingue NetBird da una VPN tradizionale (attenzione a non confondere una VPN "normale" con una VPN anonimizzante!!!) è sicuramente la configurazione estremamente semplice, che vedremo in seguito più nel dettaglio e che non prevedere la configurazione di gateway, firewal o inoltro delle porte. Ma prima approfondiamo (solo un po') la parte tecnica che c'è dietro a NetBird.
NetBird utilizza, come base, l'efficiente e sicuro protocollo WireGuard e un architettura Mesh Peer-to-Peer, parolona che significa semplicemente che le connessioni tra diversi dispositivi anche sparsi per il mondo, normalmente, sono dirette, avvengono cioè come se fossero sulla stessa rete locale, senza dover passare da un unico server centrale. Grazie alla criptazione end-to-end propria di WireGuard, la connessione tra i dispositivi è anche privata e nemmeno gli amministratori di NetBird possono vedere il traffico generato dai i vari dispositivi connessi. Il sistema di accesso poi è Zero Trust, ovvero ogni dispositivo prima di comunicare con gli altri deve essere autenticato (non basta che sia connesso alla rete di NetBird) e il pannello di controllo consente una gestione centralizzata e granulare dei dispositivi; è possibile quindi decidere quanti e quali dispositivi autenticati possono connettersi con quanti e quali altri dispositivi autenticati.
NetBird può essere installato e gestito interamente (compresa la parte server!) dal nostro computer (sono richiesti solo un dominio pubblico e 5 minuti) oppure è possibile utilizzarlo come servizio che, nel piano gratuito, prevede l'accesso a 5 utenti e la connessione di 100 dispositivi, limiti più che sufficienti per un utilizzo domestico e/o per accedere al nostro cloud personale!
» Leggi: Di cosa ho bisogno per creare un cloud personale e privato?
Creazione di un account
Per la creazione di un account serve giusto una email ma se abbiamo già un account Google, Microsoft o GitHub è possibile utilizzare le credenziali di questi per creare e accedere ad un account NetBird; di solito preferisco utilizzare account separati e non utilizzare questa possibilità ma, attualmente, NetBird offre l'autenticazione a 2 fattori solo con questi account e quindi questa soluzione è da preferire per tenere il proprio account al sicuro. Dato che ho un account GitHub, utilizzerò queste credenziali per creare ed accedere ad un account NetBird.
» Leggi: Avete già attivato l'autenticazione a due fattori su ogni vostro account? Fatelo subito!

A questo punto inizierà una rapida configurazione dell'account che ci guiderà anche nell'installazione del programma sui sistemi operativi dei dispositivi che vogliamo collegare. Come prima cosa dovremo indicare il tipo di account che vogliamo creare se Business o Personal, come siamo venuti a conoscenza di NetBird e infine per quale scopo vogliamo utilizzarlo.
Dobbiamo adesso scegliere quale delle due funzioni vogliamo utilizzare: Peer-to-Peer Network o Remote Network Access. La prima soluzione è raccomandata e richiede l'installazione di NetBird su ogni dispositivo che vogliamo collegare; la seconda invece consente di raggiungere un nostro dispositivo da remoto anche tramite browser, tramite la funzione Network Routers o Reverse Proxy che vedremo brevemente più avanti ma che non verrà presa in considerazione in questa guida.

A questo punto ci verrà chiesto di configurare il nostro primo dispositivo. Dato che uno smartphone Android a portata di mano, configurerò questo semplicemente installando l'app ufficiale e scegliendo di accedere anche qui con le stesse credenziali di Github usate in precedenza per creare l'account.

Il dispositivo verrà subito rilevato e sarà tempo di configurare un secondo dispositivo che vorremo collegare con il primo. Questa volta utilizzerò il mio vecchio portatile dove è installata la mia distro Linux preferita: OpenSUSE.
» Leggi: OpenSUSE Tumbleweed: buon divertimento con la migliore distro!

Su Linux, NetBird è rilasciato come programma da riga di comando (senza interfaccia grafica, quindi) e può essere installato semplicemente digitando in un terminale:
curl -fsSL https://pkgs.netbird.io/install.sh | sh
Ma dato che la mia distro ha NetBird nei propri repository, questa volta preferirò questo metodo di installazione e ne approfitto anche per installare netbird-applet, un indicatore nella barra del Desktop che consente di avviare o fermare il programma senza interagire da riga di comando. Una volta installato, possiamo avviare NetBird con il comando:
netbird up
A questo punto si aprirà una finestra del browser dove sarà possibile eseguire l'accesso a NetBird; ovviamente ancora una volta utilizzerò le solite credenziali.

A questo punto entrambi i dispositivi sono configurati e connessi con NetBird e la configurazione guidata giunge alla fine.

Ovviamente per rendere questa connessione utile è necessario configurare su uno dei due dispositivi un servizio che sia utilizzabile anche dall'altro. Per prova, ho installato droidVNC-NG sullo smartphone Android e mi sono connesso a questo dal mio portatile con TigerVNC.

Se apriamo un terminale su OpenSUSE, con il comando ip address show, possiamo vedere come l'avvio di NetBird crei una nuova interfaccia di rete (wt0) e tramite il comando tracepath possiamo notare che la connessione tra i due dispositivi collegati da NetBird sia diretta (non ci sono nodi intermedi)ma anche che qualsiasi altro traffico generato che non sia diretto ad un indirizzo facente parte della rete di NetBird non passi minimamente tramite quest'ultima.

Il pannello di controllo
Diamo adesso una rapida occhiata al pannello di controllo di NetBird, che possiamo trovare sul sito, una volta fatto l'accesso con il nostro account.
La prima schermata è una delle due funzioni ancora in beta, ed è Control Center: qui possiamo trovare un riepilogo dei nostri dispositivi e una rappresentazione grafica delle connessioni ed è molto utile solo per un elevato numero di dispositivi.
Anche la schermata Peers è un riepilogo dei nostri dispositivi, questa volta però visualizzati come lista. Da qui è possibile anche eliminare un dispositivo dalla rete. Da notare che per alcuni dispositivi (dipende dal tipo di client NetBird installato) si può attivare una connessione diretta tramite SSH (che si appoggia direttamente al client NetBird ma è una funzione disattivata per impostazione predefinita) o RDP (che richiede però un server installato sulla macchina remota). Il tasto per aggiungere nuovi Peer, qui presente, non fa altro che attivare una procedura di configurazione guidata simile a quella già vista in precedenza.

Setup Keys è una funzione che consente di creare delle chiavi per l'attivazione di un Peer, senza necessità di accedere con il proprio account. È possibile creare delle chiavi per una sola attivazione o per molte attivazioni, impostare una scadenza o creare chiavi per accesso temporaneo alla rete.

Nella tab Access Control, troviamo 3 voci: Access Control Policy, Groups e Posture Checks, quest'ultima funzione dedicata solo alla clientela Bussiness o Enterprise.
In Access Control Policy è possibile indicare come i dispositivi possono connettersi l'uno all'altro; per impostazione predefinita è attivata una comunicazione bidirezionale tra tutti i dispositivi ma è possibile limitarla in un senso (dispositivo A può accedere a dispositivo B ma non viceversa) o limitare il protocollo da utilizzare per la connessione.
In Groups è possibile creare gruppi di dispositivi (qualora ne avessimo molti connessi) in modo da poter creare delle politiche di connessioni tra gruppi di dispositivi anziché dover impostare una regola per ogni coppia di dispositivi.

Networks e Network Routes sono praticamente la stessa funzione con la prima che è la versione più recente, più semplice e consigliata da usare della seconda che comunque rimane perché consente una configurazione più elaborata per supportare infrastrutture complesse. Qui è possibile configurare un Peer della nostra rete NetBird per agire da router che accetta connessioni dalla nostra LAN e le reindirizza ai Peer della rete NetBird. Questa funzione è molto utile quando si ha necessità di accedere alla rete NetBird da dispositivi dove non si può o non si vuole installare il client dedicato. Anche in questo caso le connessioni tra dispositivi possono essere configurate tramite Access Control Policy.

Reverse Proxy è l'altra funzione ancora in beta ed è quindi da utilizzare con cautela. Durante la fase beta tutte le funzioni sono disponibili gratuitamente ma, una volta stabile, alcune funzioni potrebbero diventare disponibili solo per utenti abbonati. In maniera simile a Networks, la funzione Reverse Proxy consente di accedere alla rete NetBird senza necessità di installare un client sui dispositivi ma, questa volta, attraverso internet. NetBird mette a disposizione un dominio (per il quale è già generato un certificato per connessioni criptate HTTPS) per rendere facilmente accessibili i servizi che vogliamo esporre ma è possibile utilizzare anche un nostro dominio. Anche in questo caso le connessioni da e per i vari dispositivi sono configurabili ed è prevista anche la possibilità di accesso previa autenticazione.

DNS consente di assegnare un nome ai nostri dispositivi. Come possiamo vedere dalle prime immagini relative alla configurazione dei Peer, NetBird assegna già automaticamente dei nomi ai dispositivi ma qui abbiamo la possibilità di personalizzarli creando prima un Nameserver che avrà il compito di risolvere i nomi negli indirizzi IP assegnati.

Nella scheda Team possiamo invitare e gestire altri utenti. La rete NetBird può avere 5 tipi di utenti con permessi limitati alla mansione che viene assegnata. L'utente con il quale abbiamo avviato al configurazione sarà il proprietario (Owner) che ha pieni poteri di configurazione e controllo della rete personale NetBird, così come l'utente Admin. Al contrario un utene normale (Peer) avrà solo la possibilità di accedere ai Peer senza possibilità di modificarne la configurazione. Qui è possibile anche creare dei token di autenticazione, ad esempio, per automatizzare l'accesso tramite script.

Nell'ultima scheda Activity sono presenti i log degli eventi degli utenti nella rete NetBird.
Conclusioni
Avevo necessità di accedere alla mia LAN da remoto e cercavo una soluzione semplice che non richiedesse DDNS o configurazione complesse e dispendiose da mantenere e con NetBird ho trovato proprio quello che cercavo e anche di più (troppo di più per le mie esigenze)! Lo utilizzo da un po' e devo dire che non ha mai dato problemi, i miei Peer sono sempre raggiungibili e la connessione è stabile anche in mobilità (merito soprattutto del protocollo WireGuard). È uno strumento che consiglio di tenere presente a tutti coloro che vogliono creare e gestire un proprio server ma anche a chi vuole semplicemente accedere facilmente ai file sul proprio computer dallo smartphone quando sono lontani da casa.