[NO SUPPORTO][HOWTO] OpenVPN - Instal. & Conf.

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns, ecc.

[NO SUPPORTO][HOWTO] OpenVPN - Instal. & Conf.

Messaggioda thece » sabato 4 giugno 2016, 17:08

Condivido i miei appunti per l'installazione del servizio OpenVPN. Spero possa essere di aiuto


Appunti testati su Ubuntu 16.04.


Non fornisco supporto su questa discussione.
Questa discussione ha il solo scopo di suggerire all'utente "inesperto" una strada molto veloce per l'installazione e configurazione del servizio OpenVPN: questo è solo un modo! Vengono fatte assunzioni forti, viene calcata la mano all'utente "inesperto". Altre scelte potrebbero essere fatte sulla base delle proprie necessità.
Per qualsiasi correzione, osservazione, suggerimento o altro inerente questa discussione, cortesemente, mandatemi un messaggio in privato.



Happy Linux :ciao:


NOTE:

- dove non esplicitamente detto, tutti i comandi devono essere eseguiti come root (*), oppure anteponendo il comando sudo
- eseguendo i comandi, dove vi vengono poste delle domande accettate la scelta di default, ossia premete [INVIO] oppure [y]



(*) Molto comodamente, è possibile aprire una shell di root utilizzando il comando

Codice: Seleziona tutto
sudo -s



Sul PC SERVER installare i pacchetti

Codice: Seleziona tutto
apt-get install openvpn easy-rsa

Se lo si desidera, installare i pacchetti opzionali

Codice: Seleziona tutto
apt-get install bridge-utils uml-utilities

Codice: Seleziona tutto
mkdir -p /etc/openvpn/easy-rsa

Codice: Seleziona tutto
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa

Codice: Seleziona tutto
cd /etc/openvpn/easy-rsa

A questo punto, se lo si desidera, si può personalizzare il file /etc/openvpn/easy-rsa/vars. Scelgo di lasciarlo così come è

Codice: Seleziona tutto
source ./vars

Codice: Seleziona tutto
./clean-all

Codice: Seleziona tutto
./build-ca

Codice: Seleziona tutto
./build-dh

Codice: Seleziona tutto
./build-key-server PINCOPALLINO_SERVER

Codice: Seleziona tutto
./build-key PINCOPALLINO_CLIENT

oppure, in alternativa al comando precedente,

Codice: Seleziona tutto
./build-key-pass PINCOPALLINO_CLIENT

se si vuole che ad ogni connessione dal PC CLIENT verso il PC SERVER venga richiesta una anche password aggiuntiva ai certificati della VPN.

Codice: Seleziona tutto
chmod 600 /etc/openvpn/easy-rsa/keys/*

Creare nella directory /etc/openvpn il file server.conf e inserirvi queste righe

NOTA:
con riferimento allo schema di rete riportato sotto, il servizio OpenVPN viene installato su un PC SERVER che ha indirizzo IP (di esempio) 192.168.0.100, inserito in una LAN di range 192.168.0.0/24 e il cui GATEWAY ha indirizzo IP 192.168.0.1. Il servizio OpenVPN attiverà automaticamente un'interfaccia di rete virtuale tun0 che avrà indirizzo IP (di esempio) 10.0.0.1/24

Codice: Seleziona tutto
port 1194
proto tcp
dev tun

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/PINCOPALLINO_SERVER.crt
key /etc/openvpn/easy-rsa/keys/PINCOPALLINO_SERVER.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

topology subnet
server 10.0.0.0 255.255.255.0
client-to-client
duplicate-cn
# Se si vuole usare la direttiva client-config-dir commentare la direttiva duplicate-cn
# In caso di topology subnet, il file /etc/openvpn/ccd/CLIENT_COMMON_NAME deve essere scritto con la seguente sintassi
# ifconfig-push 10.0.0.### 255.255.255.0
; client-config-dir /etc/openvpn/ccd

keepalive 10 120

cipher AES-128-CBC
comp-lzo

user nobody
group nogroup

persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
log /etc/openvpn/openvpn.log
verb 3

Codice: Seleziona tutto
chown root:root /etc/openvpn/server.conf

Codice: Seleziona tutto
chmod 600 /etc/openvpn/server.conf

Riavviare il PC SERVER per far partire automaticamente il servizio OpenVPN.

Una volta che il PC SERVER si è riavviato, verificare che il servizio OpenVPN sia effettivamente attivo con il comando

Codice: Seleziona tutto
netstat -tulnp | grep openvpn

(output atteso)

tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      917/openvpn

oppure

Codice: Seleziona tutto
/etc/init.d/openvpn status

(output atteso)

● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled)
   Active: active (exited) since ...
  Process: 12674 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 12674 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/openvpn.service



Comando per controllare il servizio OpenVPN

Codice: Seleziona tutto
/etc/init.d/openvpn {start|stop|reload|restart|force-reload|cond-restart|soft-restart|status}



NOTA:
i nomi PINCOPALLINO_SERVER e PINCOPALLINO_CLIENT ovviamente possono essere modificati a piacere, basta farlo dappertutto in modo congruente.
Il mio suggerimento è però quello di adottare la forma HOSTNAME_SERVER e HOSTNAME_CLIENT, dove HOSTNAME è il nome del server, ossia quello che viene fuori dando il comando

Codice: Seleziona tutto
hostname

quindi, ad esempio, se il nostro server avesse nome vps12345 adotterei i nomi vps12345_server e vps12345_client .
Allegati
network.png
Schema della rete
Ultima modifica di thece il domenica 26 febbraio 2017, 19:02, modificato 26 volte in totale.
Avatar utente
thece
Rampante Reduce
Rampante Reduce
 
Messaggi: 7460
Iscrizione: aprile 2007
Distribuzione: Debian 9 (Stretch) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggioda thece » sabato 4 giugno 2016, 17:28

A questo punto prepariamo un archivio che conterrà:

- il file di configurazione per il PC CLIENT
- le (sue) chiavi per la connessione al PC SERVER

Codice: Seleziona tutto
mkdir -p /temp/PINCOPALLINO_CLIENT_keys

Codice: Seleziona tutto
cp /etc/openvpn/easy-rsa/keys/ca.crt /temp/PINCOPALLINO_CLIENT_keys/ca.crt

Codice: Seleziona tutto
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_CLIENT.crt /temp/PINCOPALLINO_CLIENT_keys/PINCOPALLINO_CLIENT.crt

Codice: Seleziona tutto
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_CLIENT.key /temp/PINCOPALLINO_CLIENT_keys/PINCOPALLINO_CLIENT.key

Codice: Seleziona tutto
cd /temp/PINCOPALLINO_CLIENT_keys

Creare nella directory /temp/PINCOPALLINO_CLIENT_keys il file PINCOPALLINO_CLIENT.ovpn e inserirvi queste righe

Codice: Seleziona tutto
client
dev tun
proto tcp

# Decommentare le chiavi "remote" e "port" di solo una di queste due possibilità

# Per collegarsi dalla LAN (l'indirizzo IP 192.168.0.100 è di esempio)
; remote 192.168.0.100
; port 1194

# Per collegarsi da Internet
; remote NOME_SERVER_OPENVPN
; port 1194

resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert PINCOPALLINO_CLIENT.crt
key PINCOPALLINO_CLIENT.key
cipher AES-128-CBC
comp-lzo
verb 3

# Le seguenti direttive potrebbero essere impostate in modo equivalente sulla configurazione del server
# Personalmente ritengo che abilitarle / disabilitarle sulla configurazione del client sia una soluzione più flessibile

# Per redirigere il default gateway verso il server OpenVPN
; redirect-gateway def1

# Per raggiungere tutta la LAN da Internet (la rete 192.168.0.0 è di esempio)
; route 192.168.0.0 255.255.255.0

# Affinchè le seguenti direttive funzionino su Linux, anche se impostate sulla configurazione del server, decommentare le successive direttive per lo scripting
; dhcp-option DNS 208.67.222.222
; dhcp-option DNS 208.67.220.220
; dhcp-option DNS 192.168.0.1

# Scripting
# Lo script update-resolv-conf si basa sul pacchetto resolvconf. Assicurarsi che sia installato
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf


Codice: Seleziona tutto
chown -R UTENTE:UTENTE /temp/PINCOPALLINO_CLIENT_keys

sostituire UTENTE con il nome di un utente di sistema cui si vuole attribuire la proprietà dei file.
Il cambio della proprietà dei file non è strettamente necessario: giusto per non lasciarla attribuita all'utente root.

Codice: Seleziona tutto
chmod 440 /temp/PINCOPALLINO_CLIENT_keys/*

Codice: Seleziona tutto
chmod 640 /temp/PINCOPALLINO_CLIENT_keys/PINCOPALLINO_CLIENT.ovpn

Codice: Seleziona tutto
cd /temp

Codice: Seleziona tutto
tar -czvf /temp/PINCOPALLINO_CLIENT_keys\ [YYYY.MM.DD].tar.gz PINCOPALLINO_CLIENT_keys

Codice: Seleziona tutto
chown UTENTE:UTENTE /temp/PINCOPALLINO_CLIENT_keys\ [YYYY.MM.DD].tar.gz

Codice: Seleziona tutto
chmod 640 /temp/PINCOPALLINO_CLIENT_keys\ [YYYY.MM.DD].tar.gz

Codice: Seleziona tutto
rm -r /temp/PINCOPALLINO_CLIENT_keys




A questo punto i file contenuti nell'archivio PINCOPALLINO_CLIENT_keys [YYYY.MM.DD].tar.gz possono essere usati con un qualsiasi client per OpenVPN per connettersi al PC SERVER.
Ad esempio possono essere usati:

- (su Linux) openvpn stesso, impartito come root o anteponendo il comando sudo

Codice: Seleziona tutto
openvpn --config PINCOPALLINO_CLIENT.ovpn

- (su Linux) Network Manager, tramite apposito plugin
- (su Windows) OpenVPN GUI



Una volta che il servizio OpenVPN è stato installato sul PC SERVER, si è controllato che il servizio parta correttamente, per testare che la VPN sia effettivamente funzionante provare una connessione al PC SERVER da un PC CLIENT posto nella stessa LAN. Se il test di connessione non ha esito positivo per il momento è inutile procedere oltre, ricontrollare i file di configurazione sul PC SERVER e sul PC CLIENT.



Nel mio schema di rete di esempio:

- il PC SERVER avrà indirizzo IP 192.168.0.100 per la rete LAN e 10.0.0.1 per la rete VPN
- il PC CLIENT avrà indirizzo IP 192.168.0.200 per la rete LAN e 10.0.0.N per la rete VPN
Ultima modifica di thece il domenica 26 febbraio 2017, 16:05, modificato 18 volte in totale.
Avatar utente
thece
Rampante Reduce
Rampante Reduce
 
Messaggi: 7460
Iscrizione: aprile 2007
Distribuzione: Debian 9 (Stretch) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggioda thece » sabato 4 giugno 2016, 17:37

Abilitiamo sul PC SERVER che ospita il servizio OpenVPN il FORWARDING e il MASQUERADING dei pacchetti IP.
In questo modo un qualsiasi PC CLIENT che si connetterà al servizio OpenVPN da Internet potrà raggiungere tutti i PC posti nella LAN (nel mio esempio la LAN è configurata sulla rete 192.168.0.0/24)


NOTA: in questo scenario il PC CLIENT deve appartenere ad una rete LAN diversa da:

- 192.168.0.0/24 perchè è la classe di indirizzamento della LAN remota che vogliamo poter raggiungere
- 10.0.0.0/24 perchè è la classe di indirizzamento della VPN

La connessione VPN non può essere usata per unire due LAN aventi la stessa classe di indirizzamento.


Modifichiamo il file /etc/sysctl.conf e decommentiamo la riga (ossia togliamo il # iniziale)

Codice: Seleziona tutto
net.ipv4.ip_forward=1

Modifichiamo la configurazione di IpTables attraverso uno script che verrà richiamato ad ogni riavvio del PC SERVER

Codice: Seleziona tutto
mkdir -p /scripts

Codice: Seleziona tutto
cd /scripts

Creare un file che si chiama iptablesAllowMasquerading.sh e inserirvi il seguente contenuto

Codice: Seleziona tutto
#!/bin/bash

# To start firewall automatically, add /path/iptablesAllowMasquerading.sh to file /etc/rc.local

IPTABLES="/sbin/iptables"

echo "Setting IPTables rules ..."

# Default policies of default chains
# $IPTABLES -P INPUT ACCEPT
# $IPTABLES -P FORWARD ACCEPT
# $IPTABLES -P OUTPUT ACCEPT

# NAT and MASQUERADING
# In file /etc/sysctl.conf uncomment net.ipv4.ip_forward=1
$IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE

exit 0

Codice: Seleziona tutto
chown root:root /scripts/iptablesAllowMasquerading.sh

Codice: Seleziona tutto
chmod 700 /scripts/iptablesAllowMasquerading.sh

Per far sì che lo script di cui sopra venga richiamato automaticamente al riavvio del PC SERVER, modificare il file /etc/rc.local e inserire questa riga prima del comando exit 0

Codice: Seleziona tutto
/scripts/iptablesAllowMasquerading.sh

Riavviare il PC SERVER per far recepire tutte queste modifiche
Ultima modifica di thece il martedì 21 febbraio 2017, 17:36, modificato 3 volte in totale.
Avatar utente
thece
Rampante Reduce
Rampante Reduce
 
Messaggi: 7460
Iscrizione: aprile 2007
Distribuzione: Debian 9 (Stretch) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggioda thece » sabato 4 giugno 2016, 18:30

Per far in modo che il PC CLIENT possa collegarsi al PC SERVER da Internet occorre ancora:

- esporre su Internet il servizio OpenVPN
In un contesto domestico questo si traduce nel configurare un'opportuna regola di PORT FORWARDING sul proprio modem / router ADSL

Codice: Seleziona tutto
192.168.0.100 : 1194 (TCP) <----------> INDIRIZZO_IP_PUBBLICO : 1194 (TCP)

- installare sul PC SERVER (o abilitare sul modem / router ADSL se già predisposto) un client verso uno dei vari servizi di DYNAMIC DNS
Ultima modifica di thece il domenica 5 giugno 2016, 12:13, modificato 1 volta in totale.
Avatar utente
thece
Rampante Reduce
Rampante Reduce
 
Messaggi: 7460
Iscrizione: aprile 2007
Distribuzione: Debian 9 (Stretch) - KDE

Re: [NO SUPPORTO][HOWTO] OpenVPN - Instal. & Conf.

Messaggioda thece » domenica 26 febbraio 2017, 19:28

Per fare in modo che il PC CLIENT possa collegarsi al servizio VPN utilizzando il Network Manager, procedere nel seguente modo:

- assicurarsi che siano installati i pacchetti network-manager-openvpn e network-manager-openvpn-gnome

- salvare localmente al PC CLIENT l'archivio PINCOPALLINO_CLIENT_keys [YYYY.MM.DD].tar.gz creato in precedenza

- decomprimere localmente al PC CLIENT l'archivio PINCOPALLINO_CLIENT_keys [YYYY.MM.DD].tar.gz

- dall'app del Network Manager importare i file ottenuti dalla precedente decompressione, attraverso i passi (in Inglese):

p1) Edit Connections
p2) Add
p3) Import a saved VPN Connection
p3) cercare e selezionare il file PINCOPALLINO_CLIENT.ovpn (i file .crt e .key verranno importati automaticamente)
p4) Create
p5) Save

a questo punto sia l'archivio che i file precedentemente decompressi possono essere cancellati.


NOTA:
indipendentemente dal fatto che si sia scelto di usare o meno la direttiva per il reindirizzamento del default gateway sulla configurazione del server VPN, attivando la connessione VPN, il Network Manager reinstraderà tutto il traffico in uscita dal PC CLIENT verso Internet attraverso la VPN. Per evitare questo comportamento, nella configurazione appena creata, selezionare l'opzione "Use this connection only for resources on its network" nel tab "IPv4 Settings...", "Routes..."
Avatar utente
thece
Rampante Reduce
Rampante Reduce
 
Messaggi: 7460
Iscrizione: aprile 2007
Distribuzione: Debian 9 (Stretch) - KDE


Torna a Ubuntu su server

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite