Een Raspberry Pi is prima geschikt om te gebruiken als OpenVPN server. Met behulp van OpenVPN en PiVPN kun je een versleutelde verbinding opzetten met je thuisnetwerk en vandaar uit veilig surfen over het internet met het IP adres van je vaste aansluiting.
Door gebruik te maken van een VPN verbinding voorkom je bijvoorbeeld dat hackers je wachtwoorden kunnen stelen via een publiek (Wi-Fi) netwerk. Je kunt de verbinding ook gebruiken om geografische beperkingen te omzeilen, via de verbinding kun je bijvoorbeeld vanuit het buitenland Uitzending gemist en dergelijke diensten bekijken.
Het installeren en de configuratie van de OpenVPN software kan lastig zijn en geeft vaak problemen omdat bij vele kennis van netwerken ontbreekt.
Wanneer je gebruik maakt van het installatie script PiVPN dan kun je de installatie en configuratie van de OpenVPN server met één commando uitvoeren op je Raspberry Pi. Hierbij wordt je met behulp van wizards door de installatie geholpen.
OpenVPN installeren met PiVPN
Je kunt de installatie via PiVPN in de meeste gevallen combineren met andere software op de Raspberry Pi, wil je vanaf start beginnen dan kun je het beste gebruik maken van het Raspbian Lite image als basis.
Hoewel er geen melding van wordt gemaakt op de project pagina van pivpn is het toch verstandig de installatie uit te voeren als ‘root’, dit doe je door het het onderstaande commando uit te voeren:
sudo -i
Hierna kunnen we starten met de geautomatiseerde PiVPN installatie van OpenVPN:
curl -L http://install.pivpn.io | bash
Het installatie script wordt gedownload en automatisch gestart, tijdens de installatie wordt je begeleid door een aantal keuze schermen.
Belangrijk voor een OpenVPN server is dat deze een vast IP adres gebruikt binnen je lokale netwerk, mocht je tijdens de installatie geen vast IP adres gebruiken dan krijg je mogelijk om deze via het installatie menu in te stellen.
Bij de vraag of je UDP of TCP wilt gebruiken, kies je voor de standaard keuze ‘UDP‘.
Ook het poort nummer dat wordt gebruikt voor de verbinding ‘1194‘ laat je ongewijzigd.
Na enige tijd zal de vraag verschijnen of je een 1024, 2048 of 4096 bits sleutel wilt gaan gebruiken, ga je voor veiligheid kies dan de 4096 maar houd er rekening mee dat genereren van de key lang zal duren. Voor normaal ‘huishoudelijk’ gebruik is een 1024 of 2048 bits sleutel veilig genoeg, maar de 4096 bits is veiliger! Maak je gebruik van Android devices kies dan voor een 2048 bits sleutel.
Nadat de sleutel is gegenereerd krijg je de vraag of je verbinding wilt maken op basis van een het extern IP adres of een hieraan gekoppelde DNS naam.
Dit was de laatste stap in de installatie van de OpenVPN server, na de herstart kunnen we gebruikers gaan toevoegen met het script pivpn add
OVPN client profiel aanmaken
Na de herstart kunnen we een ovpn client profiel aanmaken waarmee we verbinding kunnen maken met onze OpenVPN server. Je maakt een nieuw profiel aan met het commando:
sudo pivpn add
Vul de gewenste client naam in en druk op enter, hierna zal je gevraagd worden een PEM pas phrase op te geven dit is het wachtwoord wat op de client moet worden ingegeven om verbinding te maken met de server.
Hierna wordt er gevraagd of je de gegevens in het certificaat wilt wijzigen, deze vragen kun je overslaan door op enter te drukken, dit doe je ook als er wordt gevraagd om een challenge password. De vraag ‘Sign the certificate?’ beantwoord je met ‘y’.
In de map /home/pi/ovpns worden de .ovpns bestanden opgeslagen, deze kun je met behulp van een SFTP client eenvoudig downloaden. Het ovpn bestand bevat zowel de server instellingen als de benodigde certificaten.
Port forwarding op router
Om vanaf het internet een verbinding met de OpenVPN server op Raspberry Pi te kunnen te zetten moet UDP poort 1194 vanaf het publieke IP adres worden doorgestuurd naar het IP van de Raspberry Pi een zogenaamde ‘Port Forwarding’. De procedure hiervan verschilt per broadband router, maar is via Google vaak snel terug te vinden. In de Experia Box (ZTE) van KPN vind je deze instellingen terug onder Application > Port Forwarding.
OpenVPN clients
Zowel voor Mac, iOS, Windows en Android zijn er verschillende OpenVPN clients beschikbaar. Voor Mac en Windows is Viscosity een zeer handige client. Voor iOS en Android is een officiële OpenVPN client beschikbaar.
• OpenVPN client android
• OpenVPN client iOS
• Viscosity OS X en Windows
• Tunnelbrick OpenVPN client Mac OS X
Het is instellen van de verbinding is in de meeste clients heel simpel importeer het ovpn bestand of sleep deze in de client. Geef de ingestelde PEM phrase (wachtwoord) op en je kunt verbinding maken.
Meer informatie over het PiVPN project kun je hier terugvinden.
Wat een geweldige website is dit!
eindelijk een werkende vpn server met dank aan dit artikel !
Ik kan het maar niet voor elkaar krijgen. Het hele installatieproces wordt zonder problemen doorlopen, maar bij het verbinden krijg ik het volgende:
aug 14 12:53:48: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
aug 14 12:53:48: TLS Error: TLS handshake failed
aug 14 12:53:48: SIGUSR1[soft,tls-error] received, process restarting
aug 14 12:53:48: Status gewijzigd naar Connecting
Vervolgens begint alles opnieuw.
Enig idee wat ik verkeerd doe?
Dank voor het artikel.
Even een vraagje: na het installeren van OVPN wordt de Pi opnieuw opgestart. Wanneer ik dan in de terminal “sudo pivpn add” invoer, krijg ik “command not found”. Iemand een oplossing?
Alvast bedankt!
Voor anderen die dit probleem ook hebben, zorg ervoor dat je in je terminal naar de installatiefolder gaat.
Wat mij niet duidelijk is.
Aangezien ik de hiervoor genoemde stappen nog niet uitgevoerd heb.
Als aan al deze instellingen is voldaan.
In welke modus moet de Pi staan, om als server te werken?
Of alleen maar ingeschakeld? En dat is het?
Of moet er ook iets van een OS gestart zijn?
@Hans De Raspberry Pi hoeft alleen maar aan te staan, OpenVPN zal als service draaien.
Perfecte manual! Nadat ik een andere router moest gebruiken (provider maakt het lastig om een eigen router te kiezen), was ik mijn VPN server kwijt. Die zat nl. in DD-WRT.
Nu met een RPI een super-altrnatief! Zelfs beter: van PPTP naar OpenVPN.
Veel dank!
Werkelijk geweldig.
Ik had eerst VPN geïnstalleerd met een uurtje knutselen van
http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing/
maar dit werkt echt formidabel.
Op Github zag ik een aanpassing van 5 dagen geleden.
Wordt PiVPN automatisch geüpdated via de Raspberry of komt er een update commando via pivpn [option]
Mooie heldere instructie, bedankt hiervoor!
Hoe zijn jullie ervaringen qua snelheid?
ik had eerst een VPN-server opgezet via mijn NAS (Synology) daarbij daalde mij download van 18.5 naar 2.4 MB
deze opzet met de Pi geeft een overall snelheid van 6-8 Mb, da’s al een stuk beter natuurlijk, maar liever zag ik nog minder overhead …
Geweldig, eindelijk een vpn ingesteld. Tip voor de ziggo gebruikers: https://community.ziggo.nl/internet-apparatuur-erbij-101/alles-over-port-forwarding-ziggo-16111
He, leuk script. Bedankt.
Op de laptop werkt vpn perfect ( ubuntu desktop 16.04 ). Maar op mijn android werkt het niet en krijg ik een “PK-Bad input parameters to function”
Met android gebruik ik “OpenVPN Connect”.
Neem een key van 2048 voor OpenVPN Connect op Android, bron: http://linux-tipps.blogspot.nl/2015/03/openvpn-on-android-only-supports-4096.html
Bedankt voor het melden! Ik zal het toevoegen aan de tekst!
Hallo,
Bedankt voor de makkelijke handleiding. Een tip voor windows gebruikers. Je kan ook gebruik maken van de gratis software van OpenVPN als client. Je kan deze vinden op:
https://openvpn.net/index.php/open-source/downloads.html
Gr,
Is het mogelijk om met PiVPN ook toegang te krijgen tot bijvoorbeeld een NAS in je thuis netwerk ?
Zeker, die kun je gewoon benaderen!
heel erg bedankt voor deze tutorial, nu kan ik mijn rpi3 naast addblocker ook als vpn server gebruiken. Kreeg openvpn niet aan de praat op mijn windows server.. Nu easy voor elkaar!
helaas werkt internet niet als ik een custom DNS instel met het IP van de raspberry. Ook niet het 10.8.0.1 adres.
Ik heb de raspberry zo geconfigureerd als bovenstaande. Nu komt het volgende punt: hoe krijg ik de .ovpn profile files van de raspberry af? Ik heb het al geprobeerd met Filezilla welke ik connect met mijn Raspberry’s interne IP (192.168.2.10), ik log in met de standaard gegevens ‘pi’ en ‘raspberry’ als gebruikersnaam en wachtwoord.
Uit de IFconfig komt het volgende:
inet addr: 192.168.2.10, bcast 192.168.2.255 mask 255.255.255.0
Kan iemand mij hier meer over vertellen?
Je kunt hiervoor een SFTP programma’s gebruiken. verbinding maken met je normale inlognaam en ww.
Bedankt voor uw reactie. Als ik via winSCP een connectie probeer te maken dmv SFTP krijg ik deze melding:
“De server heeft de SFTP verbinding geweigerd, maar laat wel FTP verbindingen toe.
Wilt u het FTP protocol gebruiken in plaats van SFTP? Gebruik bij voorkeur encryptie.”
Als ik vervolgens via FTP een connectie maak:
“Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd.
Verbinding mislukt.”
Ik heb werkelijk waar geen idee waar dit fout gaat. Moet ik nog het een en ander configureren op de Raspberry?
Krijg je via SSH toegang? Zo niet dan werkt SFTP ook niet.
Check: https://raspberrytips.nl/ssh-raspbian-activeren/
Verbinding met Android werkt. OpenVPN via Windows 10 niet:
Unable to obtain Session ID from xxxxxx: XML-RPC: ConnectionRefusedError: 10061: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd..
SSH , SFTP werkt gewoon.
Vraagje. Op zich werkt het als een trein. VPN verbinding naar huis doet het. Kan mijn pi, mijn pc’s en mijn nas benaderen. Ik kan alleen niet het internet op via VPN. Enig idee wat ik verkeerd doe?
Vraag; kan ik ook een gebruiker verwijderen? Zo ja, is dat met een vergelijkbaar commando als “sudo pivpn add” ?
Als je sudo pivpn uitvoert krijg je alle opties te zien, ook die voor het verwijderen.
Beste mensen,
Ik heb met pivpn nu eindelijk een goede vpn server voor mijn android telefoon,
Maar wil ook graag een ddwrt router als client aanmelden (alles wat dus achter de ddwrt gebeurt (via wifi of de switch) moet op mijn thuisnetwerk terechtkomen, kan iemand me helpen dit voor elkaar te krijgen?
Alvast bedankt
Hoi, Heb je dit al voor mekaar gekregen ik wil dit ook graag met een Tomato router als client instellen.
Thanks
Hoi Erik,
Nee, ik heb het niet voor elkaar gekregen, ik ben er bijna 4 weken nonstop mee bezig geweest en heb het opgegeven,
Ik ben overigens nog steeds op zoek naar oplossing… Dus als iemand iets weet? Dan word hulp zeker gewaardeerd
Hallo, tijdens de installatie gaat er iets niet goed. Jammer, ik hoopte dat dit idd allemaal zo makkelijk zou gaan. Enig idee hoe ik dit kan oplossen of kan het script aangepast worden.
curl -L http://install.pivpn.io | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 178 100 178 0 0 502 0 –:–:– –:–:– –:–:– 504
100 43750 100 43750 0 0 79408 0 –:–:– –:–:– –:–:– 2402k
:::
::: You are root.
::: Verifying free disk space…
:::
::: Checking apt-get for upgraded packages…. done!
:::
::: Your system is up to date! Continuing with PiVPN installation…
bash: line 284: nslookup: command not found
::: Your static IPv4 address: 192.168.0.10
::: Your static IPv4 gateway: 192.168.0.1
:::
::: Setting IP to 192.168.0.10. You may need to restart after the install is complete.
:::
::: Using User: pi
E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
:::
::: Stopping OpenVPN service…Failed to stop openvpn.service: Unit openvpn.service not loaded.
done.
sed: can’t read /etc/apt/apt.conf.d/50unattended-upgrades: No such file or directory
:::
::: Checking for existing base files…
::: Checking /etc/.pivpn is a repo…::: Cloning https://github.com/pivpn/pivpn.git into /etc/.pivpn… done!
:::
::: Installing scripts to /opt/pivpn… done.
::: Using protocol: udp
tar: /etc/openvpn: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
chown: cannot access ‘/etc/openvpn/easy-rsa’: No such file or directory
mkdir: cannot create directory ‘/etc/openvpn/easy-rsa/pki’: No such file or directory
tee: /etc/openvpn/easy-rsa/vars: No such file or directory
bash: line 822: cd: /etc/openvpn/easy-rsa: No such file or directory
Failed to execute operation: No such file or directory
Failed to start openvpn.service: Unit openvpn.service failed to load: No such file or directory.
::: Install Complete…
Heb dit nu geinstalleerd, maar krijg nu geen verbinding vanaf mijn telefoon (met OpenVPN Connect). Na verloop van tijd stopt de app met een time-out.
Heb op de zelfde Pi ook Pi-hole draaien.
Een vpn server maken is een is heel simpel, in een half uur gebeurd
nu probeer ik er domoticz bij te zetten dat lukt ook alleen kan ik domoticz niet openen ik probeer domoticz te openen met (ipnummer):8080 dan krijg ik de fout
Deze site is niet bereikbaar wat doe ik of zie ik verkeerd
mvgr
Peter
Niet echt een antwoord op je vraag misschien, maar je kunt ook inloggen op mydomoticz. Op deze manier kun je domoticz sowieso op afstand bedienen.
Lukt me helaas nog steeds niet om een verbinding naar huis te maken, met dit script. Op mijn Android OpenVPNConnect geinstalleerd, maar die geeft na ‘connect’ ‘waiting for server’, en dit blijft staan tot aan time-out.
Hallo
Volgens de omschrijving Vpn ginstalleerd. Open vpn connect op min android. Kan mijn thuisnetwerk bereiken, Maar dan vervolgens niet door op internet.
Iemand enig idee hoe dit op te lossen?
Een zeer duidelijke omschrijving en ook ik heb de OpenVPN op mijn raspberry 3 geinstalleerd. Het forwarden in de Tele2 router is ook gelukt en alles draait. Ik (74 jaar) mag ook wel wat trot op mezelf zijn want ervaring hierin heb ik niet. Mijn downloadsnelheid ligt ongeveer 30% lager als normaal.
Nogmaals bedankt!
Ik kan verbinden met de VPN, ik zie de verbinding binnenkomen op mijn router maar ik kan geen enkele apparaat benaderen. Ik denk dat dit komt omdat ik in een andere IP reeks zit. VPN: 10.8.x.x en intern zit ik op 192.168.x.x
Heb de tutorial gevolgd, maar vast op het punt waarbij ik via SFTP het profiel zou moeten kunnen downloaden.
Moet SFTP apart geactiveerd worden? In de config kon ik niets vinden en krijg geen verbinding met de Pi via SFTP. Ip adres klopt verder wel.
Als je PIVPN via de grafische interface hebt geïnstalleerd dan moet je inderdaad nog SSH activeren om een SFTP sessie op te kunnen zetten.
Open de ‘Raspberry Pi Configuration’ applicatie vanuit het ‘Preferences’-menu, ga naar het tabblad ‘Interfaces’, selecteer ‘Enabled’ bij SSH, klik hierna op ‘OK’
Vanuit Terminal kan je dit activeren met het commando:
touch /boot/ssh
Herstart in beide gevallen, SFTP moet nu werken.
Ha ha, wat stom! Heb daar totaal niet aan gedacht. Heb het nu voor elkaar. Dank voor de tip en geweldige handleiding!
Superblij met deze handleiding, mijn eigen vpn server + pihole dns. Makkelijk te volgen tutorial bedankt!
Het is mij volkomen onduidelijk hoe ik na import van een op de pi aangemaakt profielbestand .opvn moet inloggen!
Ik heb op windows 10 OPENVPN Connect client geïnstalleerd. Als ik Connect… in het tray menu dan vraagt die niet om een wachtwoord, maar wil de naam van de hostserver weten. Daarna vraagt die om een naam. Wat moet ik daar nou invullen? Ik heb alleen een naam opgegeven op de PI met een bijbehorend wachtwoord met sudo pivpn add en het bestand met die .ovpn naar Windows overgehaald.
De kretologie is mij volkomen onduidelijk.
hooi.
klopt het dat het nu niet meer wrekt? ik krijg bij de eerste regel met ”curl” al gelijk de melding: bash: line 1: 404: command not found
hi.
is er iemand die hier antwoord op heeft? Vroeger nooit problemen gehad maar helaas werkt het nu niet meer.