PiVPN server

In deze tutorial laat ik zien hoe je van een Raspberry Pi een VPN-server kunt maken. Hiermee kan je op een veilige manier vanaf het internet met je Raspberry Pi contact maken. Maar waarom eigenlijk? Wat is een VPN precies?

Wat is een VPN?
Een VPN (Virtual Private Network) is een systeem dat de privacy beschermt terwijl je online communiceert. Met behulp van coderingstechnologie laat een VPN een deel van het openbare internet functioneren als een privénetwerk. De VPN verbergt jouw IP-adres en locatie, hierdoor krijg je online meer privacy en veiligheid.

Een ‘normale’ VPN, zoals NordVPN, bestaat uit software die op de computer of smartphone draait en hardware VPN-servers die zich over de hele wereld bevinden. De software op de computer codeert/decodeert het verkeer tussen jouw apparaat en de VPN-server.

De VPN-servers zijn de verbinding tussen jouw apparaat en de rest van het internet. Ze decoderen berichten van het apparaat, vervangen jouw IP-adres door een eigen IP-adres en geven de berichten door aan de bestemming op internet. Ze ontvangen ook berichten van internet, versleutelen deze van end-to-end en geven ze door aan jouw apparaat. Dit is handig als je bijvoorbeeld van een gratis WiFi gebruik maakt dat niet versleuteld is, zoals bij StarBuck’s.

De versleutelde verbinding tussen jouw apparaat en een VPN-server wordt de VPN-tunnel genoemd.

Waarom zou je van een Raspberry Pi een VPN-server willen maken?
Door van een Raspberry Pi een VPN-server te maken heeft de voordelen dat je kan profiteren van een volwaardige VPN-service. Door met internet te communiceren via een Raspberry Pi VPN-server, voorkomt dat jouw ISP jouw online activiteiten bijhoudt. Je kunt ook websites bezoeken zonder jouw echte IP-adres en locatie vrij te geven.

Maar wees je bewust van wat je niet krijgt. Een van de grote voordelen van commerciële VPN-services is dat ze honderden tot duizenden servers hebben in tientallen landen over de hele wereld. Die enorme verzameling geografisch verspreide VPN-servers maakt het mogelijk toegang te krijgen tot geografisch geblokkeerde inhoud. Het gebruik van een VPN voor streaming wordt zelfs steeds populairder om overal ter wereld toegang te krijgen tot mediasites zoals Netflix, Amazon Prime en Disney Plus.

Een ander groot voordeel van het gebruik van een commerciële VPN-service boven een Raspberry Pi VPN-server is onduidelijkheid. Wanneer je een commerciële dienst gebruikt, worden jouw online activiteiten vermengd met duizenden andere gebruikers en de exacte fysieke VPN-server waarmee je verbinding maakt, zal waarschijnlijk regelmatig veranderen. Met de Pi VPN-server zal alle activiteit van jouw apparaat komen en zal het allemaal door de Pi VPN-server stromen. Dit betekent dat je niet opgaat in een menigte andere mensen achter hetzelfde IP-adres.

Veilig via internet de Raspberry Pi benaderen
Een andere toepassing is even zo interessant. Je bent niet thuis en wilt via internet je Raspberry Pi benaderen, zoals het schakelen van de (voordeur) verlichting of de CV die met Domoticz verbonden is.
De eenvoudigste manier is het openzetten van een poort via je router die rechtstreeks naar je Raspberry Pi gaat. In de regel is dit niet veilig genoeg omdat hierdoor ongemerkt aanvallen op je Raspberry plaatsvinden omdat je niet een goede beveiliging er bij hebt geïnstalleerd. Ik heb dit zelf ondervonden. In plaats hiervan kan je ook een VPN verbinding opzetten die meer veiligheid bied aangezien de verbinding beter beveiligd wordt.

DHCP-reservering
Overweeg een DHCP-reservering voor de Raspberry Pi in te stellen als jouw router deze ondersteunt. Normaal gesproken verandert het IP-adres van elk apparaat in jouw netwerk om de zoveel tijd. Hoewel dit bij normaal gebruik niet uitmaakt, is het wel van belang voor dit project. Als het IP-adres van je Raspberry Pi op je thuisnetwerk verandert, moet je het elke keer opzoeken als je de VPN-server probeert te gebruiken.

Een DHCP-reservering is een oplossing voor het probleem. Door jouw router te configureren om altijd hetzelfde netwerk-IP-adres aan uw Pi toe te wijzen, kan je het terugkerende gedoe vermijden om dat adres altijd op te zoeken. Dit is een routerinstelling en de stappen variëren van fabrikant tot fabrikant. Als je de handleiding van jouw router volgt, zou je de taak zeer snel moeten kunnen voltooien.

Dynamische DNS-service
Laten we aannemen dat je de Raspberry Pi hebt aangesloten op jouw thuisnetwerk en dat je deze wilt gebruiken terwijl je niet thuis bent. Je kan inloggen op jouw thuisnetwerk met behulp van een extern bureaubladprogramma en vervolgens verbinding maken met de website of een andere bron.

Deze aanpak werkt prima, op één ding na. Je moet een IP-adres op het thuisnetwerk hebben dat is blootgesteld aan internet, zodat je het externe bureaublad kunt gebruiken. En onthoud dat de IP-adressen op jouw thuisnetwerk op elk moment kunnen veranderen.

Een Dynamic DNS-service biedt een gemakkelijk te onthouden domeinnaam, die bij elke wijziging van het IP-adres wordt bijgewerkt. Je moet dit op jouw router configureren, mogelijk dat het niet gratis is, maar het kan de moeite waard zijn. Als je dit eenmaal hebt ingesteld, kan je altijd inloggen op hetzelfde domein, zonder dat je je zorgen hoeft te maken over wat het onderliggende IP-adres is.

OpenVPN of WireGuard
Je moet nog een beslissing nemen voordat je aan de slag gaat: OpenVPN of WireGuard. Dit zijn de VPN-protocollen die je op je Raspberry Pi kunt gebruiken. In eenvoudige bewoordingen is een VPN-protocol een reeks regels voor het verzenden van gegevens, samen met normen voor de soorten codering die worden gebruikt om de gegevens te beveiligen.

OpenVPN is al enkele jaren het industriestandaard VPN-protocol. Het is privé, veilig en redelijk snel. Maar het is zeer complex en bestaat uit ongeveer 400.000 regels code. Dit maakt het moeilijk te onderhouden en biedt veel mogelijkheden voor hackers om te proberen de code te kraken. Het doet het ook niet erg goed op mobiele apparaten.

WireGuard is de nieuweling in het VPN-protocolblok. Het is veel sneller dan OpenVPN en maakt gebruik van de nieuwste codering. Het is ook veel eenvoudiger dan OpenVPN en vereist 4.000 regels code in plaats van de 400.000 regels in OpenVPN. Het zou voor coders veel gemakkelijker moeten zijn om te onderhouden en veel moeilijker voor hackers om aan te vallen dan OpenVPN. WireGuard biedt ook de beste betrouwbaarheid op mobiele apparaten en kan overschakelen tussen verschillende netwerkinterfaces zonder een verbinding te verbreken.

Opmerking : Ik heb een uitgebreide OpenVPN vs WireGuard – gids ontdekt die deze onderwerpen in meer detail onderzocht heeft.

Een mogelijk nadeel van WireGuard is dat het de IP-adressen van gebruikers op de server opslaat. Commerciële VPN’s die geen logboeken van gebruikersactiviteit bijhouden, moeten stappen ondernemen om hiermee om te gaan wanneer ze WireGuard ondersteunen. 

Na deze uitgebreide uitleg van VPN en de protocollen is het tijd om te starten met het bouwen van de VPN-server.


Hoe maak je van een Raspberry Pi een VPN-server
Deze tutorial gaat over het opzetten van een VPN verbinding met het programma PiVPN. Aan het eind van de tutorial ben je in staat een smartphone met de Raspberry Pi te verbinden. De installatie kan via ssh, zoals Putty. Zorg er allereerst voor dat de Raspberry is voorzien van de laatste software updates.

sudo apt-get update

sudo apt-get upgrade -y

Vervolgens geef je het volgende commando.

curl -L https://install.pivpn.io | bash

De installatie start met het volgende scherm

Tijdens de installatie wordt gevraagd om keuzes te maken. Lees goed wat het systeem aangeeft en waar je <Ok> op zegt.

Welkomstscherm

Klik op <Ok> om verder te gaan.

Netwerkinterface starten

Klik op <Ok>

Netwerk interface kalibreren

Selecteer <No> om een statisch IP-adres in te stellen

Statisch IP-adres

Het advies is om het huidige adres als statisch IP-adres te houden. Kies hier <Yes>

Gebruikerslijst ontleden

Klik op <Ok> om verder te gaan.

Klik op <Ok> om de gebruiker te kiezen.

In het volgende scherm staat de tekst:

‘WireGuard is een nieuw soort VPN dat vrijwel onmiddellijke verbindingssnelheid, hoge prestaties en moderne cryptografie biedt. Het is de aanbevolen keuze, vooral als u mobiele apparaten gebruikt waar WireGuard gemakkelijker op de batterij werkt dan OpenVPN. Open VPN is nog steeds beschikbaar als je het traditionele, flexibele, vertrouwde VPN-protocol nodig hebt of als je functies zoals TCP en een aangepast zoekdomein nodig hebt. Kies een VPN (druk op save om te selecteren)’

Setup PiVPN

Kies hier het gewenste protocol. Ik kies voor het moderne WireGuard boven het traditionele OpenVPN. Klik op <Ok>

51820 is de standaard WireGuard poort. Pas deze naar wens aan of laat deze staan en klik op <Ok>

Specificeer aangepaste poort

Bevestig het poortnummer en klik op <Ok>

In het volgende scherm staat de tekst:

‘Selecteer hieronder de DNS-provider voor jouw VPN-clients (druk op spatie om selecteren). Om jouw eigen te gebruiken, selecteer je Aangepast. Als er een lokale resolver actief is, d.w.z. niet-gebonden, selecteer dan “PiVPN-is-local-DNS” en zorg ervoor dat uw resolver luistert “10.6.0.1”, verzoeken van “10.6.0.0/24”.’

Setup VPN

Ik heb de instelling op Quad9 (IBM) laten staan. Ik lees hier dat dit een prima keus is. Klik op <Ok>

Kijk hier wat je WAN IP-adres is en overeenkomt met het hieronder ingevuld IP-adres.

Hier zal jouw WAN IP-adres staan dat je van je provider ontvangen hebt.

In de meeste gevallen wijzigt het WAN IP-adres niet en kun je op <Ok> klikken. Wijzigt jouw WAN-adres regelmatig, kies dan voor de DNS Entry en vervolgens op <Ok>.

In het volgende scherm staat de tekst:

Klik op <Ok>

In het volgende scherm staat de tekst:

‘Aangezien deze server ten minste één poort open heeft voor het internet, is het raadzaam om upgrades zonder toezicht (unattended) in te schakelen. Deze functie controleert dagelijks op updates van beveiligingspakketten en past ze toe als dat nodig is. Het zal de server NIET automatisch opnieuw opstarten, dus om de updates volledig toe te passen moet je de server regelmatig opstarten.’

Security Updates
Security Updates

Klik op <Yes> om automatisch up-to-date te blijven.

In het volgende scherm staat de tekst:

‘Voer nu ‘pivpn add‘ uit om de klantprofielen te maken. Voer ‘pivpn help‘ uit om te zien wat je nog meer kunt doen! Als je een probleem tegenkomt, lees dan de documentatie aandachtig door. Alle onvolledige berichten of bugrapporten worden genegeerd of verwijderd. Bedankt voor het gebruik van PiVPN.’

Make it so

Als laatste wordt gevraagd een reboot te doen. Klik op <Yes>

Klik op <Ok> om te rebooten

De Raspberry Pi VPN-server is nu klaar voor gebruik.

Na de reboot kan je weer inloggen op je SSH en geef je de volgende commando.

pivpn add

De server vraagt om de client een naam te geven. Ik geef het de naam ‘picademie‘, na de [ENTER] verschijnt de volgende info.

::: Klaar! picademie.conf is succesvol aangemaakt!
::: picademie.conf is gekopieerd naar /home/pi/configs voor eenvoudige overdracht.
::: Gebruik dit profiel slechts op één apparaat en maak extra
::: profielen voor andere apparaten. Je kunt ook
pivpn -qr gebruiken
::: om een ​​
QR-code te genereren die u kunt scannen met de mobiele app.

Een QR-code genereren voor het WireGuard-profiel
Zoals hierboven aangegeven wordt kan je het opgeslagen profiel slechts voor één extern apparaat gebruiken. In het volgende gedeelte laat ik zien hoe je een QR-code kan genereren voor (andere) apparaten a.d.h.v. het WireGuard-profiel dat we op de Raspberry Pi hebben gemaakt.

Je kan deze QR-code scannen met jouw (mobiele) apparaat, de smartphone of tablet. Dit voorkomt dat je het configuratiebestand van de Raspberry Pi naar jouw (mobiele) apparaat moet kopiëren. Gelukkig voor ons wordt de PiVPN-software geleverd met een QR-codegenerator die we kunnen gebruiken. Om een ​​QR-code voor jouw profiel te genereren, geef je de volgende opdracht.

pivpn -qr

Een overzicht van de cliënts verschijnt. Geef hier het nummer van de cliënt waarvoor je een QR-code wilt maken. In dit voorbeeld is het ‘1‘. Direct daarna is er een QR-code zichtbaar.

Je kan deze QR-code vervolgens scannen met een iOS- of Android-apparaat, maar daarvoor moet je wel de WireGuard-app op het apparaat geïnstalleerd zijn. Je vindt de WireGuard-app zowel in de Google Play Store als in de Apple App Store.

WireGuard app

Na het opstarten van de app vraagt het programma een tunnel toe te voegen.

Klik op Add a tunnel en selecteer vervolgens Create from QR code.

De camera op het apparaat gaat aan. Scan nu de QR-code die je hierboven hebt aangemaakt met

pivpn -qr

Bij het scannen van de QR-code wordt een naam voor het profiel gevraagd. In dit voorbeeld gebruik ik ‘picademie‘. Na Save geselecteerd te hebben geeft de WireGuard-app aan de VPN-configuraties toe te willen voegen. Druk nu op Sta toe.

Op dit punt zou je nu met succes een WireGuard VPN op de Raspberry Pi moeten hebben draaien waarbij je met een (mobiel) apparaat, dat met internet verbonden is EN over de VPN-tunnel beschikt, de Raspberry Pi (= pivpn-server) kan benaderen.


Om te zien wat pivpn nog meer aan parameters biedt geef je het commando:

pivpn

Have A Nice Day!

2 Reacties

  1. Beste ,

    Bedankt voor de duidelijke uitleg. Maar er komt toch gelijk een vraag bij mij naar boven. na het configureren van de WireGuard app en de vpn verbinding is op gebouwd, blijft dit dan voor altijd tot stand ? Of je moet meermaals opnieuw connecten via de app om terug te komen in je veilige omgeving.

    • Dag Bart,

      Goede vraag. Ik heb er nooit op hoeven letten of de verbinding tot stand werd gebracht zodra ik met het internet verbinding maakte. Volgens mij ging dit vanzelf na een keer succesvol aangelogd te zijn geweest. Inmiddels werk ik met NordVPN waarbij je na het aanloggen automatisch verbonden wordt met de gewenste verbinding. Voordeel van WireGuard is de snelheid en dat het GRATIS is, hardware niet meegerekend. Nadeel van PiVPN is dat je je router moet configureren als je het goed wilt inrichten, dat wil niet iedereen.

Reacties zijn gesloten.