GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come installare e ospitare il server OpenVPN con Docker

Panoramica

Questo post copre la procedura su come installare e ospitare il server OpenVPN con Docker. Ciò significa che saremo in grado di utilizzare Docker per installare il server OpenVPN ed eseguirlo come servizio, generare configurazioni di connessione client e certificati, che in seguito potremo utilizzare per connettere più client sul nostro server VPN. Questo metodo funziona su qualsiasi distribuzione Linux in cui Docker sia installato e in esecuzione.

NOTA – Questa configurazione è per un ambiente senza password, il che significa che il client non utilizzerà nome utente e password per connettersi al server, ma utilizzerà i certificati client per connettersi.

Se non ti piace la soluzione o preferisci un altro metodo, abbiamo coperto lo stesso processo anche con Wireguard e Docker. Puoi verificarlo in questo post.

Prerequisiti:

– Docker installato e in esecuzione – se non è installato, controlla questo post per le istruzioni di installazione di Docker su Debian e Ubuntu

– Contenitore Docker che andremo all'utente – LINK (controlla anche per ulteriori informazioni se necessario)

Installazione del contenitore Docker del server OpenVPN

1. Il primo passaggio consiste nel creare un contenitore del volume di dati per OpenVPN, in modo che possa archiviare tutti i dati, i file di configurazione e i certificati. Si suggerisce di aggiungere il prefisso "ovpn-data-" e quindi aggiungere un'altra parola desiderata alla fine. Ad esempio, dovrebbe assomigliare a questo:ovpn-data-example. E sostituisci la parola esempio con quello che vuoi.

Quindi nel terminale esegui il comando:

OVPN_DATA="ovpn-data-example"

Ora creeremo il contenitore del volume di dati:

docker volume create --name $OVPN_DATA

Nota:se non hai aggiunto Docker i privilegi elevati sul tuo host Linux, dovrai aggiungere sudo ogni volta che desideri eseguire comandi docker.

2. Quindi scarica il file immagine della finestra mobile OpenVPN con l'argomento per impostarlo per utilizzare l'indirizzo IP pubblico (host) del tuo server o il tuo nome di dominio tramite il protocollo UDP (puoi anche utilizzare il protocollo TCP):

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM

Sostituisci VPN.SERVENAME.COM con il tuo indirizzo IP pubblico o con un nome di dominio che hai registrato e indirizzato al tuo server. Questa è la configurazione se stai ospitando il tuo server su un cloud (come su AWS, Azure, UpCloud, Digital Ocean, Linode ecc...).

Per l'opzione di self-hosting a casa, questo vale anche se hai un indirizzo IP pubblico statico, inoltre dovrai eseguire il port forwarding sul tuo router (modem) per puntare al tuo host (server). Se non disponi di un indirizzo IP statico, dovrai utilizzare un DNS dinamico.

Generazione e recupero di certificati CA e client

3. Ora dobbiamo avviare il nostro sistema PKI per generare il certificato CA per il nostro server e anche per i certificati client:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Seguire le istruzioni. Se prevedi di installare OpenVPN su un server cloud con risorse limitate (ad esempio, 1 CPU e 1 GB di RAM), la generazione del certificato del server CA può richiedere del tempo (circa 15 minuti).

Quando avvii la PKI per OpenVPN, ti verrà prima chiesto di fornire una password per il certificato CA.

NOTA IMPORTANTE – Annota da qualche parte la passphrase della CA, ti servirà in seguito durante il processo di configurazione e ogni volta che genererai un certificato client.

Successivamente ti chiederà di fornire un nome per la CA. Puoi inserire qualsiasi cosa.

Il processo di generazione della CA richiederà del tempo.

Una volta completato, genererà una chiave privata e chiederà nuovamente di fornire la passphrase della CA che hai inserito in precedenza. Ti chiederà 2 volte la password.

Il certificato CA generato sarà valido per i prossimi 3 anni.

Avvia il servizio server OpenVPN

4. Esegui il comando Docker per avviare il contenitore OpenVPN:

docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Nota – l'argomento nel comando -p 1194:1194/udp – anche una parte importante di questa configurazione. Questo argomento imposterà il nostro OpenVNP su quale porta ascoltare e utilizzare per stabilire la comunicazione tra il server e il client. Nel comando sopra è impostato per utilizzare la porta 1194 (numero a sinistra per il contenitore Docker e numero a destra per il server host), perché OpenVPN per impostazione predefinita utilizza il numero di porta 1194 tramite il protocollo UDP. Modifica questo numero se prevedi di utilizzare un numero di porta diverso.

Genera il certificato client ed estrai il file di configurazione del client dal container all'host

5. Eseguire questo comando per generare un certificato per un dispositivo client:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

L'argomento CLIENTNAME nel comando sopra lo puoi sostituire con quello che vuoi. Questo è per il nome file del certificato e per l'identificazione del cliente. Il comando genererà anche un certificato senza password. Il certificato verrà inserito nella home directory dell'utente sul filesystem host (nome utente che stai utilizzando per accedere all'host tramite SSH) NON sul contenitore Docker.

Durante la generazione dei certificati client, OpenVPN ti chiederà di fornire la passphrase della CA.

NOTA:i certificati generati, come mostrato nelle immagini, dureranno per 3 anni dal momento in cui li hai creati.

6. Esegui questo comando per compilare il file di configurazione della connessione OpenVPN e recuperarlo dal contenitore Docker al server host

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Dopodiché, avrai bisogno di un client FTP, SFTP o SCP per connetterti al tuo server host e scaricare il file OpenVPN e usarlo per connetterti al tuo server VPN.

Connettiti al tuo server OpenVPN

Per connetterti al tuo server VPN, dovrai installare il client OpenVPN. Esistono app client per Windows e Android:OpenVPN Connect. Nell'app importa il file openvpn come nuovo profilo e connettiti.

C'è ovviamente il client per Linux. Il gestore di rete su Linux supporta OpenVPN ma chiede di importare tutti i certificati separatamente. Quindi, per semplicità, suggerisco di installare anche il client dell'app. Sulle distribuzioni Debian e Ubuntu:

$ sudo apt install openvpn

Una volta installato, vai alla posizione in cui è posizionato il file del certificato ed esegui il comando:

$ sudo openvpn ./CLIENTNAME.ovpn

Il risultato della connessione riuscita dovrebbe essere simile a questo

Assicurati di aprire le porte appropriate sul tuo server

Anche una nota importante affinché funzioni. Se prevedi di ospitarlo su un cloud o se hai installato un firewall sul tuo server, devi aprire e consentire le porte che hai assegnato al tuo server OpenVPN.

In questo caso, il server è su cloud e dovevo aprire le porte 1194 per il protocollo UDP sul firewall.

Collega più client

Puoi connettere più client con questa configurazione. Un metodo consiste nell'utilizzare un certificato su più dispositivi, ma il metodo è meno sicuro. Per questo dovresti accedere al file di configurazione del server OpenVPN che si trova nel contenitore Docker e aggiungere l'argomento:

duplicate-cn

Consiglio di emettere/generare un nuovo certificato separato per ogni cliente. Per ottenere ciò, devi ripetere un paio di comandi:

Riavvia il volume della finestra mobile per OpenVPN.

OVPN_DATA="ovpn-data-example"
docker volume create --name $OVPN_DATA

Quindi genera un nuovo certificato client ma utilizza un nome diverso invece di CLIENTNAME:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

e ovviamente recuperare il file di configurazione di OpenVPN e scaricare il file:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Riepilogo

Abbiamo spiegato il processo come installare OpenVPN con Docker, come ospitare OpenVPN con Docker, eseguire il sistema PKI, generare il certificato CA e il certificato client e come connettersi. Personalmente mi piace questa configurazione, in primo luogo per la facilità d'uso, la gestione e il modo in cui l'installazione ha una sicurezza piuttosto elevata sia sul server che sul client. Tutti gli oggetti di scena e il merito a KyleManna per aver creato un'immagine Docker così fantastica.


Docker
  1. Come installare e configurare l'host Docker minimalista di Debian 8

  2. Installa il server VPN Wireguard con Docker

  3. Come installare e utilizzare Docker Compose su CentOS

  4. Come installare Nextcloud con Docker sul tuo server Linux

  5. Come installare OpenVPN su Ubuntu 18.04

Come installare e configurare Apache Web Server con Virtual Host su Debian 10

Come installare e utilizzare Docker Compose su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Come installare Docker e Docker Compose su Linux

Come installare Docker su Rocky Linux e AlmaLinux