Raspberry Pi als OpenVPN server

Om Domoticz van buitenaf te kunnen benaderen moet je een aantal poorten (https, ssh, etc.) openzetten wat risico’s met zich mee brengt. Om de beveiliging op te schroeven kun je Fail2Ban installeren, maar een andere (en betere!) oplossing is om alle poorten dicht te laten en je Raspberry Pi als OpenVPN server te gebruiken. 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. Daarnaast kun je de verbinding ook gebruiken om geografische beperkingen te omzeilen, via de verbinding kun je bijvoorbeeld vanuit het buitenland Uitzending gemist en dergelijke diensten bekijken. Handig meegenomen!

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 word je met behulp van een wizard 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 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:


Hierna kunnen we starten met de geautomatiseerde PiVPN installatie van OpenVPN:


Het installatie script wordt gedownload en automatisch gestart, tijdens de installatie krijg je een aantal keuze schermen.

Belangrijk voor een OpenVPN server is dat deze een vast IP adres gebruikt binnen je lokale netwerk. Indien je tijdens de installatie nog geen vast IP adres hebt ingesteld dan kun je dat via het installatie-menu alsnog instellen.

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 van de Raspbery Pi kunnen we gebruikers gaan toevoegen met het script pivpn add

OVPN client profiel aanmaken

Na de herstart kun je een ovpn client profiel aanmaken waarmee we verbinding kunnen maken met onze OpenVPN server. Je maakt een nieuw profiel aan met het commando:


Vul de gewenste client naam in en druk op enter. Hierna zal je gevraagd worden een PEM pass phrase op te geven. Dit is het wachtwoord dat op de client moet worden ingegeven om verbinding te maken met de server.

In de map /home/pi/ovpns worden de .ovpns bestanden opgeslagen, deze kun je met behulp van een SFTP client (als FileZilla) eenvoudig downloaden. Je moet hiervoor wel SSH op de raspberry ingeschakeld hebben. Het ovpn bestand bevat zowel de server instellingen als de benodigde certificaten.

Maak een leeg bestand aan met de naam ‘ssh’ (zonder extensie) om de SSH server op de Raspberry Pi in te schakelen.

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 diverse 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 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.

3 gedachten over “Raspberry Pi als OpenVPN server

  • Pingback: OpenVPN in combinatie met de Pi-Hole - Ehoco.nl

  • 27 januari 2019 om 20:17
    Permalink

    Eerst de tutorial Firewall en daarna de OpenVPN nu heb ik het gevoel dat ik de boel dicht heb staan. Ik krijg een resource won’t accept connection via Windows VPN and de OPENVPN app geeft een timeout …. :-S

    sudo service openvpn status
    sudo pivpn -l

    Laten netjes zien dat de VPN draait en dat mijn client is aangemaakt.

    Ik heb met knip en plakwerk een poging gedaan ip-tables aan te passen:
    -A INPUT -i eth0 -p udp -m state –state NEW -m udp –dport 1194 -j ACCEPT
    -A INPUT -i tun+ -j ACCEPT
    -A FORWARD -i tun+ -j ACCEPT
    -A FORWARD -i tun+ -o eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i eth0 -o tun+ -m state –state RELATED,ESTABLISHED -j ACCEPT
    -A OUTPUT -o tun+ -j ACCEPT

    Wat gaat hier fout en koe kan ik via mijn PC of op de PI de VPN makkelijk testen ?

    Beantwoorden
    • 30 januari 2019 om 10:07
      Permalink

      Veel geleerd de afgelopen dagen:
      – Eerst mij zelf buiten gesloten door poort 22 dicht te zetten. Toen via een USB stick Ubuntu gedraaid om op de SD de iptables aan te passen.
      – En uiteindelijk bleek het erg logisch, op de wifi doet pakt mijn telefoon geen OPENVPN maar op 4G prima.
      – De volgende commando’s hebben mij veel geholpen.

      sudo netstat -lpn

      sudo service openvpn status
      sudo pivpn -l
      sudo netstat -uanp | grep openvpn

      sudo chmod 777 /var/log/openvpn.log
      cat /var/log/openvpn.log

      Beantwoorden

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.