Routing VPN da sito a sito spiegato in dettaglio

Introduzione

Una configurazione site-to-site è quella in cui due (o più) reti diverse sono collegate insieme utilizzando un tunnel OpenVPN. In questo modello di connessione, i dispositivi di una rete possono raggiungere i dispositivi dell’altra rete e viceversa. L’implementazione di questo è, per quanto riguarda Access Server, relativamente semplice. La parte più difficile arriva quando si ha a che fare con i firewall e le opzioni di filtraggio della sicurezza, e la modifica delle tabelle di routing nei router e nei gateway Internet, poiché ce ne sono così tanti di varie marche e modelli, che non è possibile documentarli tutti. Tuttavia, i router dovrebbero avere tutti una cosa in comune: la capacità di instradare il traffico usando percorsi statici. Con questa capacità arriva il mezzo per inviare il traffico da una rete all’altra, attraverso un sistema di gateway che fornisce la connettività all’altra rete. Un server di accesso OpenVPN con un client gateway VPN Linux forma un tale sistema gateway, per formare un ponte tra due reti. Se anche il tuo equipaggiamento di rete è regolato correttamente, allora si può ottenere una configurazione site-to-site che funziona in modo trasparente per tutti i dispositivi nelle due reti.

In questa pagina vogliamo fornirti una guida che ti dia un’idea di come funziona, per darti una comprensione di come le cose dovrebbero essere impostate per farle funzionare.

Panoramica di un esempio di configurazione site-to-site

Nel diagramma sopra, la sede della nostra azienda di esempio è sulla destra, e ci sono computer e server. Uno dei server ha installato il prodotto OpenVPN Access Server. Tutti i computer e i server di quella rete sono collegati a un router (la piccola scatola quadrata piatta con l’icona di un ingranaggio) che fornisce anche l’accesso a Internet. Sulla sinistra c’è un ufficio sussidiario che ha alcuni computer e server, tutti collegati al proprio router che fornisce anche l’accesso a Internet.

Uno dei server nell’ufficio sussidiario ha un programma client OpenVPN installato su un sistema operativo Linux, che ha una connessione tunnel OpenVPN attiva al server di accesso OpenVPN nella sede centrale. In questo esempio di configurazione site-to-site, è stato aperto un accesso completo tra i computer e i server della sede centrale e della filiale. In altre parole, un utente seduto a un computer della filiale può accedere ai server della sede centrale come se fosse lì, grazie a una connessione tunnel OpenVPN tra le due reti. Questo tunnel OpenVPN viaggia su Internet e il suo contenuto è criptato in modo sicuro.

Descrizione passo per passo di come scorre il traffico

Abbiamo creato una serie di immagini che mostrano come una richiesta da un computer client nella filiale raggiunge un server applicativo nella sede centrale, e come una risposta viene inviata indietro. Ogni passo del processo è mostrato chiaramente con linee evidenziate e informazioni di rete rilevanti. Basta scorrere le immagini per vedere una progressione passo dopo passo. Vale la pena notare che questo tipo di configurazione consente ancora altri client VPN per accedere al server di accesso OpenVPN e ottenere l’accesso a qualsiasi dispositivo in queste 2 reti. Inoltre, una configurazione site-to-site non deve essere limitata a una rete sussidiaria, può essere multipla altrettanto facilmente.

Come impostare il server di accesso OpenVPN per il site-to-site

Supponiamo che tu abbia già un’installazione di OpenVPN Access Server funzionante e che sia installato nella tua rete privata dietro un router con accesso a Internet e che abbia un indirizzo IP privato, con il port forwarding impostato in modo che possa essere raggiunto dall’esterno, e con le impostazioni appropriate fatte in modo che sia effettivamente raggiungibile con un programma client OpenVPN dall’esterno. In altre parole, che tu abbia un’installazione di OpenVPN Access Server che funzioni e che permetta ai client OpenVPN di connettersi. Se non hai ancora installato Access Server allora fallo prima. Vedi la pagina delle opzioni di installazione di Access Server per maggiori informazioni.

Questa sezione descrive le impostazioni da configurare in OpenVPN Access Server per rendere possibile un setup site-to-site. Assumiamo che stiamo configurando la configurazione site-to-site come mostrato nelle immagini qui sopra, con le subnet utilizzate. Se le vostre subnet sono diverse, e molto probabilmente lo sono, dovrete regolarle come necessario per adattarle alla vostra situazione. Nota importante: è necessario per far funzionare il site-to-site che le subnet siano diverse nelle due reti.

Vai all’Admin UI e vai su VPN Settings. Nella voce intitolata Should VPN clients have access to private subnets imposta la selezione su Yes, using routing (advanced) e nel campo di testo grande subito sotto specifica la subnet della rete dove si trova il tuo OpenVPN Access Server. Per confrontarlo con l’esempio di configurazione site-to-site descritto nella serie di immagini sopra, questo sarebbe 192.168.70.0/24. Assicurati che la casella di controllo per consentire l’accesso dalle sottoreti private sia lasciata selezionata. Ora salva le impostazioni e aggiorna i server in esecuzione.

Poi vai su Permessi utente e crea un nuovo utente e una nuova password. Se usi un sistema di autenticazione esterno come PAM, RADIUS o LDAP, assicurati che l’account esista. Dovrete essere in grado di accedere e usare questo account, naturalmente. Sul nuovo account utente spunta la casella per i privilegi di auto-login. Poi clicca su Show per rivelare altre impostazioni. Imposta l’opzione Configure VPN gateway su yes e nel grande campo di testo che appare sotto di esso, inserisci la subnet della rete remota dove il sistema gateway del client OpenVPN Linux sta per essere installato. Nell’esempio di configurazione site-to-site descritto nella serie di immagini qui sopra, questo sarebbe 10.0.60.0/24. Ora salva le impostazioni e aggiorna i server in esecuzione.

Per quanto riguarda il programma OpenVPN Access Server, questo è ciò che completa la configurazione di un setup site-to-site. Ci sono ancora alcune cose da configurare. Il router della rete in cui si trova l’Access Server deve essere messo al corrente dell’esistenza di ulteriori sottoreti, e che queste possono essere raggiunte contattando l’indirizzo IP privato dell’installazione dell’Access Server. Nella nostra rete di esempio, l’Access Server OpenVPN ha un IP di 192.168.70.222. Ha anche una subnet client VPN di 172.16.0.0/20 e alla fine avrà una connessione site-to-site che corre verso la subnet 10.0.60.0/24. Per rendere il router consapevole di queste sottoreti extra cerca nella documentazione del tuo dispositivo router, e cerca come aggiungere route statiche. Queste sono le rotte statiche che devono essere aggiunte:

  • Rete 172.16.0.0 con subnet mask 255.255.240.0 attraverso il gateway 192.168.70.222
  • Rete 10.0.60.0 con subnet mask 255.255.255.0 attraverso il gateway 192.168.70.222

Si noti che stiamo specificando una subnet mask. La maggior parte delle apparecchiature di routing vuole che sia specificata in questo modo invece di usare il formato CIDR con /24 e /20 e così via. Ci sono delle tabelle che puoi consultare online e che puoi usare per convertire facilmente l’uno nell’altro.

Con le nuove rotte statiche in atto, ogni volta che il traffico arriva al router che ha come destinazione un indirizzo IP da qualche parte tra 172.16.0.0/20 o 10.0.60.0/24, esso saprà che deve inoltrare il traffico al server di accesso OpenVPN all’indirizzo IP 192.168.70.222. Quindi lo inoltrerà dove deve andare, dato che sa come contattare queste due subnet.

Come configurare il client OpenVPN Linux Gateway

Preferiamo utilizzare un sistema operativo Linux per gestire il ruolo di un client VPN che funge anche da gateway. Preferiamo Ubuntu LTS su una macchina virtuale o su un hardware dedicato. Abbiamo semplicemente le migliori esperienze con esso, e ci sono semplici strumenti disponibili su Linux che sono gratuiti e facili da installare e utilizzare per diagnosticare eventuali problemi che possono sorgere. Inoltre Linux è gratuito da usare e può girare su apparecchiature molto leggere. Anche un Raspberry Pi3 o simili può gestire questo compito, e ci sono anche sistemi embedded che possono gestirlo. Apparecchiature a parte, se hai un sistema operativo Linux con un client OpenVPN che può connettersi al server di accesso OpenVPN, e puoi abilitare qualcosa chiamato IP forwarding, allora dovresti essere in grado di ottenere un client OpenVPN Linux Gateway abbastanza facilmente. Non hai bisogno di installare il programma OpenVPN Access Server stesso su questo sistema client Linux.

Quello che ti serve è il programma client open source OpenVPN per Linux. Su Ubuntu puoi installarlo con il comando apt-get install openvpn. Con il programma client ora installato, controllerà la presenza di qualsiasi file *.conf nella directory /etc/openvpn/ e all’avvio del sistema cercherà di connetterli e tenerli connessi. Quello che ci serve ora è ottenere il profilo di connessione auto-login per l’account utente creato per la connettività site-to-site, e salvarlo nella directory /etc/openvpn/. Per fare ciò dobbiamo prima ottenere il file:

Vai alla UI del client del server di accesso OpenVPN usando un browser web, clicca sul menu a tendina connect e passa a login. Inserisci il nome utente e la password dell’account utente che hai creato per la connettività site-to-site e clicca su go. Ti verrà presentato un elenco di file disponibili per questo account utente. Individua il profilo auto-login e scaricalo. Si chiamerà client.ovpn.

Trasferisci questo file client.ovpn al tuo sistema client Linux (con SCP o WinSCP o copiando e incollando il contenuto del file in un editor di testo come nano) e mettilo nella directory /etc/openvpn/. Rinominate il file in qualcosa come headquarters.conf. Il nome del file non è particolarmente importante, ma l’estensione deve finire con .conf perché il demone OpenVPN lo rilevi. Ora riavvia il sistema operativo client Linux. Ora dovrebbe connettersi automaticamente e dovresti essere in grado di vedere questa connessione apparire nella panoramica degli utenti attuali del server di accesso OpenVPN.

Allora abilita l’IP forwarding sul sistema client Linux. L’IP forwarding è la funzione di un sistema operativo che gli permette di accettare un pacchetto di rete in entrata su un’interfaccia di rete, e se la destinazione è su un’altra rete, di inoltrarlo lì. Questo è ciò di cui hai bisogno quando i pacchetti provenienti dalla tua rete devono andare al tunnel VPN, o viceversa. Su Ubuntu puoi farlo abbastanza facilmente aprendo /etc/sysctl.conf con un editor di testo come nano, e decommentando la linea #net.ipv4.ip_forward=1. Decommentare significa rimuovere il carattere #. Poi uscite e salvate il file. Ora riavvia il sistema operativo client Linux.

Per quanto riguarda il sistema gateway OpenVPN Linux Client, questo è ciò che completa la configurazione di un setup site-to-site da questa parte. Rimane ora solo una cosa da configurare. Il router della rete in cui si trova il client Linux Gateway deve essere reso consapevole del fatto che esistono ulteriori sottoreti, e che queste possono essere raggiunte contattando l’indirizzo IP privato dell’installazione del client Linux Gateway. Nella nostra rete di esempio, il sistema OpenVPN Linux client gateway ha un IP di 10.0.60.55. Fa anche parte della subnet del client VPN di 172.16.0.0/20 che esiste sull’Access Server e avrà ora una connessione site-to-site che corre verso la subnet 192.168.70.0/24. Per rendere il router consapevole di queste sottoreti extra, guarda la documentazione del tuo router e cerca come aggiungere route statiche. Si noti che è necessario aggiungere queste rotte statiche sul router nella rete della filiale dell’ufficio dove si trova il sistema client OpenVPN Linux Gateway, non sulla rete dove si trova l’Access Server. Queste sono le rotte statiche che devono essere aggiunte:

  • Rete 172.16.0.0 con subnet mask 255.255.240.0 attraverso il gateway 10.0.60.55
  • Rete 192.168.70.0 con subnet mask 255.255.255.0 attraverso il gateway 10.0.60.55

Come per le rotte statiche sull’altro router, si nota che stiamo specificando una subnet mask. La maggior parte delle apparecchiature di routing vuole che sia specificata in questo modo invece di usare il formato CIDR con /24 e /20 e così via. Ci sono tabelle che puoi consultare online e che puoi usare per convertire facilmente l’uno nell’altro.

Con le nuove rotte statiche in atto, ogni volta che il traffico arriva al router che ha come destinazione un indirizzo IP da qualche parte in 172.16.0.0/20 o 192.168.70.0/24, saprà che deve inoltrare il traffico al client OpenVPN Linux Gateway all’indirizzo IP 10.0.60.55. Quindi lo inoltrerà dove deve andare, dato che sa come contattare queste due subnet.

Troubleshooting

Con i passi di configurazione sopra descritti, sia l’OpenVPN Access Server che il client OpenVPN Linux Gateway dovrebbero funzionare perfettamente. Ci sono comunque un gran numero di possibili problemi che si possono incontrare con le apparecchiature circostanti. Per esempio ci possono essere dei firewall sui computer client e server che bloccano il traffico da sottoreti “sconosciute”. Sulle reti cloud come Amazon AWS, i gruppi di sicurezza e il controllo delle fonti possono essere un fattore di blocco del traffico. Inoltre, le rotte statiche potrebbero essere state impostate male in modo che lavorino dalla LAN all’interfaccia WAN, in modo che cerchi di inviare il traffico a Internet invece di rimanere puramente sul lato LAN del router. Sfortunatamente ci sono troppi possibili problemi che si trovano completamente al di fuori dell’OpenVPN Access Server e del suo client OpenVPN Linux Gateway collegato per documentarli tutti. Invece, abbiamo cercato di fornire i mezzi per diagnosticare la connessione da soli.

Abbiamo una guida alla risoluzione dei problemi che aiuterà a determinare il punto in cui il traffico si interrompe. Questo porterà poi alle conclusioni per risolvere efficacemente il problema.

Lascia un commento

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