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

Configurazione di un server OpenVPN con Ubuntu e Viscosity

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

Prima di utilizzare questa guida, ti consigliamo vivamente di leggere l'articolo Introduzione all'esecuzione di un server OpenVPN.

Preparazione

Per questa guida, assumiamo:

  • Hai già installato l'ultima versione di Ubuntu (20.04 al momento della scrittura)
  • Hai root accedere a questa installazione
  • Questa installazione di Ubuntu è un'installazione pulita
  • Conosci il nome delle tue interfacce di rete (istruzioni appena sotto)
  • Hai accesso al server tramite Terminal o SSH
  • Puoi copiare file dentro e fuori dal server usando SCP o un protocollo simile
  • Hai già una copia di Viscosity installata sul tuo dispositivo client

Se è necessario scaricare e installare una copia di Ubuntu, è possibile trovare informazioni su http://www.ubuntu.com/download. Non tratteremo i dettagli della configurazione di un'istanza Ubuntu, molte guide possono essere trovate online. Se stai utilizzando una versione diversa di Ubuntu, è 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).

Se non conosci SSH o SCP, abbiamo alcune istruzioni nella nostra Guida introduttiva.

Per ottenere il nome della tua interfaccia di rete primaria (Accesso WAN), esegui quanto segue sul tuo server Ubuntu:
ip route | grep default | awk '{print $NF}'

Se disponi di una seconda interfaccia di rete per l'accesso alle macchine sulla tua rete locale, avrai bisogno anche di questo nome durante la configurazione del firewall e del routing.

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 Ubuntu, sono disponibili una serie di risorse della community all'indirizzo https://www.ubuntu.com/community

Per iniziare

Innanzitutto, aggiorna il tuo server:

sudo apt-get update
sudo apt-get -y upgrade

Potresti essere informato che è necessario riavviare dopo che gli aggiornamenti del pacchetto sono stati completati. In tal caso, vai avanti e riavvia, quindi accedi di nuovo e continua.

Per configurare un server OpenVPN, dobbiamo installare OpenVPN. Esegui i seguenti comandi, aspettando il completamento di ciascuno, per aggiungere il repository OpenVPNs in modo che OpenVPN venga installato e aggiornato automaticamente, quindi per installare OpenVPN:

sudo wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | sudo apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/stable focal main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list
Nota:se stai utilizzando una distribuzione Ubuntu precedente, sostituisci "focal" nel comando sopra con "xenial" se Ubuntu 16.04 o "bionic" se Ubuntu 18.04.

sudo apt-get update
sudo apt-get -y install openvpn


Generazione di configurazioni, 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. Puoi seguire la sezione per Ubuntu e copiare le configurazioni del tuo client dal server (ti consigliamo questo), oppure generare tutto sul tuo PC o Mac e copiare il server cartella che viene generata sul tuo server Ubuntu.

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.

Dopo aver generato le tue configurazioni, dovrai trasferire la configurazione del server sul tuo server o trasferire le tue configurazioni client dal tuo server. Se hai accesso locale, un'unità USB è la più semplice. In caso contrario, abbiamo un aiuto su come trasferire file con SCP nella nostra Guida introduttiva.

Inoltro IP

Per inoltrare le nostre richieste passando attraverso la VPN, vogliamo che il server OpenVPN agisca come un router. Pertanto, dobbiamo abilitare l'inoltro IP. Nel terminale, possiamo abilitare l'inoltro IP sul server Ubuntu inserendo:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Tuttavia, ogni volta che riavviamo il server, questo comando verrà annullato. Per assicurarci che ciò non accada, dobbiamo modificare il file sysctl.conf usando nano. Inserisci:

sudo nano /etc/sysctl.conf

Scorri verso il basso fino alla sezione:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Elimina il carattere '#' all'inizio della riga in modo che ora diventi:

net.ipv4.ip_forward=1

Quando hai finito, premi ctrl + x per uscire da nano. Salva le modifiche quando richiesto.

Per garantire che gli host sulla rete domestica/dell'ufficio possano trovare il server VPN, dobbiamo fare in modo che il server risponda a qualsiasi richiesta ARP:

echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/proxy_arp

dove ens33 è l'interfaccia di rete della rete domestica/dell'ufficio se disponi di due interfacce di rete, o la tua interfaccia di rete primaria (WAN) in caso contrario (consulta la sezione Preparazione per ulteriori informazioni).

Regole del firewall

Utilizzeremo Uncomplicated Firewall (ufw) installato per impostazione predefinita su Ubuntu per controllare il modo in cui il traffico viene passato attraverso il server OpenVPN. Se il tuo server Ubuntu è accessibile dall'esterno (ha una connessione diretta a Internet con il proprio indirizzo IP, senza router), dovresti usare ufw per consentire la porta OpenVPN che abbiamo impostato sopra (1194). In caso contrario, imposteremo ufw per consentire tutto il traffico e configureremo le impostazioni per il routing.

Se il tuo server Ubuntu NON ha bisogno di ufw per proteggerlo (ovvero è dietro un router o ha un firewall impostato diverso), è necessario impostare la regola di input predefinita per consentire a tutto il traffico di passare attraverso ufw per impostazione predefinita. Per fare ciò, dobbiamo modificare il file di configurazione.

  1. Apri questo file in nano:
    sudo nano /etc/default/ufw
  2. Scorri verso il basso fino alla sezione:
    # Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
    # you change this you will most likely want to adjust your rules.
    DEFAULT_INPUT_POLICY="DROP"
  3. Poiché il nostro server non utilizzerà questo firewall per la protezione, modificalo da "DROP" a "ACCEPT"
  4. Scorri verso il basso fino alla sezione:
    # Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
    # if you change this you will most likely want to adjust your rules
    DEFAULT_FORWARD_POLICY="DROP"
  5. Modifica la politica di inoltro da "DROP" a "ACCEPT"
  6. Premi ctrl + x per uscire da nano. Salva le modifiche quando richiesto.

Se il tuo server Ubuntu HA bisogno di ufw per proteggerlo , è necessario dirgli quali porte consentire poiché ha le politiche di input e di inoltro predefinite di DROP. Se stai eseguendo il server OpenVPN da una posizione remota, dovrai accedervi tramite SSH per modificare le impostazioni. Pertanto, dobbiamo dire al firewall di consentire il traffico SSH.

  1. Immettendo quanto segue nel terminale:
    sudo ufw allow ssh
  2. Il traffico VPN che invieremo al server OpenVPN sarà su UDP sulla porta 1194, quindi accedi al terminale:
    sudo ufw allow 1194/udp

Se hai altri servizi in esecuzione sul tuo server Ubuntu, devi assicurarti di consentire anche il loro traffico attraverso ufw. Assicurati di aggiungere eventuali regole di autorizzazione per qualsiasi altra porta su cui è in ascolto il tuo server Ubuntu (come un server multimediale Plex o forse il tuo server di posta elettronica).

Successivamente, indipendentemente dalla configurazione della tua rete , è necessario impostare le regole di instradamento per ufw.

  1. Apri il file di configurazione ufw in nano:
    sudo nano /etc/ufw/before.rules
  2. Sposta il cursore sotto la sezione:
    #
    # rules.before
    #
    # Rules that should be run before the ufw command line added rules. Custom
    # rules should be added to one of these chains:
    # ufw-before-input
    # ufw-before-output
    # ufw-before-forward
  3. Incolla quanto segue:
    # START OPENVPN RULES
    # NAT table rules
    *nat
    :POSTROUTING ACCEPT [0:0]

    # Uncomment the next POSTROUTING line and replace ens33 with the name
    # of your Local Network Interface if you have a second network interface
    # for accessing machines on your local network
    # Allow OpenVPN client to communicate with local home network
    #-A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/24 -o ens32 -j MASQUERADE

    # Allow traffic from OpenVPN client to your WAN and/or LAN via ens33
    -A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
    COMMIT
    # END OPENVPN RULES
    • Sostituisci ens33 con il nome della tua interfaccia di rete primaria se è diversa (consulta la sezione Preparazione per maggiori informazioni)
  4. Sposta il cursore sotto la sezione:
    # Don't delete these required lines, otherwise there will be errors
    *filter
    :ufw-before-input - [0:0]
    :ufw-before-output - [0:0]
    :ufw-before-forward - [0:0]
    :ufw-not-local - [0:0]
    # End required lines
  5. Incolla quanto segue:
    #Accept all traffic to and from VPN
    -A ufw-before-input -i tun+ -j ACCEPT
    -A ufw-before-output -i tun+ -j ACCEPT

    # Forward traffic to and from the VPN
    -A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
    -A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
  6. Premi ctrl + x per uscire da nano. Salva le modifiche quando richiesto.

Ufw è ora pronto per essere attivato.

  1. Nel terminale, digita:
    sudo ufw enable
  2. Se sei SSH in questa istanza di Ubuntu, visualizzerà il prompt:
    Command may disrupt existing ssh connections. Proceed with operation (y|n)?
    A cui dovresti rispondere con y .

Verrà quindi visualizzato il seguente output (indipendentemente da SSH o meno)

Firewall is active and enabled on system startup

Avvio del server OpenVPN

A questo punto le basi sono complete. La configurazione e i file del tuo server dovrebbero essere sul tuo server, generati sul server o copiati da dove li hai generati.

Per prima cosa, copia i file di configurazione del server nella directory OpenVPN:

sudo cp /path/to/configs/server/* /etc/openvpn/

Ora avvia il tuo server e abilita anche l'avvio dopo un riavvio.

sudo systemctl enable [email protected]
sudo systemctl start [email protected]

Per controllare lo stato del server, inserisci:

sudo systemctl status [email protected]

A cui dovrebbe rispondere con:

Active: active (running) since Thu 2017-06-01 17:06:29 PDT; 4s ago

Se il server non è elencato come attivo (in esecuzione), dovresti vedere un output di log che mostra cosa è andato storto.

Il tuo server OpenVPN è ora attivo e funzionante e pronto per la tua connessione.

Configurazione del router

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

Tuttavia, se il tuo server Ubuntu si trova dietro un router (come sul WiFi di casa), dovrai configurare il tuo router per consentire il traffico VPN. Per ulteriori informazioni, consulta l'articolo Introduzione all'esecuzione di un server OpenVPN.

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.

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!

Server DNS di base

Se si sceglie di eseguire il proprio server DNS per i client, di seguito è riportato un esempio di configurazione per dnsmasq. Installa dnsmasq con il seguente comando:

sudo apt-get install -y dnsmasq

Devi prima disabilitare l'istanza dnsmasq fornita da NetworkManager per impostazione predefinita. Questa istanza predefinita è limitata e non ci consentirà di ascoltare le richieste DNS tramite la VPN.

  1. Apri la configurazione di NetworkManager:
    nano /etc/NetworkManager/NetworkManager.conf
  2. Commenta la riga che abilita dnsmasq aggiungendo un carattere '#' all'inizio della riga:
    dns=dnsmasq
  3. Premi ctrl + x per uscire da nano. Salva le modifiche quando richiesto.

Successivamente abbiamo bisogno di modificare alcune delle configurazioni predefinite.

  1. Crea un backup della configurazione originale di dnsmasq:
    cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  2. Imposta il server DNS per l'ascolto delle richieste dal server Ubuntu (127.0.0.1) e dalla VPN (10.8.0.1):
    echo -e "listen-address=127.0.0.1, 10.8.0.1\nbind-interfaces" > /etc/dnsmasq.conf
  3. Impedisci alle nostre richieste DNS di inondare i server DNS radice con richieste errate:
    echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
  4. Utilizza i server DNS di Google per risolvere le richieste (sei libero di utilizzare il tuo servizio di risoluzione DNS preferito):
    echo -e "server=8.8.8.8\nserver=8.8.4.4" >> /etc/dnsmasq.conf
  5. Riavvia il servizio dnsmasq per attivare le nostre modifiche:
    service dnsmasq restart

Per verificare che il server DNS sia in ascolto sugli indirizzi che abbiamo richiesto, digita:

netstat -anup

Dovresti vedere un elenco di indirizzi, inclusi 127.0.0.1 e 10.8.0.1:

Proto Recv-Q Send-Q Local Address         Foreign Address       State     PID/Program name
...
udp        0      0 127.0.0.1:53          0.0.0.0:*                       54892/dnsmasq   
udp        0      0 10.8.0.1:53           0.0.0.0:*                       54892/dnsmasq   
...

Infine, dobbiamo assicurarci che dnsmasq venga avviato dopo OpenVPN all'avvio del sistema. Per impostazione predefinita, dnsmasq viene eseguito prima di OpenVPN, il che gli impedisce di configurare il server DNS per la VPN poiché la VPN non esiste ancora.

  1. Crea un backup del file originale:
    cp /etc/rc.local /etc/rc.local.bak
  2. Digita:
    echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
  3. Rendi eseguibile questo script:
    chmod +x /etc/rc.local

Ora abbiamo finito di configurare il server DNS.


OpenVPN
  1. Installazione e configurazione di Plex Media Server su Ubuntu

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

  3. Configurazione di Amavis e ClamAV su Ubuntu Mail Server

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

  5. Installa e configura il server OpenVPN su Ubuntu 20.04

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 VyOS e Viscosity