Basics van het uitvoeren van OpenVPN in Docker op Ubuntu

Ben je bezorgd over hoe je vrijelijk toegang kunt krijgen tot internet zonder veel beperkingen en gegevensonzekerheden? Maak je geen zorgen meer! Begin met het hosten van je VPN-server met behulp van OpenVPN in Docker.

Met Docker- en OpenVPN-technologieën kun je in een mum van tijd je VPN-server opzetten en laten draaien. En in deze tutorial leer je de basisprincipes van het draaien van een OpenVPN-server gehost in een Docker-container.

Blijf op de hoogte en houd je VPN-server veilig met OpenVPN Docker!

Vereisten

Deze tutorial zal een praktische demonstratie zijn. Als je meedoet, heb je het volgende nodig:

  • A Linux-based operating system (OS) – This tutorial uses Ubuntu v22.04, but other Linux distributions will work.
  • Docker geïnstalleerd en actief – Deze tutorial maakt gebruik van Docker v20.10.17.

Het maken van een Docker-container voor OpenVPN

Containeriseren is als het verpakken van code en al zijn afhankelijkheden als een standaard software-eenheid om je applicatie snel en betrouwbaar te kunnen uitvoeren. Er zijn verschillende manieren om een OpenVPN Docker-container te maken. Je kunt de container vanaf nul opbouwen of een kant-en-klare container downloaden van de Docker Hub.

Maar in deze tutorial zal je een bestaand OpenVPN Docker-imagebestand gebruiken. Kant-en-klare containers bieden verschillende voordelen, omdat ze grondig getest zijn op verschillende kwetsbaarheden met de steun van een grote community van ontwikkelaars. Bovendien helpen deze containers je tijd te besparen en de noodzaak om het wiel opnieuw uit te vinden te elimineren.

Om een OpenVPN Docker-container te maken:

1. Open je terminal en voer het onderstaande OVPN_DATA commando uit, wat geen output geeft maar een datavolumenaam instelt op ovpn-data-test in de OVPN_DATA variabele.

OVPN_DATA="ovpn-data-test"

2. Voer vervolgens het volgende docker volume create commando uit om een datavolume te maken met de naam die je hebt ingesteld in de $OVPN_DATA variabele.

Dit commando geeft geen output maar maakt een datavolumecontainer voor OpenVPN waarin alle data, configuratiebestanden en certificaten worden opgeslagen.

docker volume create --name $OVPN_DATA

3. Ten slotte, voer het volgende docker run commando uit om het OpenVPN Docker-image te downloaden en te installeren met het volgende:

  • Specificeer de opslagruimte (-v) binnen de container die gescheiden is van de rest van het bestandssysteem van de container. In dit geval wordt de OpenVPN Docker-image opgeslagen in de map /etc/openvpn.
  • Specificeer het logmechanisme (--log-driver) dat de informatie van de draaiende containers en services behoudt (none).
  • Instrueert Docker om automatisch de container te verwijderen (–rm) wanneer deze al bestaat.

Zorg ervoor dat u (YourPublicIP.com) vervangt door het openbare IP-adres of de domeinnaam van uw server (host) (indien van toepassing) via het UDP-protocol. Maar merk op dat u ook het TCP-protocol kunt gebruiken.

TCP is een verbinding-georiënteerd protocol, terwijl UDP een verbindingloos protocol is.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://YourPublicIP.com
Installing OpenVPN on Docker container

Merk op dat als u van plan bent zelfhosting of een openbaar IP-adres te gebruiken, u poortdoorschakeling op uw router/modem moet instellen.

OpenVPN-client beveiligen met certificaten

U hebt met succes de OpenVPN Docker-client op uw machine geïnstalleerd, dus hoera! Maar voordat u OpenVPN gebruikt, moet u eerst de configuratie van de OpenVPN-client instellen.

Alleen omdat u aan OpenVPN werkt, betekent niet dat u uw VPN-server voor de hele wereld moet openen. U heeft certificaten nodig om uw OpenVPN-client te beveiligen:

1. Voer de onderstaande docker run-opdracht uit om de CA- en clientcertificaten te genereren en op te halen. Deze opdracht maakt draaiende OpenVPN-containers (-it) vanuit het opgegeven image binnen de hoofdcontainer.

In de meeste gevallen kost het genereren van CA-servercertificaten tijd, afhankelijk van de middelen van de machine die u gebruikt.

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

Typ ja en druk op Enter, zoals hieronder weergegeven, om het OpenVPN PKI-systeem te starten.

Initiating the OpenVPN PKI system

2. Geef vervolgens een nieuw wachtwoord voor het CA-certificaat op en bevestig dit, en druk op Enter. Noteer het wachtwoord op een veilige plek, omdat u het later nodig heeft bij het instellen en genereren van een clientcertificaat.

Setting a new CA certificate password

3. Geef een unieke naam op voor uw CA-certificaat en druk op Enter.

Naming the new CA certificate

4. Voer nu de CA-wachtwoordzin in die u in stap twee heeft ingesteld om te controleren of het verzoek overeenkomt met de handtekening.

Checking \the request matches the signature

5. Voer uw wachtwoordzin opnieuw in om een privésleutel te genereren.

Generate a private key by entering the CA passphrase

6. Voer vervolgens de onderstaande opdracht uit om de OpenVPN-serverdienst op Docker te starten om een OpenVPN-client in te stellen, waarbij:

  • De -p-optie stelt de poort (1194) in die luistert en de verbinding initieert tussen de server en de client.

U kunt poort 1194 wijzigen om aan uw voorkeuren te voldoen als u de standaard OpenVPN-poort niet wilt gebruiken.

  • Het argument –cap-add=NET_ADMIN past de extra Linux-mogelijkheden toe door de netwerkinterfaces te wijzigen die Docker standaard niet toekent.
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
Setting the port OpenVPN will listen to

7. Zodra de poort is ingesteld, voert u de onderstaande docker run-opdracht uit om het volgende uit te voeren:

  • Genereer het cliëntcertificaat en download het cliëntconfiguratiebestand (.ovpn) vanuit de Docker-container naar de hostserver. Het gegenereerde certificaat heeft geen wachtwoord, zoals gespecificeerd in het no-pass argument in de opdracht.
  • Stel de naam van het bestand van het OpenVPN-certificaat en de cliëntidentificatie in op CLIENTAPP. Het certificaat wordt opgeslagen in de gebruikersdirectory van de host, niet in de Docker-container.
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTAPP nopass

Voer uw wachtwoord in, zoals hieronder weergegeven, om het genereren van het certificaat te voltooien.

Generating the VPN client certificate

8. Voer vervolgens de onderstaande opdracht uit om het OpenVPN-verbinding (ovpn_getclient) configuratiebestand vanuit de container naar de hostserver te genereren en te downloaden.

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

9. Ga naar de gebruiker/home directory op uw hostserver (Linux-machine) en overzet het .ovpn bestand (CLIENTAPP.ovpn) naar uw Android-apparaat.

10. Start ten slotte uw OpenVPN Connect-clientapp op uw Android-apparaat.

Tik op BROWSE onder het tabblad FILE en selecteer het .ovpn bestand (CLIENTAPP.ovpn) dat u naar uw Android-apparaat heeft overgezet. Hiermee wordt een nieuw profiel toegevoegd aan de OpenVPN Connect-client.

Importing the .ovpn file to the OpenVPN Connect client

Bij succesvolle verbinding ziet u het onderstaande resultaat.

Verifying successful connection to the VPN server

Toegang tot de OpenVPN Web-UI

Maakt u zich zorgen over het aantal opdrachten dat u moest uitvoeren om toegang te krijgen tot uw VPN-server? Waarom probeert u niet een eenvoudige op web gebaseerde UI?

OpenVPN biedt een webgebaseerde installatie- en configuratietoolset waarmee snelle implementatie van VPN-oplossingen op afstand mogelijk is. De toolkit wordt geleverd in een enkel pakket genaamd de OpenVPN-toegangsserver.

Om toegang te krijgen tot de OpenVPN-web-UI, moet u het pakket installeren:

1. Voer het volgende docker pull commando uit om de nieuwste OpenVPN Docker-container (openvpn-as) te downloaden en te installeren vanaf de Linux Server Docker Hub (linuxserver).

docker pull linuxserver/openvpn-as
Downloading OpenVPN Access Server Docker container

2. Nadat deze is gedownload, voert u het onderstaande docker create commando uit om een nieuwe Docker-container met de naam openvpn-as te maken met het volgende:

  • -v /home/docker/openvpn-as/config: /config – Stelt de directory in om de configuratiebestanden op te slaan.
  • --restart=always – Zorgt ervoor dat de container altijd start bij het opstarten van het systeem. U kunt ervoor kiezen dit argument niet toe te voegen als u niet wilt dat de container opnieuw wordt gestart.
  • -e PGID=1001 -e PUID=1001 – Stelt de gebruikers-ID in om toestemmingsproblemen tussen de hostserver en de container te elimineren.
  • –net=host –privileged – Bepaalt hoe de OpenVPN Access Server wordt uitgevoerd in de container.
docker create --name=openvpn-as --restart=always -v /home/docker/openvpn-as/config:/config -e INTERFACE=eth0 -e PGID=1001 -e PUID=1001 -e TZ=Africa/Nairobi --net=host --privileged linuxserver/openvpn-as
Creating a new Docker container (openvpn-as)

3. Voer vervolgens het onderstaande docker start commando uit om toegang te krijgen tot de OpenVPN-webinterface via de OpenVPN Access Server Docker-container die je hebt aangemaakt in stap twee.

docker start openvpn-as
Starting the OpenVPN access server Docker container

4. Open tot slot je favoriete webbrowser en ga naar de OpenVPN-webinterface met je lokale IP-adres (bijvoorbeeld https://JouwIP:943/admin). Vervang JouwIP door het daadwerkelijke IP-adres van je server.

Als alles goed gaat, zie je de inlogpagina van de OpenVPN Access Server zoals hieronder weergegeven.

Voer admin en het wachtwoord in voor de gebruikersnaam en het wachtwoord, en klik op Aanmelden om toegang te krijgen tot het dashboard van de OpenVPN Access Server.

Merk op dat de standaard gebruikersnaam en het wachtwoord respectievelijk admin en wachtwoord zijn. Je kunt de referenties naar wens wijzigen.

Accessing the OpenVPN Access Server web UI

Na het inloggen zie je het dashboard van de OpenVPN Access Server hieronder.

Accessing the OpenVPN Access Server dashboard

DNS configureren voor een snellere en veiligere verbinding

Op dit punt werkt je OpenVPN Access Server correct. Maar om de prestaties van je VPN-server te verbeteren, moet je de DNS configureren.

Om DNS te configureren, moet je toegang krijgen tot de webinterface van de OpenVPN-server en de DNS-instellingen bijwerken met Google of je voorkeurs-DNS-adressen. Google biedt de snelste DNS-servers die je zult gebruiken in je OpenVPN Access Server.

1. Klik op VPN-instellingen (linkerpaneel) onder het tabblad CONFIGURATIE op je OpenVPN Access Server-dashboard.

Scroll naar beneden naar de DNS-instellingen sectie en schakel de optie In Specifieke DNS-servers laten gebruiken door clients in, zoals hieronder weergegeven.

Enabling custom OpenVPN DNS addresses

2. Vervolgens, werk de Primaire (8.8.8.8) en Secundaire DNS-server (8.8.8.4) bij met Google DNS-adressen zoals hieronder weergegeven, en klik op Instellingen Opslaan om de wijzigingen op te slaan.

Setting custom OpenVPN DNS addresses

3. Nadat de wijzigingen zijn opgeslagen, klik op Server opnieuw starten om de server te herstarten zodat de wijzigingen van kracht worden.

Updating the server settings

4. Navigeer nu naar de OpenVPN Access Server (bijv., https://JouwIP:943/admin) op je Linux machine. Vervang JouwIP met het IP-adres van je server. Als de configuratie correct werkt, zie je dezelfde pagina hieronder.

Log in met de standaard referenties (admin en wachtwoord) voor gebruikersnaam en wachtwoord.

Logging in to OpenVPN Access Server

5. Klik op een van de platformpictogrammen om de client-applicatie te downloaden en klik op Jezelf (gebruikersvergrendeld profiel) om het client .ovpn bestand te downloaden.

Downloading the .ovpn config file and client app

6. Start tot slot de OpenVPN Client die je hebt gedownload en importeer het .ovpn bestand zoals je deed in de laatste stap van het “Beveiligen van OpenVPN Client met Certificaten,” zoals hieronder weergegeven.

Connecting to the OpenVPN server

Conclusie

Je VPN-server hosten zou nooit een complexe taak moeten zijn, laat staan het beveiligen van je serververbinding. Gelukkig staat OpenVPN Docker klaar om de dag te redden. En in deze tutorial heb je geleerd om OpenVPN te installeren, op te zetten en te configureren met Docker in Ubuntu. Je hebt ook besproken hoe je toegang tot OpenVPN in een Docker-container beveiligt met OpenVPN CA en clientcertificaten.

Afgezien van het benaderen van je OpenVPN-server via een opdrachtregelinterface, heb je nu ook een visuele manier om dit te doen via de OpenVPN Access Server web-UI. Je hebt een snelle implementatie van VPN gerealiseerd door configuratiebestanden voor de OpenVPN-clientapps te genereren.

Waarom bouw je niet voort op deze nieuw verworven kennis door VPN-tunneldiensten voor je toepassingen te creëren met behulp van WireGuard VPN? Verken de wereld van onbeperkte mogelijkheden met zelfgehoste VPN-services!

Source:
https://adamtheautomator.com/openvpn-in-docker/