Cosa è SoftEther?
SoftEther è un programma crossplatform, multi protocollo ed open source che permette di creare dei “tunnel” punto-punto crittografati e sicuri tra il server principale e computers (client) gratuitamente.
È sviluppato dall’università di Tsukuba in Giappone, e fornisce tramite il sito www.vpngate.net molteplici VPN messe a disposizone da utenti volontari, che potete testare sin da subito per capire se fa al caso vostro.
L’autenticazione può avvenire tramite diversi protocolli come: chiavi private condivise, certificati digitali, credenziali (nome utente e password) e supporta i seguenti protocolli di rete: (OpenVPN, IPsec, L2TP, MS-SSTP, L2TPv3 e EtherIP).
A cosa serve una VPN?
Una connessione VPN indirizza il traffico internet attraverso una connessione sicura verso un server, garantendoci una navigazione protetta su una rete pubblica, aumenta l’anonimato delle tue operazioni su internet, ci da la possibilità di accedere ai siti da un’area geografica ed indirizzo IP differenti, con il vantaggio di evitare restrizioni regionali imposte dagli ISP (utile per i servizi di streaming).
Possiamo utilizzarla anche per accedere alla rete di casa/della nostra azienda in maniera virtuale, permettendoci l’accesso a svariati servizi come l’accesso alle telecamere di sicurezza, hard disk di rete condivisi come se ci trovassimo fisicamente lì (utilissimo per lo smart working).
Dopo le premesse di rito, possiamo iniziare…
Di cosa ho bisogno?
- Pc con Linux (o un server VPS)
- Pc con windows o MacOs (lo utilizzeremo successivamente per configurare il nostro server in maniera rapida).
Abbiamo la possibilità di configurare il server in 2 modi (li troverete entrambi):
Local Bridge (più performante ma più complicato da configurare)
SecureNAT (semplicissimo da configurare ma meno performante)
Al termine di questo articolo troverete i test di velocità per entrambe le modalità
Iniziamo:
Dal nostro Pc/Server Linux apriamo una nuova finesta terminale e acquisiamo i diritti di amministratore tramite il comando
sudo -i
Assicuriamoci di installare/aggiornare i prerequisiti
apt-get update
apt-get install build-essential
Andiamo sulla pagina di SoftEther e scarichiamo i file necessari come illustrato (se utilizzate un raspberry, selezionate ARM EABI 32 bit).
scegliete il primo link (latest build)
Io ad oggi uso la versione Ver 4.34, Build 9745, beta
dopo aver scaricato il file sul server, posizioniamoci sul percorso del file ed eseguite il comando
tar zxf softether-vpnserver-v4.34-9745-beta-2020.04.05-linux-arm_eabi-32bit.tar.gz
Attenzione, Inserite il nome del file che avete scaricato.
cd vpnserver
make
negli step successivi, dobbiamo leggere ed accettare la licenza, quindi premiamo 3 volte 1.
il comando farà partire una breve compilazione, controlliamo che non ci siano errori.
Spostiamo la cartella appena estratta in /usr/local
cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver
Adesso creiamo lo script per l’avvio automatico del server, se utilizzerete la configurazione Local Bridge saltate questo passaggio, in quanto lo script è leggermente differente.
nano /etc/init.d/vpnserver
ed incolliamo il seguente script
#!/bin/sh
### BEGIN INIT INFO
# Provides: vpnserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable Softether by daemon.
### END INIT INFO
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case “$1” in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0
Premete Crtl + X , S o Y, ed invio in modo da salvare il file.
ed eseguiamo i seguenti comandi per iniziare la configurazione
chmod 755 /etc/init.d/vpnserver
mkdir /var/lock/subsys
update-rc.d vpnserver defaults
/etc/init.d/vpnserver start
Se tutto è andato per il verso giusto, il terminale vi ripoterà un messaggio dove vi invita a collegarvi all’indirizzo locale del server, quindi proseguiamo;
Spostiamoci nella cartella di installazione
cd /usr/local/vpnserver
ed avviamo il setup di configurazione iniziale
./vpncmd
controlliamo che tutto sia correttamente installato avviando VPN Tools
3
check
il terminale dovrà restituirvi 4 messaggi di “PASS”
Ciò significa che abbiamo installato tutto correttamente e possiamo proseguire con la configurazione.
Premiamo Crtl + C ed lanciamo
./vpncmd
1
Premere invio 2 volte
ServerPasswordSet
inseriamo la password amministrativa (Che dobbiamo segnare e non perdere).
Adesso possiamo passare a Windows/MacOs e scaricare il VPN Server Manager dalla pagina di SoftEther
Installiamo la versione per il nostro sistema in uso e avviamola, premiamo new settings e compiliamo i vari campi (se la porta 443 non funziona, usiamo la 5555)
Scriviamo la password amministrativa, salviamo il server e colleghiamoci, apparirà un pop up con il setup.
Selezioniamo remote access vpn server.
Alla domanda rispondiamo yes
scegliamo il nome del nostro server e premiamo Ok
exit
Selezioniamo la prima voce “Enable L2TP Server Function (L2TP over IPsec)
ed impostiamo una password (Preferibilmente diversa da quella amministrativa)
Disabilitiamo la proposta di Azure VPN e proseguiamo
Adesso dobbiamo creare un utente (potremo crearne altri successivamente).
possiamo inserire semplicemente nome utente e password, ma è possibile scegliere tra diverse misure di sicurezza.
Adesso dobbiamo configurare il local bridge o secureNAT
Su server fisici/Raspberry il local bridge assicura il doppio delle prestazioni rispetto al SecureNAT, ma come anticipato prima, è un pò più complesso da configurare.
Su Server virtuali/VPS utilizzo il SecureNAT per rendere tutto più semplice, in quanto le configurazioni potrebbero risultare molto complesse e variabili.
ATTENZIONE, Non abilitate local bridge e SecureNAT allo stesso momento altrimenti i pacchetti andranno in loop infinito portando l’uso della CPU al 100%.
Per configurare il server in local bridge:
Ipotizziamo la nostra configurazione come segue:
VPN Server IP: 192.168.1.10
Range VPN IP Client: 192.168.1.20 – 192.168.1.30
nome interfaccia TAP: tap_test
dalla schermata principale del server manager, selezioniamo il nostro server creato in predecenza e successivamente Local Bridge Settings
Scegliamo il nostro “virtual Hub”, selezioniamo Bridge with New Tap Device e scegliamo il nome del nostro device TAP (io uso test per comodità), e poi selezioniamo “Create Local Bridge”.
Verifichiamo da una nuova finestra del terminale linux se il device esiste tramite il seguente comando:
ifconfig tap_test
Se il terminale ci restituisce questa schermata, possiamo installare il server DHCP, in modo da far assegnare automaticamente l’indirizzo ip.
sudo apt-get install dnsmasq
Al termine dobbiamo modificare il file di configurazione con
nano /etc/dnsmasq.conf
ed aggiungiamo queste 3 righe al termine del file
interface=tap_test
dhcp-range=tap_test,192.168.1.20,192.168.1.30,12h
dhcp-option=tap_test,3,192.168.1.10
premiamo Ctrl + X, S o Y e invio.
Questi comandi servono per abilitare il server DHCP in base ai dati descritti prima, sulla periferica TUN/TAP.
Proseguiamo con la creazione dello script che avvia SoftEther ed abilita il dispositivo TAP all’avvio (che avevamo saltato prima).
quindi eseguiamo il comando
nano /etc/init.d/vpnserver
ed incolliamo il testo seguente
#!/bin/sh
### BEGIN INIT INFO
# Provides: vpnserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable Softether by daemon.
### END INIT INFO
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
TAP_ADDR=192.168.1.10
test -x $DAEMON || exit 0
case “$1” in
start)
$DAEMON start
touch $LOCK
sleep 3
/sbin/ifconfig tap_test $TAP_ADDR
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
sleep 3
/sbin/ifconfig tap_test $TAP_ADDR
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0
ATTENZIONE a rinominare correttamente i device TAP (tap_test nel nostro caso) e l’indirizzo IP del server su TAP_ADDR
al termine, Ctrl + X, S o Y ed invio.
Abilitiamo il NAT sul server quindi eseguiamo il seguente comando
nano /etc/sysctl.d/ipv4_forwarding.conf
ed aggiungiamo la seguente stringa (sarà l’unica)
net.ipv4.ip_forward = 1
Premiamo Crtl + X e se verrà richiesto, salvare il file con il seguente nome
ipv4_forwarding.conf
al termine lanciamo il comando
sysctl --system
ed aggiungiamo una regola POSTROUTING alle iptables con
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source [INDIRIZZO SERVER SENZA PARENTESI]
Concludiamo con l’installazione di iptables-persistent per rendere permanenti le modifiche alle iptables anche dopo il riavvio.
sudo apt-get install iptables-persistent
A fine installazione ci verrà richiesto di salvare le modifiche effettuate precedentemente (per IPv4 e IPv6), premiamo si per 2 volte ed attendiamo la fine del processo.
adesso che abbiamo configurato tutto correttamente, riavviamo softether e dnsmasq con i seguenti comandi
/etc/init.d/vpnserver restart
/etc/init.d/dnsmasq restart
Nel caso in cui abbiate scelto il Local Bridge, dobbiamo saltare il prossimo passaggio e proseguire con l’ultimo step.
Per configurare il server con SecureNAT:
Tramite il software, nella schermata di gestione selezioniamo Manage Virtual Hub e successivamente su Virtual NAT and Virtual DHCP Server (SecureNat).
Clicchiamo su Enable SecureNAT ed abbiamo terminato la configurazione.
N.B. Sul server VPN bisogna abilitare la periferica TUN/TAP dal pannello di controllo del vostro VPS, in caso di dubbi o difficoltà nel trovare delle risposte, potete contatare l’assistenza del vostro provider VPS.
ATTENZIONE, NON abilitate SecureNAT e Local Bridge nello stesso momento perchè rischiate di bloccare il server.
Adesso manca l’ultimo step: Il collegamento alla VPN
Da questo momento possiamo già collegarci con un qualsiasi client con i protocolli compatibili.
Io utilizzerò il pratico client OpenVPN, quindi dovrò generare il file di configurazione.
Tramite il software, nella schermata di gestione clicchiamo su OpenVPN / MS-SSTP Settings, assicuriamoci che entrambe le voci siano selezionate come di seguito e clicchiamo su Generate a Sample configuration file for OpenVPN Clients.
Salviamo il file sul desktop e premiamo YES se richiesto, si aprirà l’archivio appena scaricato con diversi file, quello che ci interessa è quello denominato con remote_access_l3
Estraiamo il file sul desktop e copiamolo sul nostro dispositivo (nell’esempio un telefono android)
Apriamo OpenVPN scaricabile dal Play Store
Aggiungiamo il file e impostiamo il nome utente che avevamo creato prima (obbligatorio), possiamo decidere di salvare la password o di inserirla ad ogni connessione.
Adesso premiamo sul file appena importato ed inseriamo la password (se non l’avevamo salvata in precedenza), ci verrà richieto di selezionare un certificato, premiamo semplicemente continue, in quanto non avevamo generato nessun certificato di validazione;
In pochi secondi saremo collegati al nostro server VPN.
Per verificare l’effettivo funzionamento, possiamo collegarci ad uno dei siti che mostrano il nostro IP (come ad esempio whatismyip)
Ecco le differenze di performance tra una configurazione Local Bridge e SecureNAT (Server su rete internet Gigabit, test effettuato su rete 4G+ di TIM)
Local Bridge
SecureNAT
Se il collegamento va in “timeout” e state utilizzando un server sulla rete di casa, Ricordatevi di aprire la porta UDP 1194 sul vostro modem/router.
Scripts e tips a cura di Lincoln Lee