Knowledgebase Semplici istruzioni per lavorare con il servizio Profitserver
Principale Knowledgebase Configurazione del server VPN su Linux: PPTP o OpenVPN?

Configurazione del server VPN su Linux: PPTP o OpenVPN?


Al giorno d'oggi, la tecnologia VPN sta diventando più popolare. Gli utenti comuni usano la VPN per accedere in modo sicuro a Internet. Aiuta anche a superare siti Web e servizi bloccati localmente e a proteggersi da possibili comportamenti dannosi esterni. Quando ti connetti a un server VPN, c'è un tunnel sicuro tra il tuo computer e il server a cui non è possibile accedere dall'esterno, quindi il server VPN diventa il tuo punto di accesso a Internet. Ci sono molti servizi VPN là fuori, sia gratuiti che a pagamento, ma se per qualche motivo non funzionano per te, puoi sempre configurare il tuo server VPN.

Per utilizzare la tua VPN, dovresti noleggiare un server VPS . Esistono diversi software che consentono di creare una connessione VPN, che si differenziano per i sistemi operativi supportati e gli algoritmi utilizzati. Analizzeremo due approcci indipendenti per configurare un server VPN. Il primo si basa sul protocollo PPTP, ormai considerato obsoleto e non sicuro, ma molto facile da configurare. Il secondo utilizza il software moderno e sicuro OpenVPN, ma richiede l'installazione di un'applicazione client di terze parti e una procedura di configurazione più complessa.

Nel nostro ambiente di test, utilizzeremo un server virtuale basato su Ubuntu Server 18.04. Un firewall verrà disattivato sul server perché la sua configurazione merita un articolo separato. Descriveremo il processo di installazione su Windows 10.

Preparazione

Indipendentemente dal server VPN che scegli, l'accesso a Internet verrà impostato tramite mezzi integrati del sistema operativo. Per aprire l'accesso a Internet tramite un'interfaccia di servizio esterna, devi consentire l'inoltro dei pacchetti tra le interfacce e configurare la traduzione degli indirizzi di rete.

Per attivare l'inoltro dei pacchetti, apri il file "/etc/sysctl.conf" e modifica il valore del parametro "net.ipv4.ip_forward" in 1.

attiva l'inoltro dei pacchetti per la configurazione VPN

Per applicare le modifiche senza riavviare il computer, eseguire il comando

sudo sysctl -p /etc/sysctl.conf

La traduzione degli indirizzi di rete (NAT) viene configurata tramite iptables . Per prima cosa, verifica il nome della tua interfaccia di rete esterna eseguendo il comando "ip link show" : ti servirà nel passaggio successivo. Il nostro nome è "ens3".

spettacolo collegamento ip

Abilita la traduzione degli indirizzi di rete sulla tua interfaccia esterna per tutti i nodi della rete locale.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Tieni presente che devi specificare il nome reale dell'interfaccia del tuo server, che potrebbe essere diverso dal nostro.

Per impostazione predefinita, tutte le regole create da iptables vengono reimpostate dopo il riavvio del server. Per evitarlo, utilizzare l'utilità "iptables-persistent" . Installare il seguente pacchetto:

sudo apt install iptables-persistent

Ad un certo punto del processo di installazione, verrà visualizzata una finestra di configurazione che suggerirà di salvare le regole iptables correnti. Poiché le regole sono già definite, è sufficiente confermare e fare clic su "Sì" due volte. In questo modo, le regole verranno applicate automaticamente al riavvio del server.

Attiva la traduzione degli indirizzi

Server PPTP

Configurazione del server

Installa il pacchetto:

sudo apt install pptpd

Al termine dell'installazione, apri il file "/etc/pptpd.conf" con un qualsiasi editor di testo e modificalo in questo modo:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

Dopodiché, modifica il file "/etc/ppp/pptpd-options" . La maggior parte dei parametri è impostata di default.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

Nella fase successiva, sarà necessario creare un record per le connessioni client. Supponiamo di voler aggiungere un utente "vpnuser" con password "1" e di voler abilitare l'indirizzamento dinamico per lui. Aprire il file "/etc/ppp/chap-secrets" e aggiungere la seguente riga con i parametri dell'utente alla fine del file:

vpnuser pptpd 1 *

Il valore “pptpd” è il nome del servizio specificato nel file “pptpd-options” . Al posto di “*” è possibile specificare un indirizzo IP fisso. Di conseguenza, il file “chap-secrets” dovrebbe apparire così:

Configurazione del server VPN

Per applicare le impostazioni, riavvia il servizio pptpd e aggiungilo all'avvio automatico.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

La configurazione del server è completata.

Configurazione client

Apri "Start" - "Impostazioni" - "Rete e Internet" - "VPN" e fai clic su "Aggiungi una connessione VPN".

Imposta il client per la connessione VPN

Inserisci i parametri di connessione nella finestra che si apre e fai clic su "Salva".

  • Fornitore VPN: “Windows (integrato)”
  • Nome della connessione: “vpn_connect” (puoi scegliere qualsiasi nome)
  • Nome o indirizzo del server: (specificare l'indirizzo IP esterno del server)
  • Tipo di VPN: “Auto”
  • Tipo di informazioni di accesso: “Nome utente e password”
  • Nome utente: utente virtuale (nome specificato nel file “chap-secrets” sul server)
  • Password: 1 (come nel file “chap-secrets”)

Dopo aver salvato i parametri, vedrai la nuova connessione VPN nella finestra. Fai clic con il pulsante sinistro del mouse sulla connessione e seleziona "Connetti" . In caso di connessione riuscita, vedrai lo stato "Connesso".

Aggiunta della connessione VPN

Nella sezione Opzioni, troverai gli indirizzi interni del client e del server. Il campo "Indirizzo di destinazione" visualizza l'indirizzo esterno del server.

Come configurare autonomamente il server VPN

Una volta stabilita la connessione, l'indirizzo IP interno del server, nel nostro caso 172.16.0.1 , diventa il gateway predefinito per tutti i pacchetti in uscita.

Controllare l'indirizzo IP esterno

Utilizzando qualsiasi servizio online puoi assicurarti che l'indirizzo IP esterno del computer sia ora lo stesso dell'indirizzo IP del tuo server VPN.

Server OpenVPN

Configurazione del server

Aumentiamo il livello di permessi dell'utente corrente perché per la nostra configurazione successiva avremo bisogno dell'accesso root.

sudo -s

Installa tutti i pacchetti necessari. Avremo bisogno del pacchetto "Easy-RSA" per gestire le chiavi di crittografia.

apt install openvpn easy-rsa iptables-persistent

Consentire le connessioni in entrata sulla porta 1194 tramite protocollo UDP e applicare le regole iptables.

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

Creare una directory con i file copiati dal pacchetto “Easy-RSA” e accedervi.

make-cadir ~/openvpn

cd ~/openvpn

Generare un'infrastruttura a chiave pubblica (PKI).

./easyrsa init-pki

Generare il certificato radice dell'autorità di certificazione (CA).

./easyrsa build-ca

Durante la procedura di creazione, ti verrà chiesto di impostare e ricordare una password. Dovrai anche rispondere a delle domande e inserire informazioni sul proprietario della chiave. Puoi lasciare i valori predefiniti forniti tra parentesi quadre. Premi "Invio" per completare l'inserimento.

Genera una chiave privata e una richiesta di certificato. Come argomento, specifica un nome arbitrario; nel nostro caso, è "vpn-server".

./easyrsa gen-req vpn-server nopass

Lasciare il valore Nome comune come predefinito.

Firmare la richiesta di certificato del server generata.

./easyrsa sign-req server vpn-server

A questo punto, rispondi "sì" per confermare la firma, quindi inserisci la password creata durante la generazione del certificato radice.

Genera parametri Diffie-Hellman. Questi parametri vengono utilizzati per lo scambio sicuro di chiavi tra il server e il client.

./easyrsa gen-dh

Tutti i file necessari sono stati generati. Creiamo una cartella "keys" nella directory di lavoro di OpenVPN per archiviare le chiavi e copiarvi i file creati.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

Configurare NAT utilizzando iptables regole. Crea un file denominato nat e aprirlo per modificarlo in /etc/openvpn/ directory.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

Salvare il file e renderlo eseguibile.

sudo chmod 755 /etc/openvpn/nat

Copiare il modello di configurazione del server.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

Apri il file “/etc/openvpn/server.conf” per modificarlo, assicurati che contenga le seguenti righe e modificale se necessario:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

Abilita l'inoltro del traffico sul server.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

Avviare OpenVPN per applicare la configurazione.

systemctl restart openvpn@server

La configurazione del server è terminata!

Configurazione client

Visita il sito web ufficiale di OpenVPN “ https://openvpn.net ”, e vai alla sezione “COMUNITÀ”.

Accedi al progetto del sito ufficiale “https://openvpn.net”, quindi vai alla sezione “COMUNITY”.

Scorri verso il basso e scarica il programma di installazione per la versione del tuo sistema operativo. Nel nostro caso, è Windows 11 ARM64.

abbiamo un'installazione completa e un installatore per la nostra versione operativa. Nel nostro caso è Windows 11 ARM64.

Installare l'applicazione lasciando tutti i parametri predefiniti.

Nella fase successiva sarà necessario preparare i seguenti file sul server e trasferirli sul computer client:

  • chiavi pubbliche e private;
  • copia della chiave del centro di certificazione;
  • modello di file di configurazione.

Connettiti al server, eleva i privilegi e vai alla directory creata "~/openvpn".

sudo -s

cd ~/openvpn

Genera una chiave privata e una richiesta di certificato per il client. Come argomento, specifica un nome arbitrario; nel nostro caso, è "client1".

./easyrsa gen-req client1 nopass

Inserisci la password che abbiamo impostato durante la creazione del certificato radice e lascia il valore Nome comune come predefinito.

Ho una parola che mi ha permesso di creare un certificato di corneo e di stabilire un nome comune per l'uso.

Firmare la richiesta di certificato client generata.

./easyrsa sign-req client client1

A questo punto, rispondi "sì" per confermare la firma, quindi inserisci la password creata durante la generazione del certificato radice.

Da questo ho risposto "sì" per il miglioramento della situazione, dopo che la parola d'ordine è stata pronunciata certificazione di certificazione.

Per comodità, creiamo una cartella denominata "client1" nella directory home e copiamo al suo interno tutti i file che vogliamo trasferire sul computer client.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

Copia il modello del file di configurazione del client nella stessa directory. Modifica l'estensione del file in ".ovpn" durante la copia.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

Cambiamo il proprietario della directory e di tutti i file “~/client1/” per poterli distribuire al client. Nel nostro caso, impostiamo il proprietario su “mihail” .

chown -R mihail:mihail ~/client1

Accedete al computer client e copiate il contenuto della cartella "~/client1/" . Potete farlo utilizzando l' utility "PSCP" , inclusa in Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

È possibile salvare i file chiave “ca.crt” , “client1.crt” e “client1.key” dove si preferisce. Nel nostro caso, si trovano nella cartella “c:\Program Files\OpenVPN\keys” , mentre il file di configurazione “client.ovpn” è stato copiato nella directory “c:\Program Files\OpenVPN\config”.

Ora passiamo alla configurazione del client. Apri il file "c:\Program Files\OpenVPN\config\client.ovpn" con un editor di testo e modifica le seguenti righe:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

Lascia il resto intatto.

Salva il file e avvia l'applicazione client "OpenVPN GUI".

Configurazione VPN completata

Fai clic con il pulsante destro del mouse sull'icona dell'app nella barra delle applicazioni e seleziona "Connetti" . Se la connessione ha esito positivo, l'icona diventerà verde.

Utilizza un qualsiasi servizio online per assicurarti che il tuo indirizzo IP pubblico sia cambiato e che ora sia uguale all'indirizzo IP del server.

❮ Articolo precedente Configurazione del server FTP
Articolo successivo ❯ Come configurare Wireguard VPN sul tuo server

Chiedici informazioni su VPS

Siamo sempre pronti a rispondere alle vostre domande a qualsiasi ora del giorno e della notte.