Bypassare una VPN su Mac OSx.

Creative Commons Licence


Ormai le VPN sono diventate di uso piuttosto comune: esistono moltissimi fornitori di questo servizio, con prezzi per tutte le tasche e tutte le necessità; da quelle gratuite per l’uso più comune come navigare siti, leggere la posta e mandare qualche mail, a quelle a pagamento, per servizi più impegnativi come utilizzo da parte di piccole e medie aziende, con costi che vanno, da pochi euro al mese, sino servizi molto più costosi con divisioni per sotto reti fisiche, a seconda delle necessità dell’azienda.

Non starò a disquisire, in questo articolo, del perché o del perché non, usare una VPN ai nostri giorni, quello di cui voglio parlare oggi invece è la necessità che si presenta a volte di avere una lista di specifici indirizzi che non passino attraverso la VPN.

Faccio un esempio pratico: avete la posta su un vostro dominio privato.it gestito dall’azienda provider.it; quest’ultima, per proprie policy interne, non permette di mandare la posta se l’IP di chi scrive risulta essere un IP appartenente ad un pool di server che generano una qualsiasi VPN: quindi nega l’accesso ad smtp.privato.it a tutti gli IP che facciano parte di una VPN. Le ragioni per cui provider.it scelga questa policy non sono il motivo dell’articolo, ma hanno un loro perché!

Poche applicazioni, di quelle viste da me almeno, danno la possibilità di creare quella che di solito si chiama una whitelist, ossia una lista di indirizzi IP che, per nostre necessità, seppure la VPN sia attiva, non devono passarci attraverso. Nell’esempio che facevo poco fa, quando la mia VPN si presenta ad smtp.privato.it seppure io abbia la password di quella utenza, il server di smtp è stato istruito a non permettere il passaggio del mio IP pubblico attuale, quello presentato dalla VPN. Ogni volta che necessito di inviare una email, devo:

  1. spegnere la VPN;
  2. inviare la mia email;
  3. riattivare la VPN.

Chiaramente, se invio qualche email al giorno, posso anche farlo, ma se si tratta di decine di email al giorno, magari perché siamo una piccola azienda, allora non è più fattibile usare la VPN ed usare la posta contemporaneamente.

Si devono utilizzare i tool che il nostro sistema operativo ci fornisce, e dobbiamo crearci un minimo di conoscenza, di gestione di reti, per poter capire cosa stiamo per fare.

Crreare delle rotte verso il nostro router è la soluzione al nostro problema. Praticamente creiamo delle impostazioni di rotta specifiche per singolo IP che ci necessita.

La soluzione del problema che dettaglierò, da qui a poco, è specifica per sistemi operativi Mac, ma capito il meccanismo è facilmente riproducibile anche in ambiente Linux o Windows.

Abbiamo due alternative possibili:

  1. Rotte dinamiche;
  2. Rotte statiche.

La differenza tra le dinamiche e le statiche, sta nel fatto che nel caso delle dinamiche le rotte resteranno operative sino a che:

  • non disattiveremo la scheda di rete interessata;
  • non eseguiremo il logout dall’utenza;
  • non riavvieremo il nostro computer.

Se una di queste situazioni diventerà reale, le rotte impostate andranno perse, e si dovrà reimpostarle nuovamente.

Nel caso delle rotte statiche, invece, esse resteranno valide sino a che non le disattiveremo, con un apposito comando, o non ripristineremo il sistema operativo installandolo daccapo, procedendo ad un restore da un backup, precedente all’impostazione delle rotte stesse.

Chiarita bene la differenza, tra le due tipologie di rotte, a questo punto andiamo a vedere come impostare, verificare e cancellare le rotte dinamiche. Abbiamo lo stesso comando da utilizzare, con tre diversi parametri a seconda di cosa vogliamo fare. Per non fare confusione determiniamo dei parametri arbitrari:

  • IP da far passare al di fuori della VPN: 201.101.101.201
  • IP del nostro GATEWAY nativo: 192.168.1.254

Getione rotte dinamiche.


Aggiunta di una rotta dinamica

sudo route -nv add 201.101.101.201 192.168.1.254

Con questo comando disponiamo che indipendentemente dal servizio di VPN attivo tutto il traffico diretto all’IP 201.101.101.201 deve essere instradato via 192.168.1.254, il nostro Gateway nativo, e non qualsiasi altro IP impostato, come Gateway, dalla VPN. In questo modo abbiamo scavalcato le impostazioni impartite dall’applicazione della VPN, quando l’abbiamo avviata.

Verifica dell’impostazione di una rotta dinamica per il nostro IP:

sudo route -nv get 201.101.101.201 

La risposta ci farà capire se la rotta dinamica era stata già impostata o meno.

Cancellazione della rotta dinamica per il nostro IP

sudo route delete 201.101.101.201

Oppure disabilitando, e riabilitando, la scheda di rete dalle Preferenze di Sistema, oppure facendo il logout dall’utenza.

Gestione rotte statiche.


E con questo abbiamo visto la parte delle rotte dinamiche. Passiamo ora al caso delle rotte statiche.

Le rotte statiche hanno il vantaggio di non dover essere reimpostate in nessun caso, tranne quello in cui si voglia cancellare la rotta già impostata. Nel caso del Mac useremo un comando specifico di questo sistema operativo, che gestisce, senza necessità di privilegi particolari, la manipolazione delle rotte: networksetup

Seguiamo la stessa sequenza usata per le rotte dinamiche, usando gli stessi dati immaginari:

  • IP da far passare sotto la VPN: 201.101.101.201
  • IP del nostro GATEWAY nativo: 192.168.1.254
  • IP della NetMask: a seconda delle esigenze.

Identificazione del nome della scheda di rete

networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Ethernet
Ethernet Adaptor (en4)
Ethernet Adaptor (en5)
* Wi-Fi
Bluetooth PAN
Thunderbolt Bridge

Aggiunta di una rotta statica:

networksetup -setadditionalroutes "Ethernet" 201.101.101.201 255.255.255.0 192.168.1.254

Questa rotta fa in modo che, il traffico sulla scheda di rete Ethernet, diretto verso il singolo IP 201.101.101.201 (notate la netmask) passi sempre dal Gateway 192.168.1.254 indipendentemente dalla rotta di Gateway impostata dalla nostra VPN.

Verifica dell’elenco delle rotte statiche già impostate:

networksetup -getadditionalroutes "Ethernet"

Qui verranno elencate le rotte aggiunte per la scheda Ethernet che ignoreranno la rotta di Gateway impostata dalla VPN.

Cancellazione delle rotte statiche:

networksetup -setadditionalroutes "Ethernet"

ATTENZIONE: il comando cancella tutte le rotte aggiuntive aggiunte per la scheda di rete Ethernet!! (Che io sappia non esiste modo tramite networksetup di cancellare una singola rotta aggiuntiva.


Con questo abbiamo risolto il problema di far passare uno, o più, specifici indirizzi IP al di fuori dalla VPN che stiamo usando senza dover spegnere quest’ultima e doverla riavviare.

JC

Licenza Creative Commons
Quest’opera è distribuita con Licenza Creative Commons Attribuzione – Condividi allo stesso modo 4.0 Internazionale.

Lascia un commento

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