Een router van minder dan $100 die één miljoen pakketten per seconde kan routeren én bovendien nog eens draait op Linux? Onze interesse was meteen gewekt voor de EdgeRouter Lite!

 Hoewel het prijskaartje anders doet vermoeden, is de EdgeRouter Lite een router voor (semi-)professioneel gebruik. Qua prestaties hoeft de EdgeRouter nauwelijks onder te doen voor duurdere apparaten van pakweg Cisco of Juniper. Maar dankzij zijn relatief lage prijs is de EdgeRouter best interessant voor de veeleisende thuisgebruiker. Toegegeven, een kleine honderd euro lijkt misschien duur voor een router zonder ingebouwde switch of wireless access point. Die moet je nog afzonderlijk aanschaffen. Kies je daarbij voor apparaten in dezelfde prijsklasse, dan spreek je al gauw over een totaalbedrag van €400 aan netwerkapparatuur. Maar dan heb je wel een netwerkinfrastructuur waarmee je – op het wireless access point na – minstens 10 jaar verder kan!

Hardware

Maar wat is er nou zo speciaal aan de EdgeRouter? Om te beginnen beschikt ie over behoorlijk stevige hardware met een dual-core 64-bits MIPS-processor van 500Mhz en 512MB RAM. De cpu bevat bovendien hardware-acceleratie voor packet processing, zodat hij de meeste taken erg gemakkelijk uitvoert. Goedkope consumentenrouters – vooral de modellen die je provider je geeft – durven al eens te crashen als ze te zwaar belast worden. Bij de EdgeRouter hoef je daarvoor zeker niet te vrezen. Qua opslagruimte is er 2GB onboard flash storage voorzien. Die is overigens niet op het moederbord gesoldeerd, maar aangesloten via een onboard usb-connector. Mocht de flash storage dus ooit defect geraken, dan vervang je die gemakkelijk zelf. De drie Ethernet-poorten bieden alledrie Gigabit-snelheid aan: één of twee van die poorten gebruik je naar keuze als WAN-poort(en) voor de verbinding met het internet. Heb je een internetaansluiting met een downloadsnelheid van meer dan 100Mbps? Voor de EdgeRouter is dat geen probleem, terwijl veel consumentenrouters die snelheden gewoon niet aankunnen. Verder beschikt de EdgeRouter nog over een seriële console, wat handig is als je de netwerkconfiguratie even volledig verknoeid hebt. Het geheel is passief gekoeld en dus muisstil.

Software

Ook qua software behoeft de EdgeRouter een woordje uitleg. EdgeOS is immers niet volledig from scratch door Ubiquiti ontwikkeld, maar gebaseerd op Vyatta. Vyatta bestaat al een tiental jaar en is specifiek ontworpen om router-, firewall- en VPN-functionaliteit te implementeren op standaard hardware. De community versie ervan(Vyatta Core) is echter een stille dood gestorven nadat de netwerkfabrikant Brocade Vyatta heeft overgenomen. Intussen bestaan er wel verschillende forks van Vyatta, zoals VyOS en ook EdgeOS die je in alle routers van Ubiquiti terugvindt. EdgeOS is overigens gebaseerd op de iets oudere 6.3-versie van Vyatta, terwijl VyOS gebaseerd is op 6.6. Beide forks worden onafhankelijk van elkaar doorontwikkeld. De commandline-commando’s zijn grotendeels identiek in de drie distributies. Documentatie van Vyatta Core of VyOS is dus vaak perfect te gebruiken in EdgeOS. Houd wel in het achterhoofd dat met de tijd de verschillen tussen VyOS en EdgeOS groter zullen worden en de documentatie dus minder uitwisselbaar. De lijst van EdgeOS’ ondersteunde features en technologieën is behoorlijk lang: VLANs, bridging, bonding, PPPoE, IPSec, OpenVPN, Dynamic DNS, verschillende types Quality-of-Service, enzovoorts. Ook IPv6-ondersteuning is uiteraard aanwezig.

Aan de slag

De EdgeRouter is geen apparaat dat je uitpakt, inplugt en meteen begint te gebruiken. Sterker nog: wie niet over een grondige theoretische kennis van netwerken beschikt, begint er beter niet aan! Hoewel de EdgeRouter over een tamelijk duidelijke webinterface beschikt, is die zeker niet dummy proof. Je moet immers al goed weten wat je wilt bereiken alvorens je in de GUI begint rond te struinen. Om de, toch enigszins complexe, configuratieprocedure ietwat toegankelijk te maken, heeft Ubiquiti enkele wizards voorzien. Die vind je na het inloggen terug onder het meest rechtse tabblad bovenaan. Voor thuisgebruik is de wizard genaamd “WAN-2LAN” de meest interessante. Hiermee zet je een netwerk op met één WAN-poort (voor de verbinding naar het internet, via je VDSL- of kabelmodem) en één of twee LAN-poorten. De “Load Balancing” wizard dient dan weer om twee WAN-verbindingen en één LAN-poort te configureren.

De WAN-2LAN-wizard is overigens enkel te gebruiken als de router nog niet verder is geconfigureerd. Heb je al andere instellingen gewijzigd, dan moet je de router eerst resetten naar de standaardwaarden. Dat is misschien niet erg flexibel, maar gezien de doelgroep van de EdgeRouter is dat nu ook weer niet zo’n probleem. Is dit de eerste keer dat je een router zoals de EdgeRouter configureert? Dan raden we je aan om die wizard te gebruiken, zodat je tenminste snel vertrokken bent. Nadien kan je dan rustig de tijd nemen om de instellingen in de verschillende tabbladen te controleren en de configuratie te doorgronden.

Documentatie

Heb je daarentegen genoeg tijd om de router volledig zelf te configureren, dan moet je dat zeker doen! Daarin slaag je allicht niet zonder hulp van de documentatie. Om te beginnen is er de eerder summiere gebruikershandleiding, te downloaden op http://bit.ly/1H16cev. Beschouw die als een soort help-functie van de webinterface en een korte introductie tot de commandline interface. Bestudeer zeker de “Typical Deployment Scenarios”, waarin voor twee specifieke setups uitgelegd wordt welke stappen je dient te volgen in de webinterface. Aan die voorbeelden (Service Provider Deployment en Corporate Deployment) zie je meteen de doelgroep van de EdgeRouter! Voor thuisgebruik volg je best de Corporate Deployment, maar laat je het DMZ-netwerk achterwege. De gebruikershandleiding beschrijft overigens niet altijd de laatste firmware-versie van EdgeOS. Zo was er van de Traffic Analysis- en QOS-tabbladen (nieuw in versie 1.7) nog geen spoor te bekennen toen wij de handleiding raadpleegden.

Verder bevat Ubiquiti’s website nog een heel aantal erg specifieke tutorials voor de EdgeRouter. Daarbij wordt zowel de webinterface gebruikt als de commandline (voor meer geavanceerde configuraties). Op het ogenblik van schrijven waren er maar liefst 72 tutorials beschikbaar in het onderdeel “EdgeMAX Configuration” op http://bit.ly/1MKRzhi. Het nadeel van die tutorials is dat ze vooral uitleggen hóe je iets bepaald configureert op de EdgeRouter, niet waaróm je dat precies zou willen. Wees dus zeker bereid om je kennis van netwerken -indien nodig- bij te spijkeren!

Dashboard

In de rest van dit artikel zullen we de meest gebruikte opties van EdgeOS kort uitleggen. Na het inloggen kom je terecht in EdgeOS’ dashboard (zie afbeelding 1). Links krijg je een overzicht van het aantal routes, firewall- en NAT-regels en DHCP-servers. Rechtsboven zie je in één oogopslag welke interfaces momenteel actief zijn en rechtsonder configureer je de verschillende interfaces. Wil je bijvoorbeeld verschillende VLAN’s configureren, dan moet je hier het IP-adres van de eth0-interface weghalen. Daarna definieer je extra virtuele interfaces (zoals eth0.1 en eth0.10 voor respectievelijk VLAN1 en VLAN10) en configureer je daarop IP-adressen. Ook voor je internetverbinding definieer je een extra interface, ditmaal van het type PPPoE. Bij de interface-configuratie vul je dan de login-gegevens van je provider in. In de statusbalk bovenaan zie je steeds welke fysieke interfaces actief zijn, samen met de huidige CPU-belasting, het geheugengebruik en de uptime. Via de statusbalk onderaan zie je dan weer eventuele foutmeldingen (onder Alerts) en kan je enkele systeeminstellingen wijzigen (onder System). Denk bijvoorbeeld aan de hostname en domain name, DNS-servers of de tijdzone. Dit is ook the place to be voor firmware updates of om een back-up te maken van je EdgeRouter configuratie. Zo’n back-up is erg handig om snel een werkende configuratie te herstellen nadat je iets te enthousiast gespeeld hebt met nieuwe instellingen.

 

 

Services

Een tweede belangrijk tabblad is “Services”. Hier configureer je om te beginnen één of meerdere DHCP-servers. (Vergeet niet dat je voor elke VLAN een aparte DHCP-server moet instellen!) De instellingen bevatten weinig verrassingen: subnet, eerste en laatste IP-adres dat mag uitgedeeld worden, default gateway en DNS-servers, enzovoorts (zie afbeelding 2). Onder Static MAC/IP Mapping reserveer je eventueel bepaalde IP-adressen voor bepaalde MAC-adressen. Stel je hier het adres van je router in als DNS-server, dan moet je uiteraard nog een DNS Forwarder activeren op de EdgeRouter. Daarvoor ga je naar het DNS-tabblad. Via de knop “Add Listen Interface” voeg je alle interfaces toe waarvoor je een DHCP-server had geconfigureerd (eth0 of de verschillende VLAN’s). Dit is een erg gemakkelijke manier om voor heel je netwerk de DNS-server te veranderen van die van jouw provider naar bijvoorbeeld die van Google. Zorg ervoor dat alle clients de DNS-instellingen via DHCP binnenhalen en je hoeft de DNS-servers slechts éénmaal te wijzigen, namelijk in EdgeOS’ System-tabblad. Handig toch?

 

## afb2.png: Een DHCP-server instellen in EdgeOS

 

Firewall/NAT

Dit onderdeel zorgt allicht voor de meeste verwarring onder nieuwe EdgeOS-gebruikers. Eerst en vooral is er het Port Forwarding-tabblad. Dat dient – net zoals je gewend bent van andere routers – om specifieke poorten op je publieke IP-adres te forwarden naar een bepaalde machine in je LAN. Maar eigenlijk laat je dit tabblad best links liggen. Je kan namelijk hetzelfde bereiken door een firewall- én een NAT-regel te definiëren in de twee volgende tabbladen. Zeker de eerste keer is dat misschien complexer, maar je hebt zo veel meer controle over de firewall-regels. In plaats van een port forwarding rule voeg je dan een firewall-regel toe in de WAN_IN-ruleset én maak je een Destination NAT-regel aan. Beginners zijn meestal geneigd om dat tweede te vergeten, maar zonder DNAT-regel werkt het écht niet. Handig zijn ook de Firewall- en NAT-groepen, waarmee je bijvoorbeeld verschillende subnetten of poorten groepeert onder een makkelijk herkenbare naam. Zo hoef je niet steeds poorten 80 en 443 te selecteren als je HTTP-verkeer wilt firewallen, maar kies je gewoon de groep “HTTP”.

Firewalling en NAT behoren tot de kerntaken van een router. De configuratie ervan is dan ook niet altijd even eenvoudig. We beperken ons hier tot een korte schets van de mogelijkheden. We onderscheiden twee types NAT of Network Address Translation: Source NAT (van jouw netwerk naar buiten) en Destination NAT (van buiten naar jouw netwerk). Standaard wordt al het verkeer van jouw netwerk naar buiten verscholen achter het publieke IP-adres van je router. EdgeOS geeft dit weer als “masquerade to pppoe0” in het overzicht van Source NAT-regels. Dit verander je beter niet, omdat je dan mogelijk niet meer correct aan het internet kan. Voor een tweede VLAN, bijvoorbeeld een gastnetwerk, is het soms wél nuttig om de instellingen te wijzigen. Zo zou je bijvoorbeeld uitsluitend het verkeer naar specifieke poorten kunnen masqueraden. Apparaten in dat VLAN hebben dan slechts beperkte internettoegang (bijvoorbeeld enkel HTTP-verkeer).

 

## afb3.png: Zonder Source NAT-regels kan je niet naar buiten

 

Firewall-regels

Bij het opstellen van firewall-regels wordt het pas echt complex: houd je hoofd er dus goed bij! Firewall-regels zijn steeds gegroepeerd in zogenaamde ‘rulesets’. Standaard bevat de EdgeRouter twee rulesets, WAN_IN en WAN_LOCAL genaamd. Die bevatten regels voor netwerkverkeer afkomstig van het internet (WAN) en bestemd voor jouw LAN (IN) of de router zelf (LOCAL). Beide rulesets zijn identiek:

– default action: drop

– accept established and related connections

– drop invalid connections

 

Kort gezegd worden alle nieuwe verbindingspogingen van buitenaf botweg tegengehouden. Enkel bestaande verbindingen, die vanuit jouw LAN zijn opgestart, worden toegelaten. Wil je externe toegang inschakelen voor bepaalde services in je LAN, dan voeg je in de WAN_IN-ruleset dus een nieuwe regel toe. Vergeet ook niet om de overeenkomende Destination NAT-regel aan te maken! Nieuwe rulesets hoef je enkel toe te voegen als je de toegang van specifieke VLAN’s naar het internet of je LAN wilt dichtschroeven of als je bijvoorbeeld ook uitgaand verkeerd wilt filteren. Bestaande rulesets pas je aan via Actions > Edit Ruleset. Daarnaast houdt EdgeOS ook bij hoeveel pakketjes door elke regel verwerkt zijn (tabblad “Stats”). Dat is erg handig om bij het testen van nieuwe regels te controleren of de juiste regels wel toegepast worden.

 

## afb4.png: Een firewall-regel om externe toegang tot een bepaalde service toe te staan

 

Geavanceerde mogelijkheden

Is het je al opgevallen dat EdgeOS’ webinterface minder functionaliteit bevat dan je op basis van de documentatie zou verwachten? De webinterface is immers nog volop in ontwikkeling en biedt niet alle onderliggende functionaliteit aan. In het “Config Tree”-tabblad zie je een hiërarchische weergave van alle beschikbare configuratieparameters. Een deel daarvan is via de andere tabbladen in te stellen, maar een deel nog niet. Geavanceerde configuraties moet je dus via het Config Tree-tabblad instellen, of via de commandlineinterface. De CLI is op verschillende manieren bereikbaar:

– via de knop “CLI” rechtsboven in de webinterface

– via Telnet, indien ingeschakeld in het System-tabblad

– via ssh, indien ingeschakeld in het System-tabblad

– via de seriële console

 

 

CLI

Ongeacht hoe je de CLI opent, na het inloggen kom je steeds in de vbash-shell terecht. Dat is een aangepaste versie van bash met extra commando’s om EdgeOS te configureren. Met ‘?’ krijg je een overzicht van beschikbare commando’s. De meeste commando’s vereisen ook extra parameters. Krijg je de foutmelding “Incomplete command”, voeg dan een ‘?’ toe aan het commando om de beschikbare parameters te zien. De meest interessante commando’s zijn “show” (om allerlei statusinformatie op te vragen) en “configure” (om de configuratie aan te passen). Binnen het configure-commando gebruik je ook “?” om de beschikbare opties te bekijken. Uiteraard raadpleeg je best de documentatie alvorens je hier instellingen probeert te wijzigen! Onthoud ook dat wijzigingen toegepast worden nadat je het “commit”-commando uitvoert. Bovendien pas je zo enkel de actieve configuratie aan: na een reboot van de router ben je je wijzigingen weer kwijt. Dat heeft ook één voordeel: mocht je de configuratie volledig verknoeien, dan hoef je de EdgeRouter enkel te herstarten om terug te keren naar de laatste werkbare configuratie. Wil je daarentegen de configuratie definitief aanpassen, gebruik dan het “save”-commando nadat je commit hebt uitgevoerd. En aangezien EdgeOS onderliggend gewoon op Debian gebaseerd is, kan je ook eenvoudig extra software installeren en configureren. Op die manier zijn de mogelijkheden van de EdgeRouter bijna onbeperkt.

 

## afb6.png: De EdgeRouter is ook volledig via de commandline te configureren

 

Leerrijk, maar tijdrovend

De EdgeRouter biedt uitstekende prestaties én uitgebreide configuratiemogelijkheden voor een aanvaardbare prijs. Maar vergis je niet: dit is hoegenaamd géén router voor beginnelingen! De webinterface is immers erg onvolledig. Je valt dus snel terug op de commandline en de documentatie daarvan is ook niet altijd even duidelijk. Zo worden sommige configuratie-aanpassingen al gauw een tijdrovende klus. Anderzijds is dit een erg goede methode om bij te leren over de interne werking van een router. Je moet dus behoorlijk wat tijd investeren in het opzetten van de EdgeRouter. Ben je bereid om dit te doen, dat is de EdgeRouter wat ons betreft een absolute aanrader!