[NO SUPPORTO][HOWTO] OpenVPN - Easy RSA 2 - Instal. & Conf.

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

[NO SUPPORTO][HOWTO] OpenVPN - Easy RSA 2 - Instal. & Conf.

Messaggio da thece »

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


Appunti testati su Ubuntu 16.04 e validi fino a Ubuntu 18.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! 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 il tasto [INVIO] oppure il tasto [y]


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

Codice: Seleziona tutto

sudo -s
Sul PC che fungerà da SERVER installare i pacchetti

Codice: Seleziona tutto

apt-get install openvpn easy-rsa

Codice: Seleziona tutto

make-cadir /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
Se dovesse apparire il messagio di errore: "The correct version should have a comment that says: easy-rsa version 2.x" dare il seguente comando

Codice: Seleziona tutto

ln -s openssl-1.0.0.cnf openssl.cnf
e ripetere

Codice: Seleziona tutto

./build-ca

Codice: Seleziona tutto

./build-dh

Codice: Seleziona tutto

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Codice: Seleziona tutto

./build-key-server PINCOPALLINO_server

Codice: Seleziona tutto

./build-key PINCOPALLINO_client_01
oppure, in alternativa al comando precedente,

Codice: Seleziona tutto

./build-key-pass PINCOPALLINO_client_01
se si desidera che ad ogni connessione dal PC CLIENT verso il PC SERVER venga richiesta una anche password aggiuntiva ai certificati della VPN.
Nella directory /etc/openvpn creare il file server.conf

Codice: Seleziona tutto

cd /etc/openvpn
touch /etc/openvpn/server.conf
e inserirvi le seguenti righe

Codice: Seleziona tutto

port 1194
; proto tcp
proto udp
dev tun

# Console di management
; management 127.0.0.1 1195

# Ottimizzazioni per le performance del protocollo TCP
; sndbuf 0
; rcvbuf 0
; push "sndbuf 393216"
; push "rcvbuf 393216"

# Ottimizzazioni per le performance del protocollo UDP
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"

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
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0

topology subnet
server 10.0.0.0 255.255.255.0
; max-clients 100
client-to-client
duplicate-cn

# Se si vuole usare la direttiva client-config-dir commentare la direttiva duplicate-cn
; client-config-dir /etc/openvpn/ccd
# 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

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

# Le seguenti direttive possono essere impartite indifferentemente sia sulla configurazione del server sia sulla configurazione del client
# Personalmente ritengo che abilitarle / disabilitarle sulla configurazione del client sia una soluzione più flessibile

# Per redirigere il default gateway del client verso il server OpenVPN
; push "redirect-gateway def1"

# Per raggiungere tutta la LAN cui appartiene il server OpenVPN attraverso la VPN
; push "route 192.168.0.0 255.255.255.0"

# Affinche' le seguenti direttive funzionino su Linux, sulla configurazione del client decommentare le direttive per l'abilitazione dello scripting
; push "dhcp-option DNS 192.168.0.1"
; push "dhcp-option DNS 208.67.222.222"
; push "dhcp-option DNS 208.67.220.220"

Codice: Seleziona tutto

chown root:root /etc/openvpn/server.conf
chmod 600 /etc/openvpn/server.conf
Riavviare il PC SERVER per far partire automaticamente il servizio OpenVPN.


Con riferimento allo schema di rete riportato più 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.

- il PC CLIENT "remoto" ha indirizzo IP (di esempio) 172.16.0.200 , è inserito in una LAN di range 172.16.0.0 / 24 e il relativo gateway ha indirizzo IP 172.16.0.254.

- la VPN che si è implementata è di tipo routed. Ciò significa la scheda di rete fisica eth0 del PC SERVER, la scheda di rete virtuale tun0 del PC SERVER e la scheda di rete fisica eth0 del PC CLIENT "remoto" devono appartenere a tre subnet diverse. Nella nostra configurazione rispettivamente 192.168.0.0 / 24 , 10.0.0.0 / 24 e 172.16.0.0 / 24

- il file di configurazione proposto per il server contiene già delle direttive commentate (righe che iniziano con il carattere ; ) che possono essere velocemente sbloccate per attivare delle funzionalità "più avanzate".


Una volta che il PC SERVER si è riavviato, verificare che il servizio OpenVPN si sia attivato correttamente utilizzando i comandi

Codice: Seleziona tutto

systemctl status openvpn.service

(output atteso)

● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sat 2018-01-06 16:36:22 CET; 40min ago
  Process: 2438 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 2438 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/openvpn.service

Jan 06 16:36:22 alexa systemd[1]: Starting OpenVPN service...
Jan 06 16:36:22 alexa systemd[1]: Started OpenVPN service.

Codice: Seleziona tutto

netstat -tulnp | grep openvpn

(output atteso)

udp        0      0 0.0.0.0:1194            0.0.0.0:*                           2449/openvpn

Codice: Seleziona tutto

ifconfig

(output atteso)

...

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  destination 10.0.0.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Codice: Seleziona tutto

route -n

(output atteso)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Comando per controllare il servizio OpenVPN

Codice: Seleziona tutto

systemctl [start|status|stop|restart|reload|reload-or-restart] openvpn.service

Nota:

ovviamente i nomi PINCOPALLINO_server e PINCOPALLINO_client_01 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_01 dove HOSTNAME è il nome che abbiamo attribuito al server, ossia quello che viene fuori dal comando

Codice: Seleziona tutto

hostname
quindi se il nostro server avesse nome vps12345 adotterei il nome vps12345_server.
Allegati
Schema della rete
Schema della rete
Ultima modifica di thece il domenica 20 ottobre 2019, 15:52, modificato 49 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggio da thece »

Procedura non "All-In-One"


A questo punto sul PC SERVER prepariamo un archivio (file .tar.gz) che conterrà:

- il file di configurazione per il PC CLIENT
- i certificati e le chiavi per la connessione al PC SERVER

quindi tale archivio dovrà essere portato sul PC CLIENT per poter attivare la connessione VPN verso il PC SERVER.


Nella directory /etc/openvpn/easy-rsa/keys creare il file PINCOPALLINO_client_01.ovpn

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.ovpn
ed inserirvi queste righe

Codice: Seleziona tutto

client
; proto tcp
proto udp
dev tun

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

# Per collegarsi da Internet
; remote <FQDN SERVER OPENVPN>
; port 1194

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

resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert PINCOPALLINO_client_01.crt
key PINCOPALLINO_client_01.key
tls-auth ta.key 1

cipher AES-128-CBC
comp-lzo
verb 3

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

# Le seguenti direttive possono essere impartite indifferentemente sia sulla configurazione del server sia sulla configurazione del client
# Personalmente ritengo che abilitarle / disabilitarle sulla configurazione del client sia una soluzione più flessibile

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

# Per raggiungere tutta la LAN cui appartiene il server OpenVPN attraverso la VPN
; route 192.168.0.0 255.255.255.0

# Affinche' le seguenti direttive funzionino su Linux, anche se impostate sulla configurazione del server, decommentare le direttive per l'abilitazione dello scripting
; dhcp-option DNS 192.168.0.1
; dhcp-option DNS 208.67.222.222
; dhcp-option DNS 208.67.220.220
Nota:

il file di configurazione proposto per il PC CLIENT contiene già delle direttive commentate (righe che iniziano con il carattere ; ) che possono essere velocemente sbloccate per attivare delle funzionalità "più avanzate".

Codice: Seleziona tutto

chown root:root /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.ovpn
chmod 600 /etc/openvpn/easy-rsa/keys/*

Codice: Seleziona tutto

mkdir -p /temp/PINCOPALLINO_client_01_keys
cp /etc/openvpn/easy-rsa/keys/ca.crt /temp/PINCOPALLINO_client_01_keys
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.crt /temp/PINCOPALLINO_client_01_keys
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.key /temp/PINCOPALLINO_client_01_keys
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.ovpn /temp/PINCOPALLINO_client_01_keys
cp /etc/openvpn/easy-rsa/keys/ta.key /temp/PINCOPALLINO_client_01_keys
cd /temp
chown -R <UTENTE>:<GRUPPO> /temp/PINCOPALLINO_client_01_keys
Sostituire <UTENTE> e <GRUPPO> con il nome di un utente e di un gruppo 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 400 /temp/PINCOPALLINO_client_01_keys/*
chmod 600 /temp/PINCOPALLINO_client_01_keys/PINCOPALLINO_client_01.ovpn
tar -czvf /temp/PINCOPALLINO_client_01_keys\ [YYYY.MM.DD].tar.gz PINCOPALLINO_client_01_keys
chown <UTENTE>:<GRUPPO> /temp/PINCOPALLINO_client_01_keys\ [YYYY.MM.DD].tar.gz
chmod 600 /temp/PINCOPALLINO_client_01_keys\ [YYYY.MM.DD].tar.gz
rm -rf /temp/PINCOPALLINO_client_01_keys
A questo punto i file contenuti nell'archivio PINCOPALLINO_client_01_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_01.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 si sia avviato correttamente, testare che la connessione VPN sia effettivamente funzionante effettuando 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, piuttosto ricontrollare di avere eseguito correttamente le procedure di cui sopra.

Nel mio schema di rete di esempio:

- il PC SERVER ha indirizzo IP 192.168.0.100 per la rete LAN e 10.0.0.1 per la rete VPN
- il PC CLIENT "locale" ha indirizzo IP 192.168.0.200 per la rete LAN e 10.0.0.N per la rete VPN


Nota:

il nome PINCOPALLINO_client_01 può ovviamente essere modificato a piacere. Basta farlo dappertutto in modo congruente.
Ultima modifica di thece il domenica 20 ottobre 2019, 16:06, modificato 38 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggio da thece »

Procedura "All-In-One"


In modo alternativo al post precedente, sempre sul PC SERVER, possiamo preparare un file "All-In-One" che contenga sia la configurazione per il PC CLIENT, sia i certificati, sia le chiavi per la connessione al PC SERVER. Come il precedente archivio, tale file dovrà essere portato sul PC CLIENT per poter attivare la connessione VPN verso il PC SERVER.


Nella directory /etc/openvpn/easy-rsa/keys creare il file PINCOPALLINO_client_01_AIO.ovpn

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
ed inserirvi queste righe

Codice: Seleziona tutto

client
; proto tcp
proto udp
dev tun

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

# Per collegarsi da Internet
; remote <FQDN SERVER OPENVPN>
; port 1194

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

resolv-retry infinite
nobind
persist-key
persist-tun

cipher AES-128-CBC
key-direction 1
comp-lzo
verb 3

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

# Le seguenti direttive possono essere impartite indifferentemente sia sulla configurazione del server sia sulla configurazione del client
# Personalmente ritengo che abilitarle / disabilitarle sulla configurazione del client sia una soluzione più flessibile

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

# Per raggiungere tutta la LAN cui appartiene il server OpenVPN attraverso la VPN
; route 192.168.0.0 255.255.255.0

# Affinche' le seguenti direttive funzionino su Linux, anche se impostate sulla configurazione del server, decommentare le direttive per l'abilitazione dello scripting
; dhcp-option DNS 192.168.0.1
; dhcp-option DNS 208.67.222.222
; dhcp-option DNS 208.67.220.220

<ca>
... copiare qui il contenuto del file /etc/openvpn/easy-rsa/keys/ca.crt ...
</ca>

<cert>
... copiare qui il contenuto del file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.crt ...
</cert>

<key>
... copiare qui il contenuto del file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.key ...
</key>

<tls-auth>
... copiare qui il contenuto del file /etc/openvpn/easy-rsa/keys/ta.key ...
</tls-auth>
Nota:

il file di configurazione proposto per il client contiene già delle direttive commentate (righe che iniziano con il carattere ; ) che possono essere velocemente sbloccate per attivare delle funzionalità "più avanzate".


Copiare il contenuto del file /etc/openvpn/easy-rsa/keys/ca.crt nel file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn all'interno dei tag <ca> ... </ca>

... in breve

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
echo -e "\n<ca>" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
cat /etc/openvpn/easy-rsa/keys/ca.crt >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
echo -e "</ca>\n" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
Copiare il contenuto del file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.crt nel file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn all'interno dei tag <cert> ... </cert>

... in breve

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
echo -e "<cert>" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
cat /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.crt >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
echo -e "</cert>\n" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
Copiare il contenuto del file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.key nel file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn all'interno dei tag <key> ... </key>

... in breve

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
echo -e "<key>" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
cat /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01.key >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
echo -e "</key>\n" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
Copiare il contenuto del file /etc/openvpn/easy-rsa/keys/ta.key nel file /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn all'interno dei tag <tls-auth> ... </tls-auth>

... in breve

Codice: Seleziona tutto

cd /etc/openvpn/easy-rsa/keys
echo -e "<tls-auth>" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
cat /etc/openvpn/easy-rsa/keys/ta.key >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
echo -e "</tls-auth>\n" >> /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
... infine cancellare i tag duplicati all'interno del file /etc/openvpn/client/PINCOPALLINO_client_01_AIO.ovpn

Codice: Seleziona tutto

chown root:root /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn
chmod 600 /etc/openvpn/easy-rsa/keys/*

Codice: Seleziona tutto

mkdir -p /temp
cp /etc/openvpn/easy-rsa/keys/PINCOPALLINO_client_01_AIO.ovpn /temp
cd /temp
chown <UTENTE>:<GRUPPO> /temp/PINCOPALLINO_client_01_AIO.ovpn
Sostituire <UTENTE> e <GRUPPO> con il nome di un utente e di un gruppo di sistema cui si vuole attribuire la proprietà dei file.
Il cambio della proprietà del file non è strettamente necessario: giusto per non lasciarla attribuita all'utente root.

Codice: Seleziona tutto

chmod 600 /temp/PINCOPALLINO_client_01_AIO.ovpn
A questo punto il file PINCOPALLINO_client_01_AIO.ovpn può essere usato 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_01_AIO.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 si sia avviato correttamente, testare che la connessione VPN sia effettivamente funzionante effettuando 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, piuttosto ricontrollare di avere eseguito correttamente le procedure di cui sopra.

Nel mio schema di rete di esempio:

- il PC SERVER ha indirizzo IP 192.168.0.100 per la rete LAN e 10.0.0.1 per la rete VPN
- il PC CLIENT "locale" ha indirizzo IP 192.168.0.200 per la rete LAN e 10.0.0.N per la rete VPN


Nota:

il nome PINCOPALLINO_client_01 può ovviamente essere modificato a piacere. Basta farlo dappertutto in modo congruente.
Ultima modifica di thece il domenica 20 ottobre 2019, 16:06, modificato 26 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [HOWTO] OpenVPN in 5 minuti

Messaggio da thece »

(Ri)Abilitazione dello script di inizializzazione di sistema /etc/rc.local


Creare il file /etc/rc.local

Codice: Seleziona tutto

cd /etc
touch /etc/rc.local
incollare il seguente contenuto dentro al file

Codice: Seleziona tutto

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0
Modificare la proprietà del file

Codice: Seleziona tutto

chown root:root /etc/rc.local
Modificare i permessi del file

Codice: Seleziona tutto

chmod 755 /etc/rc.local
Creare il link simbolico

Codice: Seleziona tutto

ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
Abilitare il servizio

Codice: Seleziona tutto

systemctl enable rc-local
ignorare il messaggio mostrato a video

Avviare il servizio

Codice: Seleziona tutto

systemctl start rc-local
Controllare lo stato del servizio

Codice: Seleziona tutto

systemctl status rc-local
Ultima modifica di thece il domenica 20 ottobre 2019, 12:14, modificato 11 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Per completare la configurazione del PC SERVER abilitiamo su di esso:

- il forwarding (inoltro) dei pacchetti IP tra le diverse interfacce di rete - nel mio caso eth0 e tun0 - in modo tale che i pacchetti IP possano transitare liberamente tra le diverse interfacce di rete
- il masquerading (NAT) dei pacchetti IP, in modo tale che i pacchetti dalla e per la VPN possano essere correttamente gestiti dagli host della LAN 192.168.0.0 / 24


Forwarding (inoltro) dei pacchetti IP

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

Codice: Seleziona tutto

net.ipv4.ip_forward=1
Usiamo il comando

Codice: Seleziona tutto

sysctl -p
per far recepire la modifica al sistema senza riavviare il PC.
Usiamo il comando

Codice: Seleziona tutto

cat /proc/sys/net/ipv4/ip_forward

(output atteso)

1
per verificare che la modifica sia stata recepita.


Masquerading (NAT) dei pacchetti IP

Modifichiamo la configurazione del firewall IPTables attraverso uno script che verrà richiamato ad ogni riavvio del PC SERVER, attraverso lo script di inizializzazione /etc/rc.local
Creare un file che si chiama iptablesSetRules.sh

Codice: Seleziona tutto

mkdir -p /scripts
cd /scripts
touch /scripts/iptablesSetRules.sh
e inserirvi il seguente contenuto

Codice: Seleziona tutto

#!/bin/bash

IPTABLES="/sbin/iptables"

echo "Setting IPTables rules ..."

# MASQUERADING

# Dove 10.0.0.0/24 è la subnet assegnata alla scheda di rete virtuale della VPN
$IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE

# Oppure, più performante, dove <INDIRIZZO IP> è l'indirizzo IP STATICO assegnato alla scheda di rete Ethernet
# $IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT --to-source <INDIRIZZO IP>

exit 0

Codice: Seleziona tutto

chown root:root /scripts/iptablesSetRules.sh
chmod 700 /scripts/iptablesSetRules.sh
Per far sì che lo script di cui sopra venga richiamato automaticamente al riavvio del PC SERVER, modificare il file /etc/rc.local inserendo questa riga prima del comando exit 0

Codice: Seleziona tutto

/scripts/iptablesSetRules.sh
Riavviare il PC SERVER per far recepire tutte queste modifiche.



Per verificare che si sia proceduto correttamente utilizzare i comandi

Forwarding (inoltro) dei pacchetti IP

Codice: Seleziona tutto

cat /proc/sys/net/ipv4/ip_forward

(output atteso)

1
Masquerading (NAT) dei pacchetti IP

Codice: Seleziona tutto

iptables -t nat -L -n -v

(output atteso)

...

Chain POSTROUTING (policy ACCEPT 19 packets, 1369 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      *       10.0.0.0/24         !10.0.0.0/24
Ultima modifica di thece il domenica 20 ottobre 2019, 16:14, modificato 4 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Abilitazione del Port Forwarding sul modem / router xDSL


Per far in modo che il PC CLIENT possa connettersi in VPN al PC SERVER da Internet occorre esporre il servizio OpenVPN su Internet.
In un contesto domestico questo si traduce nel configurare un'opportuna regola di port forwarding sul pannello di controllo del proprio modem / router xDSL.

Codice: Seleziona tutto

192.168.0.100 : 1194 (UDP) <----------> INDIRIZZO_IP_PUBBLICO : 1194 (UDP)
Purtroppo non è possibile fornire ulteriori dettagli su questa operazione in quanto ogni pannello di controllo di modem / router xDSL ha le proprie peculiarità.

Nota:

i valori indicati nella regola di port forwarding rispecchiano quanto dichiarato nei file di configurazione sia del PC SERVER che del PC CLIENT VPN.
Se si modificano le impostazioni nei file di configurazione occorrerà variare opportunamente anche questa regola.


Dynamic DNS

Poichè presumibilmente l'indirizzo IP PUBBLICO assegnato al nostro modem / router xDSL dal nostro Provider Internet sarà di tipo dinamico, per potersi collegare più comodamente alla VPN, occorre installare sul PC SERVER (oppure abilitare sul modem / router xDSL, se predisposto) un client verso uno dei vari servizi di Dynamic DNS.
Ultima modifica di thece il domenica 20 ottobre 2019, 14:01, modificato 4 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Uso di Network Manager per la connessione alla VPN


Su Linux, per fare in modo che il PC CLIENT possa collegarsi al servizio VPN utilizzando 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..."
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti