Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

VPN site-to-site tra Ubiquiti e GCP: guida pratica

By Sayle MatthewsApr 14, 202011 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Foto di Franck V. su Unsplash

Da diversi anni Ubiquiti Networks propone apparati di rete pensati per appassionati di homelab, prosumer e aziende con la sua linea UniFi. Il rapporto qualità-prezzo molto vantaggioso e la ricchezza di funzionalità ne hanno fatto la scelta preferita di molte PMI per le esigenze di networking.

Con il numero crescente di aziende che si spostano verso il cloud, avere una connessione diretta e cifrata tra il datacenter on-premise (o il back-office) e il cloud è ormai un caso d'uso molto frequente.

Google Cloud Platform è il punto di riferimento di molte piccole e medie imprese che vogliono essere presenti nel cloud, grazie ai costi contenuti e alla ricchezza di funzionalità dell'ambiente offerto da Google. Purtroppo, chi utilizza un router come UniFi Security Gateway o un dispositivo della serie UniFi Dream Machine trova ben poca documentazione su come collegarlo direttamente a GCP, soprattutto se confrontata con quella disponibile per AWS o Azure.

Di seguito una guida passo passo per configurare una VPN site-to-site tra una rete basata su UniFi e GCP.

Prerequisiti

Prima di iniziare la procedura occorre soddisfare tre prerequisiti.

  1. Sul lato della rete on-premise serve un router UniFi come UniFi Security Gateway (o USG), UniFi Security Gateway Pro (o USG3/USG4), UniFi Dream Machine (o UDM) oppure UniFi Dream Machine Pro (o UDM Pro/UDMP). Serve inoltre un controller UniFi configurato e collegato al router. Negli ultimi due modelli citati, il controller è integrato nel dispositivo stesso.
  2. Occorre poi un indirizzo IP statico per la connessione. Se non se ne dispone, basta contattare il proprio ISP: in genere può associarne uno alla connessione a fronte di un piccolo costo aggiuntivo.
  3. Sul fronte GCP è necessario disporre di un progetto in cui l'utente abbia almeno i privilegi IAM di Network Management Admin.

Raccolta delle informazioni

Come ogni buona indagine in territorio sconosciuto, anche questa richiede di raccogliere alcune informazioni in anticipo. Apra un editor di testo per annotare i valori che le serviranno nei passaggi successivi.

La prima informazione è la più semplice: l'indirizzo IP statico.

  1. Il metodo più rapido è cercare "my IP" su Google da una macchina collegata alla stessa rete: il valore comparirà in cima ai risultati di ricerca. Se non si trova sulla stessa rete, si rivolga al proprio amministratore o all'ISP per ottenerlo.
  2. Lo annoti nell'editor di testo etichettandolo come Static IP Address per i passaggi successivi.

La seconda informazione necessaria è l'intervallo di indirizzi IP della subnet della rete (o delle reti) on-premise che si intende collegare a GCP.

  1. Per ottenerla occorre accedere al controller UniFi con un account amministratore.
  2. Da lì, vada al menu Settings (l'icona della rotella in basso a sinistra) e quindi alla pagina Networks.
  3. Individui le reti che desidera collegare e prenda nota delle informazioni nella colonna della subnet.

Tenga presente che è possibile selezionare più di una rete. 4. Annoti questi valori nell'editor di testo etichettandoli come On-Prem Subnet.

Ecco un esempio nello screenshot seguente. In questo caso voglio collegare a GCP le reti Gaming e Home Devices, quindi metterò da parte questi intervalli IP in notazione CIDR per dopo: 10.4.4.0/24 e 10.2.2.0/24.

Screenshot delle impostazioni Networks all'interno del controller UniFi

Lasci aperta questa pagina in una scheda, perché vi torneremo più avanti.

L'ultima informazione che le servirà è l'intervallo di indirizzi IP della subnet della region a cui si collegherà in GCP. Per individuarla deve avere un'idea delle risorse presenti nel progetto e della region in cui sono attive.

Per ottenerla, acceda alla console GCP:

  1. Faccia clic sul menu di navigazione principale in alto a sinistra (l'icona con le 3 barre) e vada a VPC network - > VPC networks.
  2. Nella schermata che appare vedrà una o più reti con una tabella di subnet in region differenti. La configurazione può variare da progetto a progetto in base al design di rete: ipotizziamo qui che stia utilizzando il design predefinito fornito da GCP.
  3. Quello che le interessa è la region in cui risiedono le sue risorse: nella maggior parte dei casi è us-central1, ma può variare in base al design della rete e dell'infrastruttura.
  4. Una volta individuata la region corretta, prenda nota del valore nella colonna IP address ranges.
  5. Lo annoti nell'editor di testo etichettandolo come GCP Network Range.

Lasci aperta la console GCP in una scheda, perché la utilizzerà nei passaggi successivi della procedura.

È tutto ciò che le serve: ora possiamo passare all'implementazione vera e propria.

Implementazione

Configurazione GCP — Parte I: il VPN Gateway

Vediamo ora come configurare il servizio VPN di GCP.

  1. Apra la scheda della console GCP.
  2. Faccia clic sul menu di navigazione principale in alto a sinistra.
  3. Da lì, vada su Networking -> Hybrid connectivity -> VPN.
  4. Faccia clic sul pulsante Create VPN connection per iniziare.
  5. Per ora selezioni l'opzione Classic VPN.

Nota di compatibilità: questa modalità prevede una sola VPN e non offre ridondanza in caso di guasto della connessione. La VPN ad alta disponibilità richiede infatti il supporto del BGP, che al momento della stesura di questo articolo non è disponibile sui dispositivi UniFi. 6. Una volta nella schermata di creazione, nella sezione superiore relativa al VPN gateway, inserisca un nome e una descrizione esplicativi. 7. Selezioni quindi la rete che desidera utilizzare.

Nella maggior parte dei casi sarà la rete predefinita generata automaticamente, chiamata default; se invece ha realizzato uno schema di rete personalizzato, scelga quello corretto. 8. Faccia lo stesso per la region. Infine, selezioni un indirizzo IP esterno esistente oppure ne crei uno nuovo.

Ecco uno screenshot che mostra un esempio di VPN gateway configurato correttamente all'interno della console GCP.

Esempio di VPN gateway configurato nella region us-central1.

Configurazione GCP — Parte II: il tunnel VPN

La seconda sezione della pagina riguarda il tunnel VPN vero e proprio, ovvero il meccanismo che metterà in comunicazione GCP con la rete on-premise.

  1. Scorra fino alla seconda sezione della pagina, denominata VPN tunnel.

  2. Inserisca un nome e una descrizione esplicativi.

  3. Nel campo Remote peer IP address inserisca i valori di On-Prem Subnet annotati nell'editor di testo.

  4. Verifichi che il campo IKE version sia impostato su IKEv2.

  5. Faccia quindi clic sul pulsante Generate and copy.

  6. Incolli questo valore nell'editor di testo etichettandolo come IKE Key.

    Nota importante: non perda questo valore: una volta inviata la pagina non sarà più recuperabile in alcun modo all'interno di GCP.

  7. Infine, faccia clic sulla scheda Route-based nell'ultima sezione.

  8. Nella casella Remote network IP ranges inserisca i valori di On-Prem Subnet presi dal controller UniFi e annotati nell'editor di testo, premendo Invio dopo ciascun valore in modo che venga visualizzato come un "riquadro".

  9. Verifichi che, una volta completati questi passaggi, i valori siano simili a quelli mostrati nello screenshot seguente.

  10. Una volta verificato, faccia clic sul pulsante Done in questo riquadro e poi su Create in fondo alla pagina.

Esempio di configurazione del tunnel con le due reti on-premise mostrate nello screenshot precedente.

A questo punto verrà reindirizzato alle pagine che mostrano lo stato dei VPN Gateway e dei tunnel. Il provisioning dei servizi richiederà qualche minuto.

Una volta completato il provisioning, restano alcuni passaggi finali per chiudere la configurazione lato GCP.

  1. Quando lo stato del tunnel mostra First handshake con un punto esclamativo giallo accanto, è pronto per proseguire.
  2. Nella colonna Cloud VPN gateway comparirà un indirizzo IP.
  3. Lo annoti nell'editor di testo etichettandolo come Cloud VPN IP.
  4. Prima di procedere, mantenga la console GCP aperta in questa scheda perché vi tornerà più avanti, dopo aver configurato il dispositivo UniFi.

Configurazione UniFi

Ora che il lato GCP è configurato e dispone di un tunnel VPN e di un gateway attivi in attesa di una connessione, configuriamo il dispositivo UniFi per chiudere il lato on-premise della connessione VPN.

  1. Riapra la scheda del controller UniFi.
  2. Faccia clic sull'opzione Site nella barra di navigazione principale a sinistra.
  3. Nella pagina Site, sotto Services, è presente una casella di controllo chiamata Enable advanced features: deve essere selezionata.
  4. Se non è già spuntata, la selezioni e faccia clic su Apply in fondo. Verrà mostrato un avviso che a questo punto può essere ignorato.
  5. Ora faccia clic sulla pagina Networks per tornare all'elenco delle reti. Prema il pulsante Create New Network in fondo alla pagina.
  6. In questa pagina ci sono alcune opzioni che vanno impostate: prima le elenco e poi spiego cosa va inserito in ciascun campo.
  7. In Purpose selezioni Site-to-Site VPN. In VPN Type selezioni Manual IPSec. Espanda Advanced Options e cambi Key Exchange Version in IKEv2.
  8. Per ora lasci tutto il resto sui valori predefiniti.
  9. Inserisca innanzitutto un nome per la rete.
  10. Prema il pulsante Add Subnet e nel campo che compare inserisca il valore GCP Network Range annotato nell'editor di testo.
  11. Inserisca il valore Cloud VPN IP dall'editor di testo nel campo Peer IP.
  12. Nel campo Local WAN IP inserisca lo Static IP Address dall'editor di testo.
  13. Per concludere, in questa pagina incolli la IKE Key dall'editor di testo. Prima di salvare, verifichi che la pagina sia simile allo screenshot qui sotto, ma con i propri valori.

La pagina dovrebbe presentarsi così, ma con valori IP diversi.

Infine, sempre nel controller UniFi, occorre creare una rotta statica affinché il traffico venga instradato attraverso questa connessione VPN.

  1. Selezioni la pagina Routing & Firewall nel pannello di navigazione principale.
  2. Faccia clic sul pulsante Create New Route.
  3. Inserisca un nome per questa rotta.
  4. Inserisca il valore GCP Network Range dall'editor di testo nel campo Destination Network e imposti distance su 1.
  5. In Static Route Type selezioni Interface e nel campo Interface selezioni il nome della rete creata in precedenza.
  6. Prema Save: a questo punto è pronto per il test.

Se in precedenza ha selezionato Enable advanced features e non desidera mantenere questa modalità attiva, segua i passaggi seguenti per disattivarla.

  1. Faccia clic sull'opzione Site nella barra di navigazione principale a sinistra.
  2. In Services deselezioni la casella Enable advanced features.
  3. Faccia clic su Apply in fondo alla pagina e la modalità verrà nuovamente disattivata.

Verifica della connessione

A questo punto la connessione VPN dovrebbe essere completata e attiva. Segua questi passaggi per verificare che sia effettivamente stabilita.

  1. Torni alla scheda della console GCP.
  2. Se ha cambiato pagina su quella scheda, dal menu di navigazione principale vada a Networking -> Hybrid connectivity -> VPN.
  3. Faccia clic sulla scheda Cloud VPN Tunnels in quella pagina.
  4. Nella colonna VPN tunnel status della tabella dovrebbe vedere un segno di spunta verde accanto al messaggio Established.

La connessione potrebbe richiedere qualche minuto: utilizzi il pulsante Refresh in alto per aggiornare i dati finché non compare lo stato corretto. 5. Se è tutto in ordine, la VPN è connessa tra GCP e il dispositivo UniFi on-premise.

Abbiamo verificato che la VPN è connessa, ma per essere certi che funzioni correttamente serve un semplice test.

**Test della connessione**

  1. Si assicuri di avere la console GCP aperta.
  2. Dal menu di navigazione principale vada a Compute Engine -> VM Instances.
  3. Se non ha mai creato istanze Compute Engine, oppure non ne ha nella region in cui è stata configurata la VPN, segua questa ottima guida del canale YouTube di GCP per creare un'istanza temporanea per il test, avendo cura di crearla nella region corretta: https://www.youtube.com/watch?v=1XH0gLlGDdk
  4. Nell'elenco delle istanze Compute Engine individui un'istanza che si trova nella region in cui ha creato la VPN. Per impostazione predefinita sarà us-central1.
  5. Su quell'istanza individui il valore nella colonna Internal IP.
  6. Apra una finestra di terminale.
  7. Esegua il comando seguente sostituendo l'IP interno del passaggio precedente:
ping <internal IP>

Il comando dovrebbe iniziare a mostrare righe di testo con i byte ricevuti da quell'indirizzo IP e il tempo di latenza. In tal caso la VPN è connessa e tutto funziona. Complimenti per esserci riuscito: non è esattamente la procedura più semplice del mondo.

Diversamente, in caso di problemi, segua la sezione successiva per qualche suggerimento di troubleshooting.

Troubleshooting

Se sta riscontrando problemi, ecco alcuni suggerimenti di troubleshooting emersi durante la stesura di questo articolo:

I log di Stackdriver sono i suoi migliori alleati. Spesso i problemi compaiono nei log del VPN Gateway o del tunnel VPN e forniscono indizi sulla causa del fallimento della connessione.

Le consiglio di controllare la rotta statica sul controller UniFi per assicurarsi che i valori siano corretti.

A volte la macchina locale può tenere in cache le tabelle di routing ICMP. A me è bastato un riavvio per risolvere.

Verifichi le regole di firewall sia in GCP sia nel controller UniFi per assicurarsi che la comunicazione tra i nodi interni non sia bloccata. Tenga presente che, tramite VPN, comunicherà con gli IP privati in GCP.

Il controller UniFi è semplicemente una macchina Linux a cui è possibile accedere via ssh per eseguire i comandi di base. Nel controller, nella pagina General, c'è un'opzione per abilitare e disabilitare questa funzione e per impostare le credenziali. Dal controller dovrebbe riuscire a eseguire ping o traceroute verso gli IP interni di GCP.

Si assicuri che l'IP statico sia configurato correttamente e assegnato sul router.

Utilizzi sempre gli IP interni di GCP per i test, mai quelli esterni: in caso contrario il traffico non verrà instradato attraverso il tunnel VPN.