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-script 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!).

inloggen op router met WINSCP

Zet de rechten van het bestand op 0744. Kopieer onderstaande code in het firewall-start bestand. Hiermee geef je aan dat verkeer 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

 

Ter verduidelijking:

vpn_server1 = VPN Server 1
vpn_server 2 = VPN Server 2
tun11 = VPN Client 1
tun12 = VPN Client 2
tun13 = VPN Client 3
tun14 = VPN Client 4
tun15 = VPN Client 6

14 gedachten over “Asus Router: OpenVPN client en server instellen

  • 6 maart 2019 om 19:16
    Permalink

    Bevalt deze router nog steeds met de aangegeven software?

    Beantwoorden
      • 7 maart 2019 om 09:36
        Permalink

        Ben ik ook blij mee,want dit is de enige voor deze prijs die zulke goede vpn opties heeft.
        Dank je voor de snelle respons.

        Groet Evert

        Beantwoorden
  • 7 april 2019 om 18:42
    Permalink

    Hoi,
    Het laatste gedeelte met jffs scripts is me niet duidelijk, heb je sceenshots van dat stuk?
    Ook van winscp inloggen op de router.
    Ik wil met open vpn server naar een client vpn (Nord).
    Peter.

    Beantwoorden
    • 13 april 2019 om 09:40
      Permalink

      Peter, kun je precies aangeven wat er niet lukt?

      Beantwoorden
  • 4 september 2019 om 13:59
    Permalink

    Hallo
    Ik krijg de server alswel de client goed geinstalleerd.
    Alleen als ik ze beide gebruik, kan ik niet vanuit mijn tel open vpn server gebruiken.
    Wel onafhankelijk van elkaar.
    Bij mij werkt het jffs script dus niet
    Moet ik hier iets aan aanpassen?

    Beantwoorden
    • 4 september 2019 om 17:01
      Permalink

      Het JFFS script hoef je niet aan te passen. Heb je de router al een keer herstart?

      Beantwoorden
    • 4 september 2019 om 17:09
      Permalink

      Hallo
      Zeker gereset
      Ik heb een asus ac3200 achter een ziggo modem . Ziggo modem in dmz mode

      Beantwoorden
  • 27 oktober 2019 om 12:28
    Permalink

    Hallo,

    Mooie heldere uitleg.

    Ik heb een Asus AC66U (zonder Merlin) achter een Ziggo connectbox. De Asus heeft een fixed IP en vanuit de Connectbox wordt een poort geforward voor de vpn-server.
    Op de Asus is al VPN-client actief. Nu heb ik ook de vpn-server ingesteld. Op dit moment conflicteren ze beide. De vpn-server is vanaf WAN alleen te bereiken als de VPN-client uitstaat.

    Kan dit met routing worden opgelost of is het toch beter de Merlin-firmware te installeren?

    Gr, Ivo

    Beantwoorden
    • 27 oktober 2019 om 13:01
      Permalink

      Het is inderdaad beter (en makkelijker) om de Merlin-firmware te installeren.

      Beantwoorden
      • 28 oktober 2019 om 19:26
        Permalink

        Dank voor je reactie. Ik ga ermee aan de slag en laat nog weten of het is gelukt.

        Mvg Ivo

        Beantwoorden
      • 1 november 2019 om 19:13
        Permalink

        Ik heb de Merlin firmware succesvol geinstalleerd en het stappenplan gevolgd wat je beschrijft op de “policy rules (strict)” na. Omdat alles via de vpn-client mag verlopen leek mij dat niet nodig.
        Verder in “jffs script” de overbodige regels verwijderd omdat er maar 1 server en 1 client zijn.

        Internet vanaf laptops en telefoons verloopt goed, de vpn-client doet zijn werk. Echter krijg ik de vpn-server nog niet steeds benaderd. Ik maak gebruik van de originele openvpn app uit de google playstore.

        Eerst kreeg ik de volgende foutmelding: “tls error parsing ca certificate x509”. Door de optie “cipher negotiation” op “disabled” te zetten krijg ik deze melding niet meer.
        Nu krijg ik een onduidelijkere melding: “kan geen verbinding maken” of “…reageert niet”.

        Het volgende heb ik geprobeerd:
        – vpn-client helemaal uitgezet; server bereiken lukt niet (niet intern en niet extern)
        – vpn-client weer aan en policy rules strict aangezet; vpn-server over wan (helaas zonder resultaat)

        Verder valt me op dat in de server “tls control channel” standaard uit staat, terwijl in de client deze staat op “outgoing…”.
        Mogelijk staan bepaalde instellingen niet goed waardoor de server en de client niet samenwerken maar ik kan hierover weinig vinden op internet.

        Uiteindelijk ook naar het *.ovpn bestand gekeken en dat ziet er leeg uit. Mogelijk zit hier de oplossing van het probleem. Waar ik benieuwd naar ben is:
        waarom maakt de server geen volledig bestand aan? Heeft dit te maken met de client?
        Wat wordt bedoeld met “paste client….here”? Is dit het ovpn bestand van de vpn-client, of moet ik dit in de app op de telefoon zoeken?

        Dit stuk moet volgens mij gevuld worden in het ovpn bestand:
        “—–END CERTIFICATE—–

        paste client certificate data here

        paste client key data here

        resolv-retry infinite
        nobind”

        Heb je nog tips voor me?

        Mvg Ivo

        Beantwoorden
        • 2 november 2019 om 12:36
          Permalink

          Als je in de router aan de linkerkant op VPN (onder Advanced Settings) en vervolgens bovenaan op VPN Server dan krijg je het scherm te zien waar je allerlei settings van de VPN Server kunt wijzgen. Op dit scherm moet je op Export achter Export OpenVPN configuration file klikken. Er wordt nu een ovpn-bestand gedownload met volledige inhoud. Je moet alleen in de ovpn-bestand het interne IP-adres vervangen door je externe IP-adres en vervolgens het ovpn-bestand laden in de app op je telefoon.

          Beantwoorden
          • 4 november 2019 om 19:53
            Permalink

            Wat je beschrijft had ik gedaan en dat leverde het bestand op wat ik deels in de vorige post had bijgevoegd. Daarom ben ik als volgt opnieuw begonnen:
            1. Jffs script uitgezet, vpn server en client uitgezet. Router herstart.
            2. vpn server aangezet.
            3. Ovpn bestand geexporteerd. Dit bestand is wel “gevuld”.
            4. Verbinding maken met vpn server lukt via WAN IP ISP (getest met 4G verbinding van telefoon) . Overigens het achterliggende LAN benaderen niet.
            5. Vpn client aangezet. Exit IP is veranderd van ISP naar dat van de VPN aanbieder. Dat werkt.
            6. JFFS script aangemaakt (voorbeeld van je site gebruikt en niets aan veranderd)
            7. Router herstart

            En hier gaat iets mis denk ik: Als ik na het herstarten bij VPN server kijk staat er achter “ovpn bestand exporteren” de volgende melding: “de server wordt geconfigureerd. Wacht met verbinding maken totdat de server gereed is”. Dit proces duurt lang en uiteindelijk is het mogelijk om een ovpn bestand te exporteren maar die is dan “leeg”.

            Bij server/geavanceerde instellingen/keys and certificates” is dan wel alles gevuld maar het wordt blijkbaar niet goed of niet juist geexporteerd.

            Zelfs met het ovpn bestand uit stap 4 lukt het niet meer om verbinding te maken met de vpn-server. Ik krijg de melding “there was an error attempting to connect to the selected server”.
            Van de logfile word ik niet wijzer want daar staat niet meer in “server time out” en na drie pogingen volgt de melding “openvpn stop”.

            Wanneer ik bij VPN client de optie “Force internet…” op Policy Rules (strict) zet en VPN server op WAN instel kan ik verbinding maken met de server.
            De achterliggende NAS kan ik niet bereiken ondanks dat deze ook als WAN is ingesteld.

            Mvg Ivo

Geef een reactie

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