VPN op je router of NAS
Met een commerciële VPN-aanbieder kun je snel doen alsof je in een ander land woont, maar als je verbinding met thuis wilt maken, kan dat een stuk makkelijker.
De in het vorige artikel genoemde VPN-aanbieders zijn ideaal om vanuit thuis toegang te krijgen tot VPN-servers in andere landen om bijvoorbeeld Netflix-series te kunnen kijken die je hier niet kunt zien. Die aanbieders hebben ook VPN-servers in Nederland en België, zodat je in omgekeerde richting ook vanuit het buitenland contact kunt maken met je thuisland. Op die manier kun je bijvoorbeeld een VPN-verbinding maken met een Nederlandse server om NPO-content te bekijken, zonder de melding dat dit niet geoorloofd is vanuit het land waar je je bevindt.
Om via VPN contact met Nederland te maken hoef je echter geen commerciële aanbieder te gebruiken. Waarschijnlijk heb je namelijk al een VPN-server in huis – wellicht zonder dat je dat zelf weet. De meeste routers en NAS-apparaten beschikken namelijk over de mogelijkheid een VPN-server te installeren. Bij een router hoort het dan bij de standaard functionaliteit, bij een NAS is die functie vaak via een app toe te voegen. In een eerder artikel in c’t [1] hebben we beschreven hoe je dat bij een Asus-router en een Synology
NAS kunt doen – zie ook de link op de laatste pagina van dit artikel. In dit artikel laten we zien hoe je dat ook met een Fritzbox-router en een Netgear-NAS kunt doen.
ROUTER-VPN
Het grote voordeel van een VPN op je router is ten eerste natuurlijk dat dit niets kost. Je hoeft geen maandelijkse kosten af te dragen aan een commerciële partij voor een functie die gratis beschikbaar is. Je internetaansluiting moet wel een vast IP-adres hebben, of anders moet je er via een DynDNS-aanbieder voor zorgen dat je aansluiting altijd via dezelfde (domein) naam beschikbaar is.
Een ander voordeel van een VPN op je router in plaats van een NAS is dat het internetverkeer van het apparaat waar je verbinding mee maakt meteen doorgesluisd wordt naar internet. Als je met een VPN op je NAS werkt, dat gaat dat VPN-internetverkeer eerst van je router rechtsreeks naar je NAS, en via de VPN-server aldaar weer terug naar je router en dan internet op. Dat zorgt voor extra dataverkeer binnen je netwerk en een vertraging op het internetverkeer van het externe VPN-apparaat.
Bovendien heeft een VPN-verbinding via een NAS het extra nadeel dat je bij de router de verschillende poorten die nodig zijn voor het gebruikte VPNprotocol (bijvoorbeeld 1194 voor OpenVPN) open moet zetten en moet doorsturen naar de NAS.
Bij een Fritzbox-router moet je voor iedere gebruiker een apart account aanmaken. Ga naar ‘System / FRITZ!Box Users’ om bij ‘User’ met ‘Add user’ de gebruiker ct-vpn aan te maken. Vink alle opties voor die gebruiker uit die niet nodig zijn, maar zorg ervoor dat ‘VPN’ aangevinkt is. Klik op ‘Apply’ om de instellingen te activeren. Klik op ‘Show VPN Settings’ voor een pop-up-overzicht van de VPN-instellingen voor mobiele apparaten. Laat dat extra venster even openstaan, want wat er bij ‘Shared secret’ staat heb je later nodig.
Bij ‘Internet / Permit Access’ zie je op het tabblad ‘VPN’ welke gebruikers via VPN contact met de router mogen maken. Alleen de gebruikers waar een vinkje voor staat mogen op dat moment inloggen. Op die manier kun je een gebruiker snel toegang verlenen of ontzeggen. Als een gebruiker een actieve VPN-verbinding heeft, zie je bij ‘Address in the Internet’ via wel IP-adres hij contact maakt en bij ‘Remote Network’ het IP-adres dat hij binnen je lokaleale net
werk gekregen heeft – die benaming is dan ook wat verwarrend omdat dat IP-adres voor de VPN-verbinding wel remote is, maar voor jou als routerbeheerder een lokaal adres is.
Op hetzelfde tabblad kun je met ‘Add VPN Connection’ een VPN-verbinding configureren. Als je dat voor een enkele gebruiker wilt doen, kom je vanzelf weer op de Users-pagina uit en geldt de werkwijze zoals zonet beschreven. Je kunt daar echter ook een LAN-LAN-verbinding met een andere Fritzbox-router maken of je router verbinding laten maken met de VPN-server van je bedrijf. In het laatste geval moet je dan de inloggegevens van de VPN-server opgeven (username en pre-shared key en dergelijke) om je router een VPN-verbinding te laten maken met een externe server. Daarna is je hele lokale netwerk verbonden met het bedrijfsnetwerk, wat bijvoorbeeld handig kan zijn voor filialen om op het centrale netwerk te kunnen werken.
Aan de routerkant zijn de instellingen dus te overzien. Als je een gebruiker hebt aangemaakt die via VPN toegang mag krijgen, is de VPN-server automatisch actief en staat hij te wachten op een verbinding. De poorten 53 (DNS), 500 (ISAKMP) en 4500 (NAT-traversal) die daarvoor nodig zijn, worden automatisch opengezet. Je hoeft je daar verder dus niet om te bekommeren.
Als je het configureren van de VPN-gebruikers en verbinding liever niet in de webinterface van de router doet, dan kun je daar het programma ‘Configure FRITZ!Box VPN Connection’ voor gebruiken (zie de link op de laatste pagina van dit artikel). Installeer dat programma en klik op New. Selecteer ‘Configure VPN-conection for one user’ en vervolgens ‘Add new FRITZ!Box’.
Selecteer met wat voor apparaat je verbinding wilt maken (een computer of een iOS-apparaat) en geef het mailadres van de gebruiker op. Bij de ‘Name of your FRITZ!Box’ geef je de DynDNS-naam of de domeinnaam op waar je Fritzbox-router mee bereikbaar is. Je kunt daar ook je openbare IPv4-adres invullen. Bij de IP-instellingen kun je kiezen of je in het lokale netwerk opgenomen wilt worden of dat er een apart subnetwerk moet worden gebruikt.
Vink tenslotte ‘Send all data over the VPN tunnel’ aan om via je router op internet te gaan. Er verschijnt een gedeelde sleutel die je moet kopiëren en plakken omdat je die later nodig hebt. Je moet op die plek ook een wachtwoord invullen waarmee je verbinding gaat maken. Daarna exporteer je het configuratiebestand, waarna je dat kunt mailen naar de betreffende gebruiker. Wees daar voorzichtig mee, want het wachtwoord of de key staat daar leesbaar in. Als je dat niet wilt, kun je bij het configureren ook een versleutelwachtwoord opgeven. Dat moet je dan eerst weer intypen voordat de router het configuratiebestand kan inlezen.
Bij ‘Internet / Permit Access’ kun je op het VPNtabblad via ‘Add VPN Connection’ dan met de optie ‘Import a VPN configuration from an existing VPN settings file’ de instellingen dan importeren.
ROUTER-CLIENT
Je router is klaar voor een VPN-verbinding, en je hebt alle gegevens die nodig zijn voor de externe gebruiker. Wil je met een mobiel iOS- Android-apparaat verbinding met je thuisnetwerk maken, dan heb je het als het goed is nog openstaande browservenster met de ‘VPN Settings’ nodig.
Bij een iOS-apparaat ga je naar ‘Instellingen / VPN’ (of ‘Instellingen / Algemeen / VPN’ als je nog geen verbinding geconfigureerd hebt). Bij ‘Voeg VPNconfiguratie toe’ selecteer je ‘IPsec’ als type en vul je de gegevens verder in zoals die in het venster staan. Let bij het ‘Geheim’ goed op dat je de shared-key goed overtypt. Daarna is het een kwestie van de switch bij ‘Geen verbinding’ aanzetten en dan moet er een VPN-verbinding met thuis worden aangemaakt. Je ziet dan een VPN-logo boven in beeld verschijnen.
Bij Android werkt dat vergelijkbaar: ga naar ‘Instellingen / Wifi en internet / VPN’. Klik op het plusteken om een VPN-verbinding toe te voegen en vul je benodigde gegevens in. Tik op de ingestelde naam en maak de verbinding.
Bij een computer met macOS werkt het vergelijkbaar simpel. Ga bij de Systeemvoorkeuren naar Netwerk en klik linksonder op het plusteken. Als interface selecteer je VPN, als VPN-type ‘Cisco IPSec’ en vul je geen naam in. Vu het serveradres en de andere gegevens in. Bij ‘Instellingen identiteitscontrole’ typ je het ‘Gedeeld geheim’ over en vul je de juiste groepsnaam in. Klik vervolgens op Verbind om de VPN-verbinding te starten. Als je ‘Toon VPN-status in menubalk’ aanvinkt, kun je met het VPN-pictogram op de menubalk te allen tijde zien of je via VPN verbonden bent en daar de verbinding ook makkelijk maken of verbreken.
Bij een Linux-pc is het instellen van een VPN-verbinding ook een fluitje van een cent. Al gaat dat wel op een Linux-manier: installeer het vpnc-pakket met sudo apt-get install vpnc. Maak vervolgens een tekstbestand aan met sudo nano /etc/vpnc/ verbinding.conf of een andere editor naar keuze, waarbij de naam ‘verbinding’ vrij te kiezen is. In dat bestand zet je
IPSec gateway
IPSec ID
IPSec secret
Xauth username
Xauth password Je kunt dan verbinding maken met het commando sudo vpnc verbinding (zonder .conf). Om die verbinding weer te verbreken, gebruik je sudo vpnc-disconnect. Voor een notebook of pc met Windows gaat het helaas wat minder eenvoudig. AVM heeft wel het programma FRITZ!VPN om een verbinding met de router te maken, maar dat programma werkt (nog) niet met Windows 10. Na het starten komt de melding dat de AVM VPN driver niet gevonden wordt. AVM zegt te werken aan een oplossing en adviseert om in de tussentijd Shrew Soft VPN Client te gebruiken. De laatste versie 2.2.2 daarvan is al van juli 2013 en ondersteunt Windows 10 officieel niet, maar blijkt in de praktijk wel te werken. Het valt echter te hopen dat AVM enige haast maakt met de FRITZ!VPN-oplossing. Open de VPN Access Manager en klik op ‘Add’. Vul op het tabblad ‘General’ de VPN-hostnaam of het openbare IP-adres in. Op het tabblad Authentication selecter je bij ‘Authentication Method’ de optie ‘Mutual PSK + XAuth’. Op het tabblad ‘Local Identity’ selecteer je bij ‘Identification Type’ de optie ‘Key Identifier’ en bij ‘Key ID String’ vul je de gebruikersnaam in. Op het tabblad Credentials vul je bij ‘Pre Shared Key’ het shared-secret in. Klik daarna op Save om de instellingen op te slaan. Standaard zal dan al het internetverkeer doorgestuurd worden. Selecteer de net ingestelde verbinding bij de VPN Access Manager en klik op Connect. Na het invullen van de juiste naam en het wachtwoord heb je dan als het goed is alsnog verbinding met je thuisnetwerk. NAS-OPENVPN Bij de NAS-apparaten van de grote merken Synology, Qnap en Netgear is het door de mogelijkheid de functies uit te breiden met behulp van apps makkelijk om een VPN-server toe te voegen. Bij Synology en Qnap kun je een app installeren en vervolgens de instellingen naar believen meteen aanpassen. Netgear volgt een iets andere weg en werkt met SoftEthers VPN-tools. Als je bij apps de app ‘VPN Server’ installeert, lijkt er verder niets te gebeuren. Op de schijf is bij de Shares echter de map vpnserver aangemaakt met daarin het programma softethervpnservver-….exe. Dat installatieprogramma moet je op een Windows-computer downloaden en uitvoeren. Daarmee wordt de SE VPN Server Manager geïnstalleerd. Met dat programma beheer je de VPNserver op je Netgear-NAS dan verder. Je maakt er onder meer de gebruikers mee aan die met de VPN-verbinding mogen werken. Start de manager en klik op ‘New Setting’. Geef de server een naam, vul de hostnaam of het IP-adres in en geef als poortnummer 14443 mee. Klik op OK en vervolgens om Connect om het beheer van de server na het opgeven van een wachtwoord te beginnen. Vink aan dat het om een ‘Remote Access VPN Server’ gaat en geef de virtuele hub een naam. De beheertool biedt meteen aan om IPsec/L2TP te activeren, maar dat hoeft nu niet (en kan later altijd nog) omdat we met OpenVPN gaan werken. De VPN-server van SoftEther heeft standaard een DynDNS-functie. Die hoef je natuurlijk niet te gebruiken, maar als je helemaal geen DynDNS wilt moet je dat later handmatig bij het configuratiebestand aangeven. Sla de Azure-cloudfunctie over en maak een eerste gebruiker aan. Gebruik ‘Password Authentication’ en geef het wachtwoord op. Als dat alles achter de rug is, ben je weer terug bij het VPN-serveroverzicht. Als je op ‘Edit Config’ klikt, kun je bij declare DDnsClient de regel bool Disabled false veranderen in bool Disabled true. Dat kan echter niet rechtstreeks, je moet de tekst eerst exporteren, bewerken en dan weer importeren. Met de knop ‘OpenVPN / MS-SSTP Setting’ open je het OpenVPN-overzicht. Als poortnummer wordt standaard 1194 gebruikt. Met de knop ‘Generate a Sample Configuration File for OpenVPN Clients’ wordt een zip-bestand met daarin een voorbeeld ovpn-clientbestand met daarin …_openvpn_remote_access_l3.ovpn. Kopieer dat bestand naar je OVPN-client, bijvoorbeeld door het te mailen naar je smartphone. Je moet dan wel eerst de regel die begint met ‘remote’ aanpassen: daar staat standaard de DynDNS-naam van SoftEther, maar vervang dat door de hostnaam of het IP-adres van je VPN-server. Daarna is het een kwestie van de OpenVPN-instellingen in de OpenVPN-app importeren en de naam en het wachtwoord invoeren. Aan de client-kant hoef je verder niets te doen. Vergeet alleen niet om het ingestelde poortnummer (1194) door te sturen van je router naar de Netgear-NAS. De mogelijkheden van de beheertool van de VPN-manager zijn zeer uitgebreid, van het instellen tot encryptie en het werken met certificaten tot Radius-authenticatie en SecureNAT. Zo gek willen we het hier niet maken. Je moet wel het een en ander van netwerken en bijbehorende protocollen weten om daar het meeste rendement uit te halen. Voor dit artikel is het doel al snel bereikt zonder al te veel toeters en bellen te hoeven inschakelen. Bedenk wel dat de VPN-server actief blijft zo lang je hem met de VPN Server Manager niet op Offline hebt gezet. RASPBERRY-VPN Een mogelijkheid die we niet ongenoemd willen laten is het installeren van een OpenVPN-server op een Raspberry Pi. Het installeren daarvan komt voor een groot deel overeen met het installeren van OpenVPN op een Linux-server – zie voor een uitgebreide omschrijving het volgende artikel. We lopen dan ook even snel door de procedure heen. We gaan er gemakshalve vanuit dat je Raspberry Pi een vast IP-adres heeft. En via SSH bereikbaar is of dat je een toetsenbord, muis en monitor hebt aangesloten. Maak jezelf eerst ‘root’ met sudo -i. Daarna haal je met curl -L http://install.pivpn.io | bash het installatiescript van PiVPN binnen voor OpenVPN en voer je dat uit. Beantwoord alle vragen naar wens en kies dan net als hierboven kies voor UDP als protocol en poort 1194. Na het uitvoeren van het installatiescript wordt geadviseerd te rebooten. Daarna maak je met sudo pivpn add een gebruikersprofiel aan. Geef een naam en een wachtwoord op, waarna er in /home/pi/ovpns voor iedere aangemaakte gebruiker een configuratiebestand staat. Daar hoef je verder niets meer aan te wijzigen, dat is een kwestie van dat bestand op het betreffende VPN-apparaat krijgen en verbinding maken. Het grote voordeel van OpenVPN is dat het op zo’n beetje alle grote platforms ondersteund wordt. Deze oplossing met een Raspberry Pi is eigenlijk de meest makkelijke om te installeren en configureren in dit hele verhaal, maar heeft als nadeel dat de netwerkverbinding van een Pi niet razendsnel is. De nieuwste Pi-versie halen wel meerdere honderden Mbit/s, dus de bottleneck zal waarschijnlijk toch wel de snelheid van je internetverbinding zijn. CONCLUSIE Het opzetten van een VPN-server binnen je eigen netwerk is geen gigantische klus. Vaak zijn er zelfs meerdere mogelijkheden om dat te realiseren en moet je goed kijken welke oplossing het meeste rendement zal hebben of het minste resources kost. Heeft je router een makkelijk te installeren en configureren VPN-server, dan heeft dat de voorkeur. Een NAS met VPN-functionaliteiten is ook een prima mogelijkheid, maar zal in de praktijk wat langzamer zijn. Een leuk alternatief is een Raspberry Pi als VPN-server, zeker als die toch al in je netwerk aanwezig is om bijvoorbeeld je router te monitoren (zie pagina 114 in deze c’t) of een andere (netwerk)functie vervult. Literatuur [1] Noud van Kruysbergen en Urs Marsmann, Tunnel via internet, Mobiele apparaten veilig op internet via een VPN, c’t 4/2016, p.132