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:
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):
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.
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.
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.
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.
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:
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!).
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/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
Bevalt deze router nog steeds met de aangegeven software?
Ja, ben er nog steeds blij mee!
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
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.
Peter, kun je precies aangeven wat er niet lukt?
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?
Het JFFS script hoef je niet aan te passen. Heb je de router al een keer herstart?
Hallo
Zeker gereset
Ik heb een asus ac3200 achter een ziggo modem . Ziggo modem in dmz mode
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
Het is inderdaad beter (en makkelijker) om de Merlin-firmware te installeren.
Dank voor je reactie. Ik ga ermee aan de slag en laat nog weten of het is gelukt.
Mvg Ivo
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
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.
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
Bedankt voor de heldere uitleg. Hier ga ik zeker meer aan denken wanneer ik op publieke WiFi zit.
Ik snap alleen het laatste gedeelte niet. Je mobiel zit toch op het wifi netwerk. Dus dan loopt deze toch via de VPN verbinding?