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 eseguire la tua VPN, dovresti affitto server VPS. Esistono diversi software che consentono di creare una connessione VPN. Si differenziano tra loro per i sistemi operativi supportati e gli algoritmi utilizzati. Daremo un'occhiata a due approcci indipendenti per configurare un server VPN. Il primo si basa sul protocollo PPTP che è già considerato obsoleto e non sicuro, ma è davvero facile da configurare. L'altro impiega il software moderno e sicuro OpenVPN, ma richiede l'installazione di un'applicazione client di terze parti e un processo di configurazione più approfondito.

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, aprire il file “/etc/sysctl.conf” e cambiare “net.ipv4.ip_forward” valore del parametro 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 è configurata tramite iptables. Per prima cosa, controlla il nome della tua interfaccia di rete esterna eseguendo il comando "Mostra collegamento IP" - ne avrai bisogno al prossimo passaggio. Il nostro nome è “en3”.

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 impedirlo, utilizzare “iptables-persistente” utilità. Installa il seguente pacchetto:

sudo apt install iptables-persistent

A un certo punto durante il processo di installazione, vedrai una finestra di configurazione che ti suggerirà di salvare le regole iptables correnti. Poiché le regole sono già definite, conferma e clicca "Sì" due volte. Da ora in poi le regole verranno applicate automaticamente dopo il riavvio del server.

Attiva la traduzione degli indirizzi

Server PPTP

Configurazione del server

Installa il pacchetto:

sudo apt install pptpd

Dopo aver completato l'installazione, aprire il file “/etc/pptpd.conf” in qualsiasi editor di testo e modificarlo 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-opzioni”La maggior parte dei parametri sono impostati 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, dovrai creare un record per le connessioni client. Diciamo che vuoi aggiungere un utente “utente vpn” con password "1" e consentirgli l'indirizzamento dinamico. Apri il file “/etc/ppp/chap-secrets” e aggiungere la seguente riga con i parametri dell'utente alla fine del file:

vpnuser pptpd 1 *

“pptpd” value è il nome del servizio che abbiamo specificato nel file “opzioni-pptpd”. Invece di "*" puoi specificare un indirizzo IP fisso. Nel risultato, il file "segreti da tizio" Dovrebbe essere simile a questo:

Configurazione del server VPN

Per applicare le impostazioni reimpostare il pptpd servizio e aggiungerlo al caricamento automatico.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

La configurazione del server è completata.

Configurazione client

Apri "Inizio" - "Impostazioni" - Rete e Internet - "VPN" e fare clic su “Aggiungi una connessione VPN”

Imposta il client per la connessione VPN

Inserisci i parametri di connessione nella finestra aperta e clicca "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 tasto sinistro del mouse sulla connessione e seleziona "Connect"In caso di connessione riuscita, vedrai "Collegato" stato.

Aggiunta della connessione VPN

Nelle Opzioni, troverai gli indirizzi interni del client e del server. Campo “Indirizzo di destinazione” visualizza l'indirizzo del server esterno.

Come configurare autonomamente il server VPN

Una volta connesso, l'indirizzo IP interno del server, 172.16.0.1 nel nostro caso, 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 “RSA facile” pacchetto 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/

Aprire il file “/etc/openvpn/server.conf” per la modifica, 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

Vai al sito ufficiale di OpenVPN “https://openvpn.net”, vai al “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. Cambia l'estensione del file in “.ovpn” durante la copia.

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

Cambia il proprietario della directory e di tutti i file “~/client1/” per poterli distribuire al cliente. Facciamo "Michael" il proprietario nel nostro caso.

chown -R mihail:mihail ~/client1

Vai al computer client e copia il contenuto del “~/client1/” cartella. Puoi farlo con l'aiuto di “PSCP” utilità, che va di pari passo con Putty.

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

È possibile memorizzare i file chiave “ca.crt”, “client1.crt”, “client1.chiave” dove vuoi. Nel nostro caso, sono in questa cartella “c:\Programmi\OpenVPN\keys”e modifichiamo il file di configurazione “cliente.ovpn” nella “c:\Programmi\OpenVPN\config” directory.

Ora passiamo alla configurazione del client. Apriamo il file “c:\Programmi\OpenVPN\config\client.ovpn” in 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.

Salvare il file e avviare l'applicazione client “Interfaccia grafica OpenVPN”.

Configurazione VPN completata

Fare clic con il pulsante destro del mouse sull'icona dell'app nella barra delle applicazioni e scegliere "Connect"Se la connessione è riuscita 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 Come configurare Wireguard VPN sul tuo server
Articolo successivo ❯ Configurazione del server FTP

Chiedici informazioni su VPS

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