Configurare il tuo server di rete privata virtuale è un buon modo per eludere il blocco ed essere in grado di accedere ai siti che sono bloccati nel tuo paese. La scelta dei pacchetti VPN open source è lunga ma oggi abbiamo deciso di provare Softether proveniente dall'Università di Tsukuba in Giappone. Softether è stato a lungo un prodotto proprietario sotto il nome di PacketX ed è stato open source solo diversi anni fa. Questo potrebbe essere il motivo per cui è così orientato a Windows, la GUI di configurazione è solo Windows e la connessione dai client Linux richiede lavoro extra. Useremo solo Linux e nessuna GUI qui, quindi iniziamo. All'inizio, aggiorniamo il sistema, installiamo le dipendenze e disabilitiamo SElinux
yum update
yum -y groupinstall "Development Tools"
yum -y install gcc zlib-devel openssl-devel readline-devel ncurses-devel wget tar dnsmasq net-tools iptables-services system-config-firewall-tui nano iptables-services
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Dopo questo riavviare il computer in modo che selinux si fermi e si avvii il nuovo kernel se l'aggiornamento ha un nuovo kernel. Dopo l'avvio del server, disabilitare entrambi i firewall perché possono interferire con i test. Le regole del firewall verranno impostate dopo aver configurato tutto
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
service iptables save
service iptables stop
chkconfig iptables off
Di questi due batch di comandi, uno comporterà un errore perché non stai eseguendo due firewall. Quindi abbiamo bisogno di cd su /usr/src, scaricare Softether, scompattarlo e compilarlo. Utilizzeremo la versione 4.20 di Softether che è al momento di scrivere l'ultima versione rtm. C'è anche 4.21 ma è beta.
wget www.softether-download.com/files/softether/v4.20-9608-rtm-2016.04.17-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz
tar xzvf softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz -C /usr/local
cd /usr/local/vpnserver
make
Compila ti farà tre domande alla fine, devi rispondere a tutte con 1.
Successivamente è necessario creare uno script init per softether, poiché uno non è incluso nell'installazione. Quindi esegui vi /etc/init.d/vpnserver e incolla questo 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
TAP_ADDR=192.168.7.1
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
sleep 1
/sbin/ifconfig tap_soft $TAP_ADDR
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
sleep 1
/sbin/ifconfig tap_soft $TAP_ADDR
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Successivamente è necessario aggiungere il bit eseguibile allo script init e avviarlo per la prima volta alla vecchia maniera e quindi abilitarlo con systemd per avviarlo ad ogni avvio.
chmod +x /etc/init.d/vpnserver
/etc/init.d/vpnserver start
systemctl enable vpnserver
Non importa se si lamenta dell'interfaccia tap, perché l'abbiamo aggiunto allo script init e l'abbiamo fatto iniziare con softether ma non abbiamo ancora creato l'interfaccia tap nella configurazione softether. Arriveremo a quest'ultimo.
Softether è installato, ora configuriamo
Passando alla parte di configurazione, dobbiamo avviare l'utilità vpncmd
/usr/local/vpnserver/vpncmd
Premi 1 per selezionare "Gestione del server VPN o del ponte VPN", quindi quando ti chiede quale server configurare, premi semplicemente invio e sceglierà localhost dove hai appena installato Softether. Premi Invio ancora una volta per ottenere l'accesso al server come amministratore. Tipo successivo
ServerPasswordSet
per impostare la password amministratore per il server. Per utilizzare softether, è necessario creare un hub virtuale. Ne creeremo uno chiamato MOB con il seguente comando
HubCreate MOB
Ti chiederà di impostare la password, che utilizzerai per amministrare un hub, senza accedere all'intero server VPN.
Ora dobbiamo creare un bridge locale. Questo è più efficiente dei modi, c'è anche SecureNAT che è più facile da configurare ma richiede molte risorse. Andremo con il bridge locale e toccando il dispositivo, si noti che con il bridge locale anche il server DHCP deve essere configurato e installato, cosa che verrà eseguita alla fine del tutorial. Quindi il bridge locale viene creato con il seguente comando:
BridgeCreate /DEVICE:"soft" /TAP:yes MOB
Se la creazione del dispositivo TAP non riesce con un messaggio sui privilegi insufficienti, potresti voler controllare se il tuo controller di rete è impostato in modalità promiscua. HyperV e VMware per impostazione predefinita creano VM senza modalità promiscua. Imposta la modalità promiscua e poi riprova a creare il dispositivo tap.
Ora dobbiamo creare un utente per l'hub virtuale MOB che abbiamo creato. Gli utenti vengono creati con il comando UserCreate ed è possibile visualizzare l'elenco degli utenti tramite il comando UserList. Gli utenti possono essere aggiunti ai gruppi e ogni gruppo può avere modalità di autenticazione diverse, ad esempio Password, Certificato, RADIUS, NTLM e altri.
Configurazione dell'Hub virtuale
Ora passiamo all'hub MOB
Hub MOB
e crea utente
UserCreate test
Lo terremo semplice e useremo l'autenticazione della password, quindi usa il seguente comando
UserPasswordSet test
Ora configuriamo L2TP/IPSec, eseguiamo il prompt come segue, il grassetto è ciò che devi digitare:
VPN Server/MOB>IPsecEnable
IPsecEnable command - Enable or Disable IPsec VPN Server Function
Enable L2TP over IPsec Server Function (yes / no): yes
Enable Raw L2TP Server Function (yes / no): yes
Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): yes
Pre Shared Key for IPsec (Recommended: 9 letters at maximum): linoxide
Default Virtual HUB in a case of omitting the HUB on the Username: MOB
The command completed successfully.
Questo è tutto per IPsec, ma vogliamo anche avere altri protocolli. Ad esempio i protocolli OpenVPN e Microsoft. Usiamo ServerCertRegenerate comando per generare e registrare un certificato SSL per il server in modo da poterlo utilizzare per client OpenVPN e Microsoft. L'argomento passato al comando deve essere l'indirizzo IP del tuo server o FQDIN:
ServerCertRegenerate <YOUR SERVER IP or FQDN>
È stato creato un nuovo certificato del server, dobbiamo salvarlo su file:
ServerCertGet ~/cert.cer
Questo certificato ora può essere trasferito ai tuoi clienti. Ora possiamo abilitare la funzione SSTP con questo comando:
SstpEnable yes
E per abilitare OpenVPN:
OpenVpnEnable yes /PORTS:1194
La porta per OpenVPN può essere modificata a tuo piacimento. Quindi dobbiamo creare la configurazione per il client OpenVPN in questo modo
OpenVpnMakeConfig ~/openvpn_config.zip
VPN su DNS e VPN su ICMP
Digitare Hub per tornare all'amministrazione dell'intero server VPN e non solo dell'hub MOB.
VPN Server/MOB>Hub
Hub command - Select Virtual Hub to Manage
The Virtual Hub selection has been unselected.
The command completed successfully.
Per la massima evasione da tutti i blocchi, dobbiamo anche abilitare la VPN su ICMP e DNS:
VpnOverIcmpDnsEnable /ICMP:yes /DNS:yes
VpnOverIcmpDnsEnable command - Enable / Disable the VPN over ICMP / VPN over DNS Server Function
The command completed successfully.
Ora esci da vpncmd perché dobbiamo fermare vpnserver e configurare dnsmasq
service vpnserver stop
Server DHCP, inoltro e postrouting
Softether è ora configurato, ma poiché non stiamo utilizzando SecureNAT e invece stiamo utilizzando il bridge locale, sarà necessario un server DHCP. Il dnsmasq è già installato nella prima fase del tutorial quando abbiamo installato le dipendenze, quindi ora dobbiamo configurarlo. È necessario modificare /etc/dnsmasq.conf o utilizzare il comando echo per aggiungere le righe necessarie. Useremo quest'ultima opzione e mentre ci siamo, faremo anche eco a ipv4_forwarding.conf
echo interface=tap_soft >> /etc/dnsmasq.conf
echo dhcp-range=tap_soft,192.168.7.50,192.168.7.90,12h >> /etc/dnsmasq.conf
echo dhcp-option=tap_soft,3,192.168.7.1 >> /etc/dnsmasq.conf
echo port=0 >> /etc/dnsmasq.conf
echo dhcp-option=option:dns-server,8.8.8.8 >> /etc/dnsmasq.conf
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.d/ipv4_forwarding.conf
Applica questa impostazione eseguendo
sysctl -n -e --system
Controlla se è applicato:
cat /proc/sys/net/ipv4/ip_forward
Dovrebbe mostrare 1. Se mostra 0, fallo
echo 1 > /proc/sys/net/ipv4/ip_forward
Abilita nat e postrouting:
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -j SNAT --to-source [YOUR SERVER IP ADDRESS]
iptables-save > /etc/sysconfig/iptables
Riavvia i server vpn e dhcp con i seguenti comandi e abilita l'avvio ad ogni avvio:
service vpnserver start
systemctl start dnsmasq
systemctl enable dnsmasq
chkconfig vpnserver on
Conclusione
Ciò conclude l'installazione e la configurazione del server Softether VPN. È configurato con Local Bridge per le massime prestazioni, solo ora dobbiamo connettere i client. Quelli per Windows e Android sono facili, per Windows ti basta andare sul sito Softether e scaricare il client GUI e connetterti. Per Android, non ti serve nemmeno quello, hai un client VPN integrato. Ma per Linux, per poterti connettere, hai bisogno dell'interruttore Virtual Layer-3 su Server e devi eseguire dhclient sull'interfaccia virtuale sul client GNU/ macchina Linux. In un prossimo articolo ci concentreremo su questo client desktop GNU/Linux che per qualche motivo ai ragazzi della Tsukuba University non piace e richiedono tutti questi passaggi aggiuntivi.