Asus Router: OpenVPN client en server instellen

Een half jaar geleden had ik OpenVPN geïnstalleerd op mijn Raspberry Pi. Op zich werkte dat prima: met een smartphone kon ik via 4G verbinding maken met de OpenVPN server op de Raspberry, ik had een veilige verbinding als ik ergens op een WiFi-hotspot inlogde en het kostte mij niets. Helaas zaten er ook wel een paar nadelen aan deze oplossing. Indien er veel verkeer over de OpenVPN server loopt is er wel aardig wat rekenkracht nodig, iets wat de Raspberry niet heel veel heeft. Ook lukte het mij niet om een OpenVPN server én client tegelijk te installeren en werkend te krijgen. Tijd voor OpenVPN client en server te installeren!

Nadat ik van internet provider geswitcht was, kreeg ik een ZTE H369A modem van Tele2, waarvan de firmware helemaal dichtgetimmerd was. Als gebruiker kon je nauwelijks dingen instellen, echt waardeloos van Tele2! Zo kon ik bijvoorbeeld maar 10 devices een vast IP-adres geven en kun je aan de firewall helemaal niets wijzigen. Ik besloot om een Asus RT-AC1900U router, de opvolger van de RT-AC68U, achter de Tele2-modem te plaatsen (bij Tele2 moet je hun modem gebruiken, anders heb je geen internetverbinding). Het voordeel van de AC1900U is dat deze een wat snellere processor heeft dan zijn voorganger, iets wat goed uitkomt als je OpenVPN op een Asus router wilt draaien.

 

Doel

Met de aankoop van de nieuwe router had ik een aantal doelen/eisen:

  • Via mijn smartphone of tabel wil ik, zowel via 4G als WiFi, bestanden kunnen benaderen op mijn NAS die thuis staan → OpenVPN Server
  • Via alle apparaten (thuis of onderweg) wil ik een VPN-verbinding kunnen maken naar een VPN provider, zodat mijn ISP of overheid mijn internetgedrag niet kan zien of monitoren → OpenVPN Server
  • De snelheid van de VPN-verbinding moet acceptabel zijn (> 20 Mbps) → Asus RT-AC1900U of betere router

 

Modem instellen

Nadat je de router aangesloten hebt op het modem geven we de router een vast IP-adres. In de modem voer je bij DHCP Binding het MAC-adres van de router en het gewenste IP-adres in:

Router vast IP-adres

De volgende stap is om een UDP-port te forwarden. In principe kun je bijna iedere willekeurig poort gebruiken, ik heb gekozen voor poort 1196. Bij LAN host vul je het IP-adres van de Asus router in (selecteer bij Protocol alleen UDP):

Port forwarding ZTE H369A Modem

 

Asus router flashen

Om op de router OpenVPN client en server te installeren is het nodig om de Asus router te flashen met de Asuswrt-Merlin firmware. Dit klinkt lastiger dan het in werkelijkheid is: je moet de firmware van RT-AC68U downloaden (ja, hier zie je weer dat de AC68U en AC1900U vrijwel gelijk zijn). Vervolgens ga je in de router naar Administration en vervolgens klik je op “Bestand kiezen”. Selecteer nu het zojuist gedownloade firmware-bestand en klik op “Upload”. Na een minuut of drie staat die nieuwe firmware op je router.

Asus Router Merlin flashen

 

OpenVPN Server instellen

Nadat je de router hebt voorzien van de Merlin firmware gaan we de OpenVPN server configureren. Dit is dus de server waar bv. jouw smartphone of tablet, of afstand, verbinding mee gaat maken. Klik op VPN onder Advanced Settings. Je kunt twee OpenVPN-server configureren, maar meestal is één voldoende. De meeste instellingen van onderstaande screenshot kun je overnemen. RSA Encryption kun je eventueel op 2048 bit zetten, maar dit betekent wel dat je router meer werk heeft met de betere beveiliging, waardoor de snelheid van de verbinding waarschijnlijk lager zal zijn. Onderaan de pagina kun je gebruikers aanmaken: voer een naam en wachtwoord in, klik op het + teken en vervolgens op Apply.

OpenVPN server instellen

Selecteer nu bij VPN Details “Advanced Settings”. Eerder hebben we in de modem poort 1196 UDP opengezet. Kies nu ook voor deze poort bij Advanced Settings. De overige parameters kun je naar eigen wens wijzigen.

OpenVPN server instellen

Nadat je onderaan de pagina op “Apply” hebt geklikt wijzig je VPN Details weer naar “General” en exporteer je het OpenVPN configuratie-bestand. Kopieer dit bestand naar je telefoon of tablet en importeer het in een app als OpenVPN Connect of OpenVPN for Android. Controleer nu op je smartphone/tablet of je verbinding kunt maken met de OpenVPN (via WiFi én 4G!). Mocht dat niet het geval zijn check dan welk IP-adres in het configuratie-bestand staat. Dit moet je publieke IP-adres zijn en niet een lokaal IP-adres, zoals bv. 192.168.x.x. We gaan ervan uit dat je verbinding kunt maken en dat een eventuele NAS benaderbaar is.

 

OpenVPN Client instellen

De OpenVPN client in de Asus router is van belang als je een beveiligde verbinding met een VPN provider wilt maken. Het doel hiervan is dat je internetprovider of overheid niet meer kan zien wat jij allemaal op internet doet, ze kunnen je niet meer ‘afluisteren’. Nu hebben de meeste mensen geen kwade bedoelingen, maar privacy staat toch hoog in het vaandel. Met z’n VPN-verbinding kun je bijvoorbeeld ongestoord downloaden, zonder iemand dit kan zien (uiteraard moet je wel een abonnement hebben bij een goede VPN provider. Hoewel ExpressVPN en NordVPN de beste VPN providers zijn gebruik ik VPN Unlimited van KeepSolid. Ooit ben ik eens een aanbieding tegenkomen van hun en heb toen een lifetime abonnement genomen voor slechts 40 USD! De snelheid van deze providers is behoorlijk goed. Helaas worden hun IP-adressen wel steeds vaker geblokkeerd, bijvoorbeeld met Outlook.com, maar daar hebben we later een oplossing voor.

Nadat je een abonnement bij een VPN provider hebt genomen download je het client configuratie-bestand. In dit bestand staan meeste alle settings al, zodat je gelijk aan de slag kunt.

Klik bovenaan de pagina op “VPN Client”. Je kunt maximaal 5 clients configureren, maar in de meeste gevallen is één voldoende. Bij “Bestand kiezen” selecteer je het configuratie-bestand dat je zojuist heb gedownload bij je VPN provider. Klik vervolgens op “Upload”. Het schuifje bij “Service state” zet je op ON en je zult zien dat je binnen een paar seconden verbinding hebt.

OpenVPN Client instellen

Al het internetverkeer van apparaten, bedraad of draadloos, die aangesloten zijn op de Asus router gaat nu via de VPN provider, beveiligd en niet-traceerbaar! in de Merlin-firmware is ook gedacht aan de functie om bepaald (inter-)netverkeer uit te sluiten van de VPN-verbinding. Dit doe je door “Redirect Internet traffic” op “Policy Rules (strict)” te zetten. Je kunt nu regels ingeven, zodat een bepaald apparaat of IP-reeks over je VPN- of WAN-verbinding loopt. In onderstaand voorbeeld heb ik ingesteld dat mijn LAN-netwerk en het netwerk van de OpenVPN Server via VPN loopt, met als uitzondering het verkeer naar mijn modem, dit gaat via de WAN-verbinding:

Redirect Internet traffic

 

JFFS-script: tegelijk OpenVPN client en server toestaan

We zijn er bijna, een laatste stap moet nog genomen worden. Op dit moment gaat het verkeer vanaf je telefoon nog niet over de VPN Client. We gaan dit oplossen door een JFFS-scrip op de router te zetten, wat bij iedere reboot gestart wordt. Ga naar Administration > System en zet “Enable JFFS custom scripts and configs” op YES.

Met WinSCP log je in op de router en maak je in de map /jffs/scripts/ het bestand firewall-start aan (zonder extensie!). Zet de rechten van het bestand op 0744. Kopieer onderstaande code in het firewall-start bestand. Hiermee geef je aan dat verkeerde van VPN Server 1 of 2 gebruik mag maken van VPN Client 1, 2, 3, 4 of 5. Indien je maar één VPN Server en één VPN Client gebruikt dan kun je een hoop regels verwijderen.

#!/bin/sh

# Sta pass-thru toe voor een verbindende OpenVPN Server-client om Selective Policy routing RPDB uit te voeren via VPN Client
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun11 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun11 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun12 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun12 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun13 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun13 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun14 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun14 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun15 -j MASQUERADE
iptables -D POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun15 -j MASQUERADE

iptables -I POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun11 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun11 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun12 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun12 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun13 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun13 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun14 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun14 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server1_sn)/24 -o tun15 -j MASQUERADE
iptables -I POSTROUTING -t nat -s $(nvram get vpn_server2_sn)/24 -o tun15 -j MASQUERADE

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *