Raspberry Pi VPN-server Auteur: Ger Stok
Installatieschema (1) 1. Wat is je externe IP-adres Wat is mijn ip-adres? Is het een vast IP-adres, prima Is het een dynamisch IP-adres, overweeg een DynDNS-dienst 2. Begin met de installatie van een Raspbian (Stretch) systeem Ben je vertrouwd met de CLI, gebruik dan Raspbian Lite Anders installeer de volledige versie (met desktop) 3. Configureer het systeem (Raspi config) Land instelling Toetsenbord-indeling Wifi-instelling Wachtwoord voor gebruiker Pi Vast IP-adres 2
Voorbeeld vast ip-adres toevoegen Open het netwerk configuratiebestand sudo nano /etc/network/interfaces Voeg toe: # Ethernet auto eth0 allow-hotplug eth0 iface eth0 inet static address XXX.XXX.X.X netmask 255.255.255.0 gateway XXX.XXX.X.X dns-nameservers XXX.XXX.X.X (XXX.XXX.X.X = ip-adressen van toepassing in jouw netwerk) 3
Installatieschema (2) 1. Zorg dat de laatste updates voor Raspbian zijn geïnstalleerd 2. Open een Terminal sessie Toets de volgende commando s in sudo -i curl -L http://install.pivpn.io bash Dit laatste commando laad een installatiescript voor pivpn en wordt je begeleid door een aantal keuze schermen. 4
Installatieschema (3) Belangrijk voor een OpenVPN server is dat deze een vast IP adres gebruikt binnen je lokale netwerk. Mocht je tijdens de installatie nog geen vast IP adres ingesteld hebben, dan krijg je mogelijk om deze nu via het installatie-menu in te stellen. Bij de vraag of je UDP of TCP wilt gebruiken, kies je voor de standaard keuze UDP. Het standaard poortnummer dat wordt gebruikt voor de verbinding is 1194 laat dat bvk ongewijzigd, maar mag ook een andere poort zijn. Na enige tijd zal de vraag verschijnen of je een 1024, 2048 of 4096 bits versleuteling wilt gaan gebruiken. Voor normaal huishoudelijk gebruik is een 2048 bits sleutel veilig genoeg, maar de 4096 bits is veiliger! Maak je gebruik van een Android device, dan is een 2048 bits sleutel vereist. Het aanmaken van de sleutel zal geruime tijd in beslag nemen. 5
Installatieschema (4) 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 gebruikersnaam in en druk op enter, hierna zal je gevraagd worden een PEM pas 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 op de server wordt onder de naam van de gebruiker het.ovpns bestand opgeslagen. Als op de client computer openvpn of een andere openvpn-compatible client is geïnstalleerd, kopieer dan dit.ovpns bestand in de map documenten/openvpn/config 6
Voorbeeld van een.ovpns file client dev tun proto udp remote XXX.XXX.X.X of jouwsite.dyndns.net 1194 resolv-retry infinite nobind persist-key persist-tun key-direction 1 remote-cert-tls server tls-version-min 1.2 verify-x509-name server_zqigyw6xdh0vl4xe name cipher AES-256-CBC auth SHA256 comp-lzo verb 1 7
(Deel van) de versleutelinskey <key> -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,5980C857626CED61 t02mzdafulnxvkctizhdgipumzxolhxdjqd5u+4i/m2+wl1bycs9y3pvfooe4vbjcthjx6m3uypkiei3zlgept84rzd2fua7 wzqg5s2w3gw9hxngd8ifbteb2yv5hq485guhugbbvsjtmueljrcqr7rrfgfwsbl6ktrnoitaoq0br3pxkfoa0zn4a0bhgxzh UkPq64hiEjWDIkuEy8bVn0tih9aaRgKbp7y3pXSyUiC06RKzk7Ac3VIuLFchaMIVMxt4qsgNqeYaQZNfNKnP8+1HnHjJ6zB9 PY5n9u1g5jz8eI4h81RmQe/Y4/5CtkFtVvUjeMrvXej6uQRdvyCfMzAChVD2MNWGasUs6HdbrfK+xXPf9LT47KKoUOMp/99/ 9CEiZ48iTTZqIrKv55V/hGdJhhYzZohcv2VFXxFJ1lFDil63e7C10CqLCRrtM+RxUiKOpDSa1uA7i9Kvz3BV7GLVHqPYhu0k BOuUDM8+aBkK3tel5wTIzDPA/8IDy8plyiuggqGE6Ov9ZXyeu7+rXVpGXZbYHZ1rWoZYSMYErP05rM0TEYR9GyzS6WGNbika Ml+x9vOGXkaQEtpxa5tngCkLRvpZqeKyq5KDpHUKkNpedT4MEByL4ubJnVsyBjpanbvSb154lNhE7R6KNCT4Dfy6QiDNvQLb JhnSRGphGoq3jWprAyvaEk1pAup/1VIyp6pwlCbH4Fnbk4/h+Sb3aczlpY0LilZulUBLVhEKsxJbDPUyl5dfBgyclB77SIB1 68NZjH3rodJ4CJpSaGtbsPAsAXi8B1t/uo/dqnV8v/CCziEgJR1bSic3NbA7UIsHkPaQXUbGZ71xM8QM1cwEI3n003BrEh6R OnVGU1QuGZRY1SNbmT4ztwkDEp2hgQHjADmSibyXCyzCCP02L5RBLUjLBCuYespi0fhEbOqFFrKa2fOWWg+8Pw/p09uefOfy /3yXa6vEYRdJdSyO/eMt2Cc5WBOg+eFQtnzkicFjdYx5bUbnmqbhmBGF+ohxKmGEWcbNoD9eiAku07KrLq3alSWzEl/85S/t w6fgbsakccmfrh9hs7o2qwvm/c+tyhz13ky07mrw6mira1mizohxf0uc3j7m43atiwq5/b8zqkd9oqw++u9np9f9m8peepxn pyqmzfsk1ytjh8421ed7mjswkl46qnif1m/xt4zspd/oxtcr6ysnbe2cx8igh80eaf90iityliq6gh3/u/r6dlhmz7xldlqp 64npzaTbrrHuJTH2spWaNyVysT5UsiamKl1TNStKpcf0fL0HpYO8E6lYnvo+FxAOj4gSBy6i8xCnE28XfR1RaaCwD1v6GFBY tuzwhhz8ia13lw4gqeyxshrnyg0fut4n0vctrbhhr+wdojri5ncifvvyhbcpbwrast4bzyfqgjph09s2g9kgerqamcqv7rqr Dksla9ODWw7+GnXwsqG9ytfGO+PqljHTi1V5eBGquXCgyh+b06GdSn8wghNC0FYe45LfG0no5f7Dvl7bb5eOC3IdqcZJci6A weygcdhtzhsdfb1eklf3akjhfj6csxznkzqco9to93ducyjctwj9o7o566fylbqi -----END RSA PRIVATE KEY----- </key> 8
Portforwarding op de router Om vanaf het internet een verbinding met de OpenVPN server op Raspberry Pi te kunnen opzetten moet UDP poort 1194 vanaf het publieke IP-adres worden doorgestuurd naar het IP-adres van de Raspberry Pi een zogenaamde Port Forwarding. De procedure hiervan verschilt per merk broadband router. In de router vind je deze instellingen vaak terug onder Application > Port Forwarding. 9
OpenVPN client Download en installeer de OpenVPN client voor je systeem: Windows Linux https://openvpn.net/index.php/open-source/downloads.html Android https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=nl ios https://itunes.apple.com/nl/app/openvpn-connect/id590379981?mt=8 10
Maak verbinding met de Pi VPN-server Maak verbinding met het externe IP-adres en vul het eerder aangemaakte wachtwoord in. De VPN-verbinding wordt tot stand gebracht. Als je een dynamisch IP-adres hebt is het handiger om gebruik te maken van DynDNS. Gratis diensten zijn bijv. NoIP https://www.noip.com/free of Dynu www.dyno.com Maak een gratis account aan en kies een naam voor de verbinding. Eens per maand wordt een mailtje verstuurd om het account te verlengen (en wordt geprobeerd je een betaald account te verkopen, maar dat is niet verplicht) Installeer de DNS-client op computer of router. Als je dynamische IP-adres verandert wordt dat automatisch bijgewerkt. Heb je een Synology NAS, dan kun je daar een gratis DDNS account aanmaken 11
Aanpassen van de server configuratiefile (1) ( /etc/openvpn/server.conf ) dev tun proto udp port 1194 ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server_zqigyw6xdh0vl4xe.crt key /etc/openvpn/easy-rsa/pki/private/server_zqigyw6xdh0vl4xe.key dh /etc/openvpn/easy-rsa/pki/dh2048.pem topology subnet server 10.8.0.0 255.255.255.0 << Om toegang te krijgen tot het lokale netwerk # server and remote endpoints De rode ip-adressen aanpassen naar de lokale situatie ifconfig 10.8.0.1 10.8.0.2 # Add route to Client routing table for the OpenVPN Server push "route 10.8.0.1 255.255.255.255" # Add route to Client routing table for the OPenVPN Subnet push "route 10.8.0.0 255.255.255.0" # your local subnet push "route 0.0.0.0 " # Set your primary domain name server address for clients push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Override the Client default gateway by using 0.0.0.0/1 and # 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of # overriding but not wiping out the original default gateway. push "redirect-gateway def1" 12
Aanpassen van de server configuratiefile (2) ( /etc/openvpn/server.conf ) client-to-client keepalive 10 120 remote-cert-tls client tls-version-min 1.2 tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 cipher AES-256-CBC auth SHA256 comp-lzo user nobody group nogroup persist-key persist-tun crl-verify /etc/openvpn/crl.pem status /var/log/openvpn-status.log 20 status-version 3 log /var/log/openvpn.log verb 1 # Generated for use by PiVPN.io 13