NetBird è una piattaforma di gestione VPN open-source costruita su WireGuard, che semplifica la creazione di reti private sicure, sia per organizzazioni che per utilizzi domestici. La configurazione è semplice e rapida, eliminando la necessità di gestire aperture di porte, regole firewall complesse ecc. È molto simile a Tailscale e offre funzionalità altrettanto simili.

NetBird non adotta un server VPN centralizzato, ma si basa su un’architettura di VPN mesh: in questo modello, i dispositivi connessi possono comunicare direttamente tra loro, senza la necessità di un intermediario centrale. Ogni nodo della rete ha la capacità di fungere sia da client che da server, garantendo così una maggiore flessibilità e resilienza. I concetti sono simili a quelli di Tailscale.

Esistono due modalità principali per installare e utilizzare NetBird. La prima consiste nell’utilizzare NetBird Cloud, dove il sistema di controllo degli accessi è gestito dalla piattaforma stessa. Questo consente di connettere gratuitamente fino a 100 dispositivi e un massimo di 5 utenti. La registrazione al servizio può essere effettuata mediante un indirizzo email o tramite autenticazione OAuth, utilizzando account Google, Microsoft o GitHub. La seconda modalità, invece, prevede la possibilità di self-hostare la piattaforma.

L’installazione di NetBird deve essere effettuata su tutti i dispositivi che si desidera includere nella rete privata. Una volta completata questa operazione, l’elenco dei dispositivi connessi (peers) è visualizzabile nella dashboard di NetBird, accessibile via browser web previa autenticazione.

Nella scheda Setup Keys è possibile impostare una chiave precondivisa come misura di sicurezza aggiuntiva per consentire l’accesso a nuovi dispositivi.

Creazione della VLAN NetBird

In primo luogo, come descritto nel post precedente, in OPNsense è necessario procedere con la creazione della VLAN per NetBird, seguendo le specifiche tecniche indicate:

  • Tag VLAN: 80
  • Subnet: 10.0.80.0/24
  • Gateway: 10.0.80.254
  • Range DHCP: 10.0.80.50-10.0.80.249
  • Alias NETBIRD_VM: 10.0.80.1

Regole di firewall

Dopo aver creato e abilitato la VLAN, è fondamentale configurare le regole del firewall per garantire che la VM di NetBird possa accedere alle risorse nella DMZ attraverso le porte web standard, ovvero le porte 80 (HTTP) e 443 (HTTPS). La seguente immagine illustra le regole applicate:

netbird-rules

Configurazione dello switch

In aggiunta, per implementare correttamente la VLAN, è necessario configurare lo switch associato. Questa operazione prevede di taggare la VLAN sulla porta in trunk, che nel nostro caso è la porta 1.

netbird-switch-vlan

Installazione di NetBird

install-netbird

  • Creare un account sul sito netbird.io, abilitando l’autenticazione a più fattori (MFA) per una maggiore sicurezza
  • Come descritto nell’articolo dedicato, la procedura prevede la creazione di una macchina virtuale Debian in Proxmox, utilizzando un template o le immagini qcow2 ufficiali
  • Grazie a Cloud-Init risulta semplice impostare l’indirizzo IP statico

netbird-vm

cloud-init

  • Dopo aver avviato la VM, l’installazione di NetBird è un processo semplice. Eseguire i seguenti comandi:
1
2
3
4
5
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
curl -sSL https://pkgs.netbird.io/debian/public.key | sudo gpg --dearmor --output /usr/share/keyrings/netbird-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main' | sudo tee /etc/apt/sources.list.d/netbird.list
sudo apt-get update && sudo apt-get install netbird
  • Dopo l’installazione, per aggiungere il peer, eseguire il comando netbird up e cliccare il link fornito per completare la registrazione del dispositivo. Il comando netbird status confermerà l’avvenuta registrazione
  • Una volta completato il processo, sarà possibile visualizzare il dispositivo aggiunto nella sezione peers della dashboard:

netbird-peers

Se necessario, è possibile abilitare l’accesso remoto SSH o RDP verso i peer.

ssh-remote

Aggiunta di Zone DNS

Dalla sezione DNS > Zones, è anche possibile aggiungere zone DNS.

netbird-dns-zone

Aggiunta delle risorse

Configurazione della rete

Dalla sezione Network > Add Resources, è possibile inserire varie risorse all’interno della rete appena creata.

netbird-resources

Tutti i dispositivi con la VPN installata possono ora accedere a queste risorse. Per gli utenti Android, è disponibile un client mobile. Il processo di registrazione é il medesimo visto in precedenza.

Domini personalizzati

I domini custom consentono l’uso di un proprio nome di dominio (es. app.example.com) per i servizi da esporre. Questo funziona in modo identico sia per le distribuzioni cloud che self-hosted.

Prima di utilizzare un dominio personalizzato, è necessaria la verifica della proprietà creando un record CNAME presso il proprio fornitore DNS.

  1. Navigare verso Reverse Proxy > Custom Domains nella dashboard di NetBird
  2. Cliccare su Add Domain
  3. Inserire il nome di dominio (es. example.com) o sottodominio (es. proxy.example.com)
  4. Selezionare il cluster proxy target e salvare

add-custom-domain

Dopo il salvataggio, il dominio apparirà nella lista con uno stato di Pending Verification. È necessario completare la verifica prima di poter utilizzare il dominio con un servizio.

NetBird esegue una ricerca DNS su *.<example.com> e verifica che risolva verso un cluster proxy noto. Una volta completata con successo la verifica, lo stato del dominio cambierà in Active e diventerà disponibile nel selettore di domini quando si creano o modificano servizi.

active-custom-domain

Esporre un servizio

Se si desidera esporre un servizio accessibile pubblicamente senza VPN, seguire queste indicazioni:

  • Cliccare su Expose Service della risorsa o navigare nella sezione Reverse Proxy. Questa funzione consente di esporre i servizi interni al pubblico, con supporto per i certificati SSL/TLS e autenticazione opzionale
  • Durante la creazione di un servizio, è necessario assegnargli un dominio. NetBird fornisce domini integrati, automaticamente disponibili per ogni account, e supporta anche domini personalizzati

Per esporre un servizio utilizzando un dominio personalizzato, navigare in Reverse Proxy > Services e cliccare su Add Service. È necessario inserire un nome per il servizio e specificare il target.

http-target

Ad esempio, se si inserisce “dashboard” come sottodominio e si seleziona “proxy.example.com” come dominio base, il servizio sarà accessibile all’indirizzo dashboard.proxy.example.com.

edit-target

Autenticazione e access policy

Per i servizi pubblici, è possibile specificare un metodo di autenticazione, garantendo che solo gli utenti autorizzati possano accedere al servizio.

auth-method

In aggiunta, è possibile implementare politiche che consentono l’accesso solamente da determinati paesi.

access-policy

Tutti i tipi di dominio ricevono automaticamente certificati TLS gestiti dal proxy.

pve01-proxy-novemila

Accesso dal cellulare a PVE e PBS

Nel caso si desideri esporre Proxmox VE o Proxmox Backup, come nel nostro esempio, si consiglia dii:

  • Disabilitare l’utente root
  • Creare un Utente amministrativo personalizzato con privilegi amministrativi
  • Creare un utente con permessi limitati

I permessi consigliati per questo utente limitato sono:

  • PVEAuditor: garantisce un accesso in sola lettura alle risorse, senza la possibilità di apportare modifiche
  • PVEVMUser: consente di visualizzare, eseguire backup, gestire la console delle VM e controllare l’alimentazione delle VM stesse. Questo permesso permette all’utente di accendere e spegnere le VM, facilitando la gestione delle risorse

Esistono diverse applicazioni mobile, come:

admin-pve-user

Gestione utenti e team

È possibile creare utenti e assegnare loro ruoli e permessi, organizzandoli in team. Questa configurazione consente di limitare l’accesso a determinate risorse, in modo che ogni utente possa operare solo nelle aree di propria competenza.

manage-users

Riferimenti