OpenWrt voor multi-zone-routing
Als je in plaats van een all-in-one-router afzonderlijke componenten gebruikt, win je niet alleen aan flexibiliteit, maar ook aan veiligheid. Je kunt er namelijk netwerkzones mee maken om cloudservers, IoT, gasten, NAS en kantoor-pc’s mee te isoleren. We
Toegegeven, helemaal zo simpel in te stellen als een standaard router van Asus of AVM is het netwerkvoorstel dat we hier doen niet, maar wel aanzienlijk flexibeler. OpenWrt als routerbesturingssysteem kan namelijk veel meer netwerkzones instellen dan enkel de twee zones – een intern en een voor gasten – die FritzOS biedt. We hebben de kernfuncties van de Fritzbox (dualstack-internettoegang, wifi, telefonie) daarvoor in afzonderlijke, deels optionele componenten opgedeeld. Voor het configureren heb je verder alleen
maar wat elementaire netwerkkennis nodig. We gaan er wel vanuit dat je OpenWrt 18.06.2 al op een mini-pc geïnstalleerd hebt – zie [1] – en het artikel hiervoor hebt gelezen. Het configureren gebeurt op een pc met een browser in het lokale netwerk van de router (bij de ZBox met OpenWrt is dat de linker RJ45-poort). Dat zal in het vervolg ook het interne netwerk blijven.
De compacte pc heeft ten opzichte van goedkopere voor OpenWrt geschikte breedbandrouters daarbij een groot voordeel: je hoeft daarop voor het aanmaken van eigen VLAN’s voor de netwerkzones geen trucs uit te halen met aanwezige switchchips. Want bij veel routers wijst de interne switch de ethernetpoorten van de router al met VLAN-tagging toe aan WAN of LAN. Daardoor wordt het instellen van meer zones een stuk onoverzichtelijker dan bij een mini-pc. En daarnaast heb je met zo’n mini-pc genoeg geheugen tot je beschikking, dus je hoeft niet op allerlei modules te beknibbelen.
De hier verder genoemde componenten zijn niet meer dan voorbeelden. Voor het configureren daarvan verwijzen we graag naar de documentatie van die apparaten zelf. Een switch met 28 poorten lijkt wat veel van het goede, maar is voor een beetje een complex netwerk zeker niet overdreven – tel als gemiddelde c’t-lezer het aantal poorten van al je kleine en grote switches in huis maar eens op! Een enkel wifibasisstation zal bij veel huizen en kantoren ook niet genoeg zijn.
INTERNET BINNENHALEN
Als eerste moet je de internetverbinding instellen, wat we hier schetsen aan de hand van een complex geval met een DSL-aansluiting met bijbehorende VLAN-tagging. Ga met de browser naar de interface van OpenWrt (http://openwrt.lan) en vervolgens naar ‘Network / Interfaces’ om de WAN-poort te bewerken. Klik op Edit en zet het protocol op PPPoE.
Als je internetaansluiting al geschikt is voor BNG9 (Broadband Network Gateway), dan geef je bij de toegangsgegevens wat dummywaarden op (user/pass). OpenWrt heeft namelijk altijd toegangsgegevens nodig om een verbinding op te bouwen. In andere gevallen moet je je toegangsgegevens weten om verbinding met internet te kunnen maken.
Schakel bij ‘Network / Interfaces’ op het tabblad WAN bij het tabblad ‘Physical Settings’ om naar ‘Custom Interface’ en stel daar ‘eth1.7’ in. Dat maakt het voor DSL benodigde VLAN 7 aan op de tweede ethernetinterface, de WAN-poort. Dan hoef je alleen nog maar ‘Save & Apply’ te doen.
Na een herstart van de WAN-interface maakt OpenWrt als het goed is verbinding met internet via een DSL-modem. Op het tabblad ‘General Settings’ bij ‘System / System’ kun je de tijdzone op ‘Europe/ Amsterdam’ zetten en andere NTP-servers instellen. Als eerste kun je de NTP-server van je provider instellen (bijvoorbeeld ntp.xs4all.nl) en als tweede een algemene NTP-server (pool.ntp.org). Als je wilt kun je er nog een groot aantal andere toevoegen door op
het plusteken te klikken. Door het activeren van ‘Provide NTP server’ kun je de OpenWrt-router als tijdbron voor je interne infrastructuur gebruiken – denk aan switches, accesspoints, VoIP-telefonie en pc’s en servers.
Op het tabblad ‘Language and Style’ kun je de taal instellen. Standaard is alleen de keuze ‘auto’ mogelijk, oftewel Engels. Bij het pakketbeheer (‘System / Software’) kun een andere taal voor de browserinterface installeren, maar omdat er geen Nederlandse vertaling beschikbaar is, kun je hem het beste gewoon op Engels laten staan.
Bij OpenWrt 18.06.2 is de dualstack-modus standaard geactiveerd. IPV6 is dan ook automatisch beschikbaar in je netwerk, maar wel ongebruikelijk met een /60-prefix. Dat kun je veranderen bij ‘Network / Interfaces’ en dan de Edit-button van de LANinterface – of door naar het LAN-tabblad te gaan. Bij ‘IPv6 assignment length maak je 64 van de 60.
MULTICAST-IPTV DOORGEVEN
Als je tv kijkt via Multicast-IPTV, moet je bij ‘System / Software’ het pakket igmpproxy en een editor naar voorkeur (joe, nano, vim, zile) installeren. Klik bij ‘Available packages’ op de letter I en zoek naar igmpproxy en klik op Install. Doe hetzelfde voor je editor. Omdat er voor igmpproxy nog geen browserconfiguratie is, moet je via SSH naar de router gaan (met Putty of ssh en maak dan verbinding met root@192.168.1.1). Bewerk vervolgens het bestand /etc/config/igmpproxy. Verander in het deel met ‘config phyint’ voor de WAN-interface de lijst van de toegestane adressen (list altnet) in 0.0.0.0/0 en sla het op.
Om ervoor te zorgen dat Multicast-IPTV na een volgende herstart in het hele LAN functioneert, moet je IGMP-snooping in de switch activeren. Meestal is die functie in zijn geheel in of uit te schakelen en dan voor de afzonderlijke poorten nog apart te activeren. Binnen OpenWrt doe je dat bij ‘Network / Switch’ globaal met ‘Enable VLAN functionality’ en apart voor alle switchpoorten die met de untagged VLAN ID 1 werken.
ZONES INRICHTEN
In de eerste nieuwe netwerkzone DMZ (De-Militarized Zone) komen de servers die hun diensten ook richting internet moeten aanbieden. Die worden hierna ook bereikbaar gemaakt voor het interne netwerk, maar ze kunnen zelf geen dataverkeer richting de interne zones initiëren.
De zones ontstaan in OpenWrt als extra LAN’s met eigen IPv6-prefixes. De eerste (VLAN 101) wordt de DMZ, de tweede (VLAN 102) is voor gasten, de derde (VLAN 103) is voor smartphones en IoT-apparaten bedoeld. Ze worden allemaal via de LAN-aansluiting van de ZBox als tagged VLAN’s naar de switch doorgeleid, waarna hun hosts alleen internet op kunnen. De gasten IoT-netwerken verschijnen net als het interne netwerk via de later aangesloten accesspoints als afzonderlijke wifinetwerken. De DMZ blijft beperkt tot het bekabelde netwerk.
Ga naar ‘Network / Interfaces’ en voeg daar na elkaar drie nieuwe interfaces toe via ‘Add new interface’ met de namen DMZ, GAST en IOT. Bij het drop-downmenu ‘Cover the following interfaces’ geef je bij ‘Custom Interface’ respectievelijk eth0.101 tot
eth0.103 op, waarmee de drie nieuwe VLAN’s worden aangemaakt. Bij het overzicht van de interfaces stel je voor de DMZ-interface via de Edit-knop bij het IPv4-adres 192.168.101.1 in met een /24-netwerkmasker (255.255.255.0). De velden voor ‘IPv4 gateway’ en ‘IPv4 broadcast’ kun je daarbij gewoon leeg laten. Daarna doe je hetzelfde voor de GASTen IOS-interface met respectievelijk het IP-adres 192.168.102.1 en 192.168.103.1.
Daarbij configureer je IPv6 met de ‘assignment length’ 64 en als ‘assignment hint ’ 101/102/103, wat zorgt voor een interne adresseerbaarheid via verschillende ULA-prefixes (Unique Local Addresses). Activeer voor elke zone de DHCP-server met ‘Setup DHCP Server’. Zet op het tabblad ‘IPv6 Settings’ dan de ‘Router Advertisement-Service’ en de DHCPv6-service op ‘server mode’. Maak voor elk netwerk op het tabblad ‘Firewall Settings’ een nieuwe firewallzone met dezelfde naam als de interface (DMZ/GAST/IOT). Als je dat allemaal gedaan hebt, kun je klikken op ‘Save & Apply’.
Om ervoor te zorgen dat hosts in de zones toegang tot internet krijgen, is er nog een bijpassende masquerading en forwarding nodig. Bij ‘Network / Firewall’ activeer je bij de drie nieuwe zones het forwarden door bij het drop-downmenu Forward van reject op accept te zetten. Dat kan meteen voor alle drie. Vervolgens moet je de zones apart nog even bewerken via de Edit-knop. Selecteer bij ‘Inter-Zone forwarding’ de optie wan bij ‘Allow forward to destination zones’.
De zones zijn door de firewall onderling van elkaar gescheiden. Dat leidt tot de grappige situatie dat hosts wel op IPv6-pings van buitenaf antwoorden, maar elkaar niet door de zonegrenzen heen kunnen bereiken. Dat zullen we voor de DMZ later nog aanpassen.
Om een interne server via IPv4 van buitenaf bereikbaar te maken, maak je een port-forward aan bij ‘Network / Firewall’ op het tabblad ‘Port Forwards’. De externe zone, oftewel het internet, heet daarbij ‘wan’ en het interne netwerk doorgaans ‘lan’. Met de drop-downmenu’s kun je daar echter ook andere zones selecteren. Nadat je de velden goed hebt ingevuld, moet je eerst op ‘Add’ klikken en dan pas op ‘Save’ of ‘Save & Apply’. Als je via DS-Lite op kabelinternet bent aangesloten, kun je je die stap besparen.
DIENSTEN VRIJGEVEN
Met de standaardinstellingen blokkeert de firewall van OpenWrt alle binnenkomende pakketten, ook die van opengezette poorten. Dat is bij de ‘General Settings’ van de firewall onderaan bij de zones aan te passen: zet bij ‘wan’ de Input-regel op accept in plaats van reject.
De firewall van OpenWrt geeft IPv6-pings wel door (ICMPv6-Echo-Requests), maar een eenvoudige configuratie voor het doorsturen van vrijgegeven poorten naar bepaalde hosts is er niet. Het vrijgeven voor IPv6 kan op dit moment dan ook alleen voor de gehele zone – wat alleen zinvol is voor de DMZ.
Om dat te doen, maak je bij ‘Network / Firewall’ op het tabblad ‘Port Forwards’ een nieuwe port-forward die loopt van de wan-zone (internet) naar de DMZ als interne zone. Geef er meteen een goede beschrijvende naam aan. Na het klikken op ‘Add’ en ‘Edit’ kun je de regels beperken tot de IPv6-adresfamilie en meteen ook het protocoltype wijzigen als dat moet (TCP en/of UDP) en een doelpoort opgeven. De IPv6-firewall-regels worden door OpenWrt bij een dynamische IPv6-prefix automatisch meteen aangepast als die door een nieuwe verbinding met internet wijzigt.
Na ‘Save & Apply’ laat OpenWrt dan al het IPv6-verkeer voor die poort naar de DMZ door. Voor poort 80 worden op die manier bijvoorbeeld alle hosts in die zone via HTTP bereikbaar. Let er dus goed op dat je die hosts met behulp van hun eigen firewalls goed afsluit.
De servers in de DMZ zijn op dat moment wel vanuit internet bereikbaar, maar door de firewall van OpenWrt nog niet vanuit het interne netwerk. Om dat voor elkaar te krijgen, voeg je bij de firewall in de zone ‘lan’ als extra doelzone DMZ toe. Dat doe je door via de Edit-knop van de DMZ-zone onderaan bij ‘Allow forward from source zones’ ‘lan’ te selecteren. Daardoor kunnen hosts in het LAN ook bij hosts in de DMZ.
Dat geldt dan voor IPv4 en IPv6, en bij die laatste zowel voor de globale IPv6-adressen als de door OpenWrt automatisch binnen de zones toebedeelde ULA’s.
BETERE NAME-RESOLUTION
OpenWrt doet de name-resolution met behulp van de DNS-servers die de provider bij het opbouwen van de internetverbinding aangeeft. Als je er meer wilt gebruiken, kun je een lijst aanmaken bij ‘Network / DHCP and DNS’ door op het plusteken bij ‘DNS forwardings’ te klikken. De gecombineerde DHCP/ DNS-server dnsmasq gebruikt die dan ook.
Omdat er bij OpenWrt geen geïntegreerde DynDNS-dienst voor IPv6-hosts inzit, moeten de servers in de DMZ er zelf voor zorgen dat ze gevonden worden. Let er bij het uitkiezen van een dienst op dat die IPv6 ondersteunt en update-clients voor de gangbare besturingssystemen biedt.
Daar zijn opties genoeg voor, zoals dynv6.com, desec.io en duaidns.net. Vaak volstaat het echter als slechts één server de IPv6-prefix actualiseert. De andere definieer je dan bij de DynDNS-dienst alleen met hun constante host-deel (IID, de laatste 64 bits van het IPv6-adres).
Om ervoor te zorgen dat OpenWrt een host via DHCP steeds hetzelfde IPv4-adres toekent, maak je op het tabblad ‘Resolv and Hosts Files’ een statische toewijzing aan. Als de door DHCP vastgestelde interne hostnaam verschilt van de openbare hostnaam, kun je dat hier rechttrekken door de juiste naam in te vullen. Dan antwoordt de server intern op ‘cloud’ net zo goed als op ‘cloud.dyn.example.com’. Dat het verkeer dan over verschillende adressen loopt – soms het private (192.168.101.x) en dan weer het openbare (bijvoorbeeld 87.122.250.82 dan wel 001:16b8:…) – is daarbij niet erg, want OpenWrt stuurt de pakketten intern tussen de zones door.
WIFI OPZETTEN
Als wifi-accesspoint zijn alle apparaten geschikt die met behulp van multi-SSID meerdere logische radiocellen kunnen opzetten en die met VLAN-tagging gescheiden in het netwerk doorsturen. Dat zijn typische functies voor de wat meer zakelijke accesspoints. We hebben bijvoorbeeld de DrayTek VigorAP 903 gebruikt. Die werkt in overeenstemming met WiFi 5 met twee MIMO-streams op beide wifibanden tegelijkertijd (IEEE 802.11n-300, 11ac-867) en biedt per band vier SSID’s.
De accesspoints worden allemaal met een vaste netwerkkabel op een trunk-poort van de switch aangesloten, zodat ze vanuit het interne netwerk bereikbaar zijn om ze te kunnen configureren. Bovendien zijn ze via de LAN-kabel van stroom te voorzien met behulp van PoE (Power over Ethernet). De eerste SSID dient als standaardwifi, dat zonder VLAN naar het interne netwerk leidt. Daar komen twee andere SSID’s bij voor de VLAN’s 102 (GAST) en 103 (IOT). Activeer bij het gastnetwerk de ‘Client Isolation’, zodat gasten elkaar niet kunnen zien en elkaar ook niet met malware kunnen infecteren.
VOIP-TELEFONIE
Als je een vaste telefoonaansluiting nodig hebt, kun je daar een goedkoop VoIP-DECT-systeem voor gebruiken. De hier bijvoorbeeld gebruikte Gigaset C430A heeft een van ethernet voorzien basisstation, dat in de DMZ komt. Het basisstation kan tot zes SIP-accounts (telefoonnummers) bedienen met maximaal twee gesprekken tegelijk.
Het configureren kan het makkelijkst met een browser, maar je kunt de SIP-toegangsgegevens (ID en wachtwoord) ook op het mobiele toestel invoeren. We konden zonder problemen vier verschillende mobiele onderdelen installeren: de meegeleverde C430, een oudere Gigaset A540 Cat en een Fritz-Fon C4 en C5. Je kunt maximaal zes mobiele componenten verbinden.
TOT SLOT
Nadat de router geheel volgens je eigen wensen draait, maak je een back-up van de configuratie bij ‘System / Backup / Flash Firmware’. Doe hetzelfde voor de accesspoints. Herhaal die stap na alle wijzigingen, want ooit zal ook de beste hardware een keer uitvallen.