Inleiding
De Zyxel NBG6716 router is een multiband router voor thuisgebruik. Hij biedt van
huis uit een aantal functies en is, binnen het gestelde budget, voldoende klaar
voor de toekomst. Toen ik echter voor de veiligheid probeerde een poort
forwarding met verschillende src
- en dst
nummers in te stellen, liep ik
tegen de grenzen van de originele firmware aan.
Zyxel bleek zijn grafische webinterface bovenop een (verouderde) versie van OpenWrt te hebben gebouwd. Ik zou dus ook via SSH in de configuratie kunnen gaan stoeien, maar ik wilde meer controle, meer zekerheid en veiligheid. Aldus ging ik op zoek naar een alternatieve firmware.
OpenWrt
Omdat de originele firmware op OpenWrt baseerde, leek mij dit open source project de meest voor de hand liggende plaats om met de zoektocht te beginnen. Er bleek inderdaad al een pagina gewijd te zijn aan dit model; vanaf dat moment wist ik dat het goed zat!
Update
In oktober 2017 werd bekend dat er een ontwerpfout in het WPA2-protocol zit, waardoor onversleutelde WLAN-communicatie af te luisteren is. Toen ik op zoek ging naar een update voor OpenWrt, ontdekte ik dat de firmware onder een nieuwe naam wordt doorontwikkeld: LEDE-project. Genoeg stof voor een nieuw artikel in mijn weblog :-)
Installatie
Van Zyxel naar OpenWRT
Op de genoemde pagina stond dat de installatie van de meest recente versie
OpenWrt niet meer dan drie commando's lang zou zijn. Eenmaal als root
via SSH
aangemeld, voerde ik de volgende statements uit:
cd /tmp;
wget "http://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/nand/openwrt-15.05.1-ar71xx-nand-nbg6716-squashfs-factory.bin";
mtd -r write "openwrt-15.05.1-ar71xx-nand-nbg6716-squashfs-factory.bin" /dev/mtd7;
De router startte opnieuw op en daarna was de webinterface op poort 80 actief.
Als eerste moest een nieuw wachtwoord voor het root
-account worden ingesteld.
Daarna kon de configuratie beginnen.
Van OpenWRT naar OpenWRT
Tijdens het stoeien met de nieuwe firmware kan het nodig zijn om met een schone
lei te beginnen. Download daartoe het SysUpgrade-bestand en upload dit op
de pagina System
→ Backup / Flash Firmware
. Je kunt eventueel bestaande
instellingen behouden (Keep settings
), maar dan is de lei minder schoon.
Basisinstellingen
Systeem
- SSH server activeren (
System
→Administration
) - Tijdzone instellen (
System
→System
)
Lokaal netwerk
- IP-adres instellen (
Network
→Interfaces
→LAN
) - DHCP reeks aanpassen (
Network
→Interfaces
→LAN
) - DHCP static leases toevoegen (
Network
→DHCP and DNS
)
Draadloos
- 2,4 GHz netwerk toevoegen (
Network
→Wifi
) - 5 GHz netwerk toevoegen (
Network
→Wifi
)
Modules
OpenWrt brengt in de basisvariant niet alle functionaliteit, toeters en bellen mee die voor een platform of apparaat beschikbaar zijn. In plaats daarvan kun je als beheerder specifieke onderdelen, zogenaamde modules, toevoegen. In dit geval wilde ik de router als mini-NAS gaan inzetten. Dat wil zeggen dat hij de opslagruimte van een aangesloten USB-stick via het netwerk beschikbaar maakt.
Om wat voor module dan ook te kunnen toevoegen, moet allereerst de lijst met
beschikbare modules worden geüpdate. Dit kan via System
→ Software
->
Update lists
. Mocht dat niet voldoende zijn, kan men nog altijd via SSH het
commando opkg update
uitvoeren.
Met dank aan de uitvoerige documentatie was de installatie van de gedeelde map niet al te complex. Ik voegde een aantal modules aan het systeem toe:
kmod-usb-core
: basisondersteuning voor USB apparatenkmod-usb-storage
: ondersteuning voor verwisselbare mediakmod-usb2
: ondersteuning voor USB2.0block-mount
: scripts voor het koppelen van apparaten en partitiessamba36-server
: server voor het delen van mappen en printersluci-app-samba
: uitbreiding van webinterface voor het beheren van Samba
Tot zover verliep alles volgens plan. Toen de aangesloten USB-stick niet werd herkend moest ik op zoek naar de oorzaak...
Bestandssysteem
Iets waar een gemiddelde computergebruiker niet bij stilstaat is het bestandssysteem waarmee zijn bestanden worden opgeslagen. In de Windows-wereld is dit meestal NTFS, bij Apple meestal HFS+, onder GNU/Linux vaak Ext4. Op USB-sticks die aan meerdere systemen moeten worden gekoppeld kiest men voor FAT, FAT32 of exFAT.
Bij het gebruik van de originele firmware was mijn USB-stick geformatteerd met
FAT32. Bij gebruik vanaf een GNU/Linux-systeem waren daardoor alle bestanden
als uitvoerbaar gemarkeerd (chmod 755
). Dit was voor mij de reden om de stick
nu opnieuw te formatteren; maar dan met Ext4. OpenWrt (een GNU/Linux variant)
kan daar zonder problemen mee overweg, als je de module kmod-fs-ext4
installeert.
(Gasten-) netwerk
Een thuisrouter is het centrale punt van het netwerk. Hij zorgt dat alle apparaten een IP-adres krijgen, stelt opslagruimte ter beschikking en deelt de internetverbinding. In dit geval wilde ik niet alleen een bedraad en draadloos eigen netwerk, maar ook een draadloos gastennetwerk.
Wederom dankzij de uitvoerige documentatie van OpenWrt was dit een relatief fluitje van een cent. Als eerste voeg je een nieuw draadloos netwerk (SSID) toe. Daarna pas je de instellingen zo aan, dat dit nieuwe (netwerk-) interface zich in een eigen firewall zone bevindt. De configuratie van die firewall luistert heel nauw; volg de instructies of zorg dat je weet wat je doet. Zo niet, dan kun je nog altijd vragen :-)
Probleem achteraf
Met de standaardinstellingen is een via Samba gedeelde map alleen door de
eigenaar beschrijfbaar (rechten: 0644
). In mijn geval wilde ik graag met
meerdere gebruikers (die zich in dezelfde groep bevinden) de bestanden kunnen
lezen en schrijven. Maar op dat moment kon de ene gebruiker wel een map aanmaken
en daar bestanden in bewerken. De ander kon echter die bestanden wel openen,
maar geen nieuwe bestanden toevoegen of de map verwijderen.
Ik moest op zoek naar een mogelijkheid om de Samba-cliënt gebruiker meer rechten
te geven. Ik stoeide met bestandsrechten op server en cliënt, umask
,
ACL
's… tot file-attributes aan toe. Uiteindelijk bleek het een
Samba-optie van de gedeelde map:
option create_mask '0774'
option dir_mask '0775'
Op zich is het best verwarrend, dat onder GNU/Linux de term mask
wordt
gebruikt als masker van bits dat met 777 wordt ge-AND
-t. Denk aan het commando
umask
, daar wordt met 002
en 777
uiteindelijke 775
gemaakt. Samba,
daarentegen, verwacht het uiteindelijke getal in één keer. Weird…
Conclusie
Het is verstandig om na het inrichten van de router, een backup te maken van
alle instellingen. Dit kan het eenvoudigst via de pagina System
→ Backup /
Flash Firmware
, Generate archive
. Dit bestand kun je later op dezelfde pagina
opnieuw uploaden om de configuratie te herstellen.
Na een aantal uren stoeien met alle mogelijke schermen van de LuCI webinterface en af en toe een paar commando's via SSH, is mijn router nu weer net als nieuw. Nee, hij is beter dan dat. De dagelijkse backup verloopt sneller en ik heb de volledige controle over mijn netwerken. Het was de moeite meer dan waard!