GNU/Linux >> Linux Esercitazione >  >> Panels >> OpenVPN

Configurazione di un server OpenVPN con VyOS e Viscosity

Le reti private virtuali (VPN) possono essere utilizzate per una serie di applicazioni molto utili. Puoi connetterti in modo sicuro a qualsiasi hotspot Wi-Fi pubblico. Puoi superare le restrizioni di blocco geografico sui tuoi siti Web preferiti. E puoi persino connetterti alla rete di casa o dell'ufficio da qualsiasi parte del mondo, come se fossi seduto alla tua scrivania. Questa guida ti guiderà attraverso il processo di configurazione del tuo server OpenVPN e di connessione ad esso con la tua copia di Viscosity.

L'esecuzione del tuo server OpenVPN ti consentirà di crittografare tutto ciò che fai su Internet, in modo da poter eseguire in sicurezza il tuo banking online sul WiFi gratuito nel tuo bar preferito. Tutto ciò che invii tramite la connessione VPN verrà crittografato dal tuo dispositivo fino a quando non raggiunge il tuo server OpenVPN a casa. Configurare il tuo server OpenVPN per accedere alla tua rete domestica o aziendale ti dà pieno accesso a tutti i tuoi file sulla tua rete.

Questa guida ti guiderà attraverso i passaggi necessari per configurare un server OpenVPN su un host VyOS che ti consente di accedere in modo sicuro alla tua rete domestica/dell'ufficio da una posizione remota e, facoltativamente, inviare tutto il traffico di rete attraverso di essa in modo da poter accedere a Internet anche in modo sicuro.

Preparazione

Per questa guida, assumiamo:

  • Hai già installato l'ultima versione di VyOS (1.1 al momento della scrittura)
  • Il tuo account ha sudo privilegi per questa installazione
  • Questa installazione di VyOS è una nuova installazione
  • Hai già una copia di Viscosity installata sul tuo dispositivo client

Se è necessario scaricare e installare una copia di VyOS, è possibile trovarne una copia all'indirizzo http://vyos.net/wiki/Main_Page. Non tratteremo i dettagli della configurazione di un'istanza VyOS, molte guide possono essere trovate online. Se stai utilizzando una versione diversa di VyOS, è molto probabile che molti o anche tutti i passaggi descritti in questa guida vengano comunque applicati. Se stai cercando di configurare un server OpenVPN su un sistema operativo diverso, consulta le nostre altre guide.

Se non hai una copia di Viscosity già installata sul tuo client, consulta questa guida all'installazione per l'installazione di Viscosity (Mac | Windows).

Supporto

Sfortunatamente non possiamo fornire alcun supporto diretto per la configurazione del tuo server OpenVPN. Forniamo questa guida come cortesia per aiutarti a iniziare e ottenere il massimo dalla tua copia di Viscosity. Abbiamo testato a fondo i passaggi di questa guida per assicurarci che, se segui le istruzioni dettagliate di seguito, dovresti essere sulla buona strada per goderti i vantaggi dell'esecuzione del tuo server OpenVPN.

Per ulteriori informazioni o aiuto con VyOS, sono disponibili una serie di risorse e forum su https://vyos.io/

Per iniziare

Assumiamo che tu abbia già configurato le tue interfacce di rete come tali:

  • 'FUORI' - eth0 connesso a Internet
  • 'INSIDE' - eth1 connesso alla tua rete domestica locale

Generazione di certificati e chiavi

Il passaggio successivo consiste nel generare le configurazioni per il server e i client, nonché i certificati per utilizzarli. Puoi farlo facilmente seguendo la Guida alla creazione di certificati e chiavi. Genera tutto sul tuo PC o Mac e poi prendi nota del percorso del tuo server cartella creata, utilizzeremo i file qui in seguito.

Se utilizzi il server DNS predefinito (10.8.0.1), dovrai configurare tu stesso un server DNS, le istruzioni sono alla fine di questo articolo. Ti consigliamo invece di utilizzare un server DNS esistente, un server DNS disponibile pubblicamente come quello di Google (8.8.8.8 e 8.8.4.4) è il più semplice.

Ora dobbiamo copiare i seguenti file in /config/auth/ directory sull'appliance VyOS che sarà nel server cartella che openvpn-generate appena creata, si consiglia di utilizzare SCP. Se non hai dimestichezza con SCP, abbiamo un aiuto su come trasferire file con SCP nella nostra Guida introduttiva.

  • ca.crt
  • server.crt
  • chiave.server
  • dh.pem

Se stai usando SCP dalla riga di comando, sarebbe un comando di esempio
scp path/to/server/ca.crt [email protected]:/config/auth/

Configurazione del server OpenVPN

Ci sono diverse impostazioni che dobbiamo personalizzare nella configurazione del nostro server OpenVPN. Nel terminale, accedi alla modalità di configurazione digitando:

configure

Dovresti vedere la richiesta di modifica da $ a # . Se commetti un errore inserendo i seguenti comandi di configurazione, puoi rimuovere un comando inserito in precedenza ripetendolo, ma sostituendo la parola 'set' all'inizio con la parola 'cancella'.

Incolla quanto segue nella finestra del terminale:

# Configure this OpenVPN instance to run as the VPN server
set interfaces openvpn vtun0 mode server

# The OpenVPN server needs to know the location of the Diffie Hellman file
#NOTE: Depending on how you generated your keys, this file name might be 'dh.pem' instead
set interfaces openvpn vtun0 tls dh-file '/config/auth/dh.pem'

# Our VPN connection will be transported over UDP
set interfaces openvpn vtun0 openvpn-option "--proto udp"

# The server needs to keep a record of client virtual IP addresses so that they
# can be reassigned if the server goes down
set interfaces openvpn vtun0 openvpn-option "--ifconfig-pool-persist ipp.txt"

# To ensure that each side of the VPN knows if the connection has been severed,
# we want to ping each side every 10 seconds. If either side fails to recieve a
# ping within 2 minutes, then it will assume the other side is down
set interfaces openvpn vtun0 openvpn-option "--keepalive 10 120"

# There can be security issues if you run the OpenVPN server as root, so we will
# downgrade the user and group
set interfaces openvpn vtun0 openvpn-option "--user nobody --group nogroup"

# To avoid attempting to access resources that may no longer be accessible on
# restart
set interfaces openvpn vtun0 openvpn-option "--persist-key --persist-tun"

# To write (and rewrite) a short summary of current VPN connections every minute
# to a file
set interfaces openvpn vtun0 openvpn-option "--status openvpn-status.log"

# The verbosity of this connection logging (displayed in the Viscosity 'Details'
#  window) can range from 0 (silent) to 9 extremely verbose. We will use the 
# default of 3
set interfaces openvpn vtun0 openvpn-option "--verb 3"

# To prevent more than 10 duplicates of the same log message in a row from
# flooding the Viscosity log
set interfaces openvpn vtun0 openvpn-option "--mute 10"

# The credential files
set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt'
set interfaces openvpn vtun0 tls cert-file '/config/auth/server.crt'
set interfaces openvpn vtun0 tls key-file '/config/auth/server.key'

# The server will use the default OpenVPN port (1194)
set interfaces openvpn vtun0 openvpn-option "--port 1194"

# We need the VPN to create a tun network interface through which we can 
# route all our traffic:
set interfaces openvpn vtun0 openvpn-option "--dev vtun0"

# The VPN requires a private IP subnet. We will use the default OpenVPN IP
# subnet
set interfaces openvpn vtun0 server subnet '10.8.0.0/24'

# We want VPN clients connected to this server to be able to access any hosts
# accessible on your home network. We are assuming that your local network
# subnet is 192.168.0.x/24. If it is something else, you will need to change the
# IP address in the command below.
set interfaces openvpn vtun0 server push-route 192.168.0.0/24

# For enhanced security, set a cipher and auth hash
set interfaces openvpn vtun0 openvpn-option "--cipher AES-256-CBC"
set interfaces openvpn vtun0 openvpn-option "--auth SHA256"

# Lastly, we want to allow hosts on the home network to be able to see VPN
# clients connected to the OpenVPN server
set interfaces openvpn vtun0 openvpn-option "--client-to-client"

Prestare particolare attenzione all'indirizzo IP nel set interfaces openvpn vtun0 server push-route 192.168.0.0/24 . Assicurati che questa sottorete corrisponda alla tua sottorete IP LAN di casa/ufficio. Se non stai configurando questo server VPN per accedere alla tua LAN di casa/ufficio, puoi saltare del tutto questa riga.

Regole del firewall

Useremo il firewall installato di default su VyOS. Se stai installando OpenVPN su un server che ha già una propria configurazione del firewall, assicurati di aggiungere le regole per consentire il nostro traffico OpenVPN. Tuttavia, se questo è solo un semplice server VyOS autonomo, le impostazioni del firewall seguenti dovrebbero essere sufficienti per far funzionare il tuo server OpenVPN.

Ancora in modalità di configurazione , incolla quanto segue nella finestra del terminale:

# First we will set the rules for traffic passing through the server. We want
# the firewall to allow traffic for existing connections to the server, and drop 
# any new ones:
set firewall name OUTSIDE-IN default-action 'drop'
set firewall name OUTSIDE-IN rule 10 action 'accept'
set firewall name OUTSIDE-IN rule 10 state established 'enable'
set firewall name OUTSIDE-IN rule 10 state related 'enable'

# Next we will set the rules to allow the local network to talk to the outside world
set firewall name OUTSIDE-LOCAL default-action 'drop'
set firewall name OUTSIDE-LOCAL rule 10 action 'accept'
set firewall name OUTSIDE-LOCAL rule 10 state established 'enable'
set firewall name OUTSIDE-LOCAL rule 10 state related 'enable'</code>

# If you would like the ability to ping your VyOS server externally, add the following
set firewall name OUTSIDE-LOCAL rule 20 action 'accept'
set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request'
set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp'
set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'

# If you would like the ability to SSH into your server externally (without a VPN connected), add the following
# NOTE - This can be a security risk and is not recommended
set firewall name OUTSIDE-LOCAL rule 30 action 'drop'
set firewall name OUTSIDE-LOCAL rule 30 destination port '22'
set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 30 recent count '4'
set firewall name OUTSIDE-LOCAL rule 30 recent time '60'
set firewall name OUTSIDE-LOCAL rule 30 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 31 action 'accept'
set firewall name OUTSIDE-LOCAL rule 31 destination port '22'
set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'

# Allow external connections to the OpenVPN port. This will allow you to VPN to your server
# from somewhere outside your local network (like a coffee shop)
set firewall name OUTSIDE-LOCAL rule 40 action 'accept'
set firewall name OUTSIDE-LOCAL rule 40 destination port '1194'
set firewall name OUTSIDE-LOCAL rule 40 protocol 'udp'

# Apply these firewall policies:
set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'

# Lastly, we need to enable NAT masquerade:
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '10.8.0.0/24'
set nat source rule 100 translation address 'masquerade'
set nat source rule 200 outbound-interface 'eth1'
set nat source rule 200 source address '10.8.0.0/24'
set nat source rule 200 translation address 'masquerade'

Server DNS

Se hai intenzione di crittografare tutto il traffico di rete tramite il tuo server VPN, ti consigliamo di abilitare il tuo server DNS. VyOS ha un inoltro DNS installato per impostazione predefinita che possiamo utilizzare per fornire il nostro server DNS per la connessione VPN, per prevenire attacchi relativi al DNS.

Ancora in modalità di configurazione , incolla quanto segue nella finestra del terminale:

# We will set the DNS forwarder to store 100 lookups locally, to speed up 
# repeated DNS requests:
set service dns forwarding cache-size '100'

# DNS queries will be resolved coming from the local network:
set service dns forwarding listen-on 'eth1'

# DNS queries will be resolved coming from our VPN connection:
set service dns forwarding listen-on 'vtun0'

# We will use the Google DNS servers (you are free to use your DNS resolution
# service of choice):
set service dns forwarding name-server '8.8.8.8'
set service dns forwarding name-server '8.8.4.4'

Ora che abbiamo finito di impostare la configurazione, salva le modifiche inserendo quanto segue nel terminale:

commit;save

ed esci dalla modalità di configurazione:

exit

Configurazione del router

Se il tuo server VyOS è direttamente accessibile , quindi puoi saltare questa sezione . Non c'è nessun router da configurare.

Tuttavia, se il tuo server VyOS si trova dietro un router (come sul WiFi di casa), dovrai configurare il tuo router per consentire il traffico VPN. A causa dei diversi modelli di router e configurazioni di rete, non siamo in grado di fornire una guida passo passo su come configurare il router per consentire il traffico VPN. Tuttavia, è probabile che sia necessario modificare alcune impostazioni, quindi le descriveremo qui.

Poiché il router indirizzerà tutto il traffico da e verso il tuo server OpenVPN, dovrai configurare il port forwarding in modo che il server OpenVPN sia accessibile dall'esterno. Il port forwarding potrebbe trovarsi nella sezione dell'interfaccia di gestione del router denominata "Server virtuali". In generale, vorrai inoltrare tutto il traffico in entrata al router sulla porta OpenVPN (1194). Dovrai impostare una regola per inviare qualsiasi traffico UDP su queste porte all'indirizzo IP locale del tuo server OpenVPN (che è probabilmente qualcosa nell'intervallo 192.168.0.x).

Se hai impostato il port forwarding, prendi nota anche del tuo indirizzo IP WAN esterno . Questo è l'indirizzo IP assegnato al tuo router dal tuo Internet Service Provider (ISP). Questo indirizzo sarà necessario durante la configurazione della connessione in Viscosità di seguito.

L'altra impostazione principale del router che dovrai considerare è il routing statico. Poiché avrai una VPN configurata, verrà inviato traffico al tuo router con un IP di origine o di destinazione nell'intervallo 10.8.0.x. Questo traffico dovrà disporre di un routing statico in atto per garantire che quando un host riceve una richiesta dal client VPN (sulla sottorete 10.8.0.x) e invia una risposta a quell'indirizzo, il router sappia come convertire 10.8. 0.x indirizzo IP in un indirizzo che comprende (es. 192.168.0.x). Quindi dovrai impostare una regola di routing statica che abbia le seguenti proprietà:

Destinazione:10.8.0.0Subnet mask:255.255.255.0Gateway predefinito:IP del tuo server

dove IP-del-tuo-server è l'indirizzo IP del tuo server OpenVPN sulla rete locale (qualcosa nell'intervallo 192.168.0.x).

Impostazione della viscosità

Il passaggio finale è impostare la viscosità. Grazie a openvpn-generate, è facile come importare e connettere.

Importazione

Copia il file *.visz che hai creato con openvpn-generate sul tuo computer Mac o Windows con Viscosity installato e fai doppio clic sul file. Dovresti vedere un messaggio che informa che la configurazione è stata importata correttamente.

Una volta importato, modifica la tua connessione e vai alla scheda Avanzate. Aggiungi i seguenti due comandi su nuove righe:

cipher AES-256-CBC
auth SHA256

Connessione e utilizzo della connessione VPN

Ora sei pronto per connetterti. Fai clic sull'icona Viscosità nella barra dei menu di macOS o nella barra delle applicazioni di Windows per aprire il menu Viscosità, seleziona la connessione che hai importato e Viscosità si collegherà.

Per verificare che la VPN sia attiva e funzionante, puoi aprire la finestra Dettagli dal menu Viscosità. Ciò ti consentirà di visualizzare i dettagli della connessione, il traffico e il registro di OpenVPN.



Ecco fatto, hai impostato il tuo server OpenVPN personale. Congratulazioni, ora sei libero di godere dei vantaggi di gestire il tuo server OpenVPN!


OpenVPN
  1. Come configurare e configurare un server OpenVPN su Ubuntu 22.04

  2. Come installare e ospitare il server OpenVPN con Docker

  3. Configurazione di un server di offuscamento con Obfsproxy e Viscosity

  4. Installa e configura il server OpenVPN su Ubuntu 20.04

  5. Installa e configura il server OpenVPN FreeBSD 12

Configurazione di un server OpenVPN con Sophos UTM e Viscosity

Configurazione di un server OpenVPN con Sophos XG e Viscosity

Configurazione di un server OpenVPN con Synology e Viscosity

Configurazione di un server OpenVPN con router Tomato e Viscosity

Configurazione di un server OpenVPN con Ubiquiti EdgeRouter (EdgeOS) e Viscosity

Configurazione di un server OpenVPN con Ubuntu e Viscosity